Python 如何设置终止追加的条件?

Python 如何设置终止追加的条件?,python,projectile,Python,Projectile,我正在编写一段代码,用Python绘制不同θ值的几个投射轨迹 theta = np.arange(np.pi/6, np.pi/3) t = np.linspace(0,2,num=100) while y0>=0: for i in theta: x = [] y = [] for k in t: x0= v_0*np.cos(i)*k y0= v_0*np.sin(i

我正在编写一段代码,用Python绘制不同θ值的几个投射轨迹

theta = np.arange(np.pi/6, np.pi/3)
t = np.linspace(0,2,num=100)
while y0>=0:
    for i in theta:
        x = []
        y = []
        for k in t:
                x0= v_0*np.cos(i)*k
                y0= v_0*np.sin(i)*k - 1/2*g*(k**2)
                x.append(x0)
                x.append(y0)

在形成阵列并为射弹添加必要的条件之后,我使用了while循环将终止指令放入程序中。我想,我错过了一个关键点。谢谢

我认为您希望终止条件位于最内部的循环中。请参见下文,其中我还定义了两个缺失的常量(
v_0
g
),并将一个
x
修复为
y
。还打印结果

theta = np.arange(np.pi/6, np.pi/3)
t = np.linspace(0,2,num=100)
v_0 = 1
g=10

for i in theta:
    x = []
    y = []
    for k in t:
        x0= v_0*np.cos(i)*k
        y0= v_0*np.sin(i)*k - 1/2*g*(k**2)
        x.append(x0)
        y.append(y0)
        if y0 < 0: # the main change here. Stop looping when y_0 below zero
            break
    print(f'theta:{i}')
    print(f'x:{x}')    
    print(f'y:{y}')
绘制它(y对x),看起来很合理


还值得注意的是,您对
theta=np.arange(np.pi/6,np.pi/3)
的定义看起来很奇怪,您想在这里实现什么?

我试图为程序必须运行创建一个θ值范围。因此,第一个for循环在一个连续的时间间隔内迭代θ值(由第二个for循环完成)。@Manu那么您也应该包括一个步骤,否则步骤=1,这不太可能是您想要的。比如说
theta=np.arange(np.pi/6,np.pi/3,np.pi/24)
噢,谢谢,我想我明白了。但问题是,为什么我们只得到一个图形,而不是三个θ值的三条轨迹?您应该将绘图命令放在
print(…)
语句所在的位置,自然具有相同的偏移量,这将对每个θ值执行
theta:0.5235987755982988
x:[0.0, 0.017495462702715934, 0.03499092540543187, 0.052486388108147805, 0.06998185081086374, 0.08747731351357968]
y:[0.0, 0.008060401999795939, 0.012039587797163551, 0.011937557392102841, 0.007754310784613805, -0.0005101520253035577]