如何使用更新的值多次重复执行功能?

时间:2019-09-06 07:57:49

标签: python

我如何一遍又一遍地重复此功能,但使用v_2作为更新的vi,例如如果我的v_2 = 3,那么我想在新的vi为3的情况下重复此代码,并计算一个新的v_2,并重复此操作直到达到特定时间t_max。

我需要结果以列表形式出现。

import math

def trackflow(f_in, f_out, r, H, h, t_max, t_open):


    t = 0.1
    vi = 0
    hi = 0
    ti = 0


    if ti == t_open:
        v_2 = vi + (f_in - f_out)*t
        h_2 = hi + ((f_in - f_out)*t)/(math.pi*r**2)

        print(v_2)
        print(h_2)
        print(ti + 0.1)


    else:
        f_out = 0 
        v_2 = vi + (f_in - f_out)*t
        h_2 = hi + ((f_in - f_out)*t)/(math.pi*r**2)

        print(v_2)
        print(h_2)
        print(ti + 0.1)

2 个答案:

答案 0 :(得分:0)

将if else语句放入for循环中,它将保留更新的变量,并将t_max放在方括号中。

示例代码:

view.setOnTouchListener(new View.OnTouchListener() {
       @Override
       public boolean onTouch(View view, MotionEvent motionEvent) {
           Matrix inverse = new Matrix();
           imageView.getImageMatrix().invert(inverse);
           float[] touchPoint = new float[] {motionEvent.getX(), motionEvent.getY()};
           inverse.mapPoints(touchPoint);
          int  xCoord = Integer.valueOf((int)touchPoint[0]);
          int  yCoord = Integer.valueOf((int)touchPoint[1]);
           Log.v("coordinate",xCoord +" - "+yCoord );
           return true;
       }
   });

编辑: 为了与我在评论中看到的一致,您可以使用while循环而不是for循环。我不是100%知道等于位在哪里,而是将其放在我认为的位置,这取决于它是否在False语句中是一会儿还是一会儿以及何时等于它。 / p>

答案 1 :(得分:0)

有很多方法可以做到这一点。您可以在函数内部使用循环将其重复给定的次数:

import math
def trackflow(f_in, f_out, r, H, h, t_max, t_open, n_repeats):
    t = 0.1
    vi = 0
    hi = 0
    ti = 0

    for i in range(n_repeats):
        if ti == t_open:
            v_2 = vi + (f_in - f_out)*t
            h_2 = hi + ((f_in - f_out)*t)/(math.pi*r**2)

            print(v_2)
            print(h_2)
            print(ti + 0.1)


        else:
            f_out = 0 
            v_2 = vi + (f_in - f_out)*t
            h_2 = hi + ((f_in - f_out)*t)/(math.pi*r**2)

            print(v_2)
            print(h_2)
            print(ti + 0.1)
        vi = v_2

或者您也可以将vi用作函数的输入,并在函数末尾使用return(v_2)将v_2设置为输出,并构建一个重复该函数的循环:

vi = 0
for i in range(100):
    vnew = trackflow(f_in, f_out, r, H, h, t_max, t_open, vi)
    vi = vnew