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
對不起,評論用西班牙語是我的母語。如果不理解,就會發生變化。但我認爲這個錯誤是被指出的。
請幫幫我。
檢查製表符VS空格。如果你混合使用,你可能會遇到這個錯誤。 – 2014-12-01 22:59:27
你在這裏的縮進看起來很好。但顯然你的實際代碼混合了製表符和空格。你應該仔細閱讀每一行代碼並重新添加行(刪除並添加縮進),看看是否能解決這個問題。 – 2014-12-01 23:01:21
(下次)在提交問題前測試代碼。 – 2014-12-01 23:02:04