程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Python:如何用 while 循环替换 for 循环? (无负值)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Python:如何用 while 循环替换 for 循环? (无负值)?

开发过程中遇到Python:如何用 while 循环替换 for 循环? (无负值)的问题如何解决?下面主要结合日常开发的经验,给出你关于Python:如何用 while 循环替换 for 循环? (无负值)的解决方法建议,希望对你解决Python:如何用 while 循环替换 for 循环? (无负值)有所启发或帮助;

在定义炮弹函数的这条轨迹时,我希望循环在 y 的负值处停止。即炮弹一旦落地就不应继续移动。

我尝试使用 while >= 0,但 y 点是一个列表,我不知道该怎么做。 有什么帮助吗?

def trajectory(v_0=1,mass=1,theta=np.pi/2,t_0=0,t_f=2,n=100):
"""
:param v_0: initial veLocity,in meters per second
:param mass: Mass of the object in kg,set to 1kg as default
:param theta: Angle of the trajectory's shot,set to pi/2 as default
:param t_0: initial time,in seconds,default as 0
:param t_f: final time,default as 2
:param n: Number of points
:return: array with x and y coordinates of the trajectory
"""
h = (t_f - t_0)/n
t_points = np.arange(t_0,t_f,h)
x_points = []
y_points = []
r = np.array([0,v_0 * np.cos(theta),v_0 * np.sin(theta)],float)

for t in t_points:
    x_points.append(r[0])
    y_points.append(r[2])
    k1 = h * F(r,t,mass)
    k2 = h * F(r + 0.5 * k1,t + 0.5 * h,mass)
    k3 = h * F(r + 0.5 * k2,mass)
    k4 = h * F(r + k3,t + h,mass)
    r += (k1 + 2 * k2 + 2 * k3 + k4) / 6
return np.array(x_points,float),np.array(y_points,float)

在绘制轨迹图时,我得到一个包含 y 负值的图,我希望首先防止计算该值,以免影响代码的性能。

解决方法

您不需要转换为 while 循环。我能想到的最简单的方法是在 for 循环中放置一个退出条件:

for t in t_points:
    if r[2] < 0:
        break
    ...

y 位置小于零时,这将退出循环。您可以考虑使条件 r[2] < 0 and r[3] < 0,以便如果您有一个从地下开始的条件,它会在下降并与地面碰撞之前向上移动。

如果你真的很喜欢 while 循环,你可以创建一个迭代器变量,然后用它来迭代 t_points

iterator_variable = 0
while r[2] < 0 and iterator_variable < len(t_points):
    t = t_points[iterator_variable]
    ...
return np.array(x_points,float),np.array(y_points,float)

虽然我不知道您的函数 F() 是做什么的,但我认为不定义 nht_points 可能更容易。您将从起点开始,然后计算每个下一个点,直到您落地为止。此策略非常适合 while 循环。

while r[2] > 0:
    //calculate next position and velocity
    //add that position to the list of x_points and y_points

代替 n 作为函数的输入,它决定了您计算的点数,您可以将其设为点密度度量,或最大点数。

大佬总结

以上是大佬教程为你收集整理的Python:如何用 while 循环替换 for 循环? (无负值)全部内容,希望文章能够帮你解决Python:如何用 while 循环替换 for 循环? (无负值)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: