空気抵抗のある発射体の軌道を作るためにmain関数を使用しようとしています。問題は、メイン関数を使用しているときにエラーが発生していますが、main関数を使用していないときには、何が間違っていたのでしょうか?メイン関数Python 2.7.2を使用した後にエラーが発生しました
def main():
global sy,sx,ax,ay,vx,vy
、その後、残りを:あなたはグローバル変数を使用して主張して明示的に明示的にグローバルとしてそれらを定義する必要が関数にそれらを送信したくない場合は
v=float(input("initial velocity: "))
theta=float(input("Angle from the horizontal of initial velocity: "))
B=float(input("normalised drag coefficient: "))
t=float(input("the step interval in seconds: "))
vx = v * math.cos(theta*math.pi/180.0)
print(str(vx))
vy = v * math.sin(theta*math.pi/180.0)
sx = 0
sy = 0
t0 = 0
ax = 0
ay = 0
g= 9.81
def AX(ax):
ax= -B*v*vx
return ax
def AY(ay):
ay= -(B*v*vy)-g
return ay
def VX(vx):
vx=vx+ax*t
return vx
def VY(vy):
vy=vy+ay*t
return vy
def SX(sx):
sx= sx + vx*t
return sx
def SY(sy):
sy= sy + vy*t
return sy
Xdisplacement=[]
Ydisplacement=[]
def main():
while sy>=0 :
Xdisplacement.append(float(sx))
Ydisplacement.append(float(sy))
sx=SX(sx)
sy=SY(sy)
ax=AX(ax)
ay=AY(ay)
vx=VX(vx)
vy=VY(vy)
v= ((vx**2.0)+(vy**2.0))**(1.0/2.0)
plt.plot(Xdisplacement,Ydisplacement)
plt.title("trajectory")
plt.xlabel("x")
plt.ylabel("y")
plt.show()
main()
なぜコードを 'vx = ...'行に字下げし始めましたか? – Barmar
どのようなエラーがありましたか? – Barmar
すみません。コードをコピーして投稿すると問題になりました。それについて言えば、私がmain()を置かなければ、すべて正常に動作します。しかし、このようにmain()を置くと、 "UnboundLocalError:割り当て前にローカル変数 'sy'が参照されている" – Nai