2014-12-01 84 views
0

我試圖模擬落在一個維度的兩個球的系統。if,elif,else error,python

但是,當模仿我的程序,我得到以下錯誤:

 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 

對不起,評論用西班牙語是我的母語。如果不理解,就會發生變化。但我認爲這個錯誤是被指出的。

請幫幫我。

+3

檢查製表符VS空格。如果你混合使用,你可能會遇到這個錯誤。 – 2014-12-01 22:59:27

+0

你在這裏的縮進看起來很好。但顯然你的實際代碼混合了製表符和空格。你應該仔細閱讀每一行代碼並重新添加行(刪除並添加縮進),看看是否能解決這個問題。 – 2014-12-01 23:01:21

+0

(下次)在提交問題前測試代碼。 – 2014-12-01 23:02:04

回答

1

python -t my_script.py 

,你會看到你的問題來看,這我覺得