我如何一遍又一遍地重复此功能,但使用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)
答案 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