if,elif,else error,python

时间:2014-12-01 22:55:49

标签: python physics

我试图模拟两个球在一个维度上的系统。

但是在模拟我的程序时,我收到以下错误:

     elif (bola1.pos.z+0.5) >= (bola2.pos.z-0.5):
                                                ^
     IndentationError: unindent does not match any outer indentation level

不知道为什么我得到这个错误,我无法修复我的代码如下:

#En est programa se realiza la amimacion de una colision elastica
#entre dos esferas moviendose sobre el mismo eje
#para particulas de diferente masa pero con direcciones opuestas
#el usuario puede elegir que masa darles a las particulas y su radio

from visual import *
scene=display()
scene.title ='Boucing Ball'
m1=input('Dime que masa deseas en tu particula 1:   ')
m2=input('Dime que masa deseas en tu particula 2:   ')
v1==input('Dime que velocidad inicial deseas en tu particula 1:   ')
v2==input('Dime que velocidad inicial deseas en tu particula 2:   ')
x1==input('Dime que posicion inicial deseas en tu particula 1:   ')
x2==input('Dime que posicion inicial deseas en tu particula 2:   ')

bola1=sphere(pos=(0,0,x1), radius=0.5, color=color.yellow)
bola2=sphere(pos=(0,0,x2), radius=0.5, color=color.red)

bola1.vel=vector(0,0,v1)  #Se define la velocidad de las esferas
bola2.vel=vector(0,0,v2)

dt=0.0003
t=0.0
g=9.8

while (bola2.pos.z)>=0.0:       #Este while hace que tome varios snapshots
    rate(20)  # Mas lento
    if (bola1.pos.z+0.5)<=0.0:
        bola1.vel.z=-bola1.vel.z
        ap1=bola1.vel.z
        ap2=bola2.vel.z
        bola1.vel.z=bola1.vel.z-(g*t)
        bola2.vel.z=bola2.vel.z-(g*t)
        bola1.pos.z=bola1.pos.z+(((bola1.vel.z-ap1)/2.0)*dt)
        bola2.pos.z=bola2.pos.z+(((bola2.vel.z-ap2)/2.0)*dt)
    elif (bola1.pos.z+0.5) >= (bola2.pos.z-0.5):
        ap1=bola1.vel.z
        ap2=bola2.vel.z
        bola1.vel.z=(((m1-m2)/(m1+m2))*ap1) + (((2.0*m2)/(m1+m2))*ap2)
        bola2.vel.z=(((2.0*m1)/(m1+m2))*ap1) + (((m2-m1)/(m1+m2))*ap2)
        ap1=bola1.vel.z
        ap2=bola2.vel.z
        bola1.vel.z=bola1.vel.z-(g*t)
        bola2.vel.z=bola2.vel.z-(g*t)
        bola1.pos.z=bola1.pos.z+(((bola1.vel.z-ap1)/2.0)*dt)
        bola2.pos.z=bola2.pos.z+(((bola2.vel.z-ap2)/2.0)*dt)
    else:
        ap1=bola1.vel.z
        ap2=bola2.vel.z
        bola1.vel.z=bola1.vel.z-(g*t)
        bola2.vel.z=bola2.vel.z-(g*t)
        bola1.pos.z=bola1.pos.z+(((bola1.vel.z-ap1)/2.0)*dt)
        bola2.pos.z=bola2.pos.z+(((bola2.vel.z-ap2)/2.0)*dt)
    t=t+dt

抱歉,西班牙语的评论是我的母语。如果不了解,改变。但我认为错误是指出来的。

请帮帮我。

1 个答案:

答案 0 :(得分:1)

运行它
python -t my_script.py

你会发现我认为你的问题