2017-05-01 13 views
-1

私はPythonには初めてです。以下のコードでは、私は3つの変数TGt_x,TGt_y、およびTGt_zを宣言しました。 compute関数でこれらの変数を使用しようとすると、Undefined reference errorが表示されます。なぜこうなった?Pythonのグローバル変数と混同しました

import sys 
import math 
from PyQt5 import QtGui,QtCore 
from PyQt5.QtCore import pyqtSlot,pyqtSignal 
from PyQt5.QtGui import QGuiApplication 

app = QGuiApplication(sys.argv) 
Range = 2000.0 
Brg = 330.0 
Crs = 120.0 
Elevation = 50.0 
V = 40.0 

TGt_x = Range * math.cos(Elevation) * math.sin(Brg) 
TGt_y = Range * math.cos(Elevation) * math.cos(Brg) 
TGt_z = Range * math.sin(Elevation) 

Vx = V * math.sin(Crs) 
Vy = V * math.cos(Crs) 
Vz = 0.0 


def compute(): 
    TGt_z = TGt_z + Vz 
    TGt_x = TGt_x + Vx 
    TGt_y = TGt_y + Vy 
    print("TGTx=============================",TGt_x) 
    print("TGTy=============================", TGt_y) 
    print("TGTz=============================",TGt_z) 
    Range = math.sqrt(pow(TGt_x, 2) + pow(TGt_y, 2) + pow(TGt_z, 2)) 
    print("Range=============================",Range,"\n") 

timer = QtCore.QTimer() 
timer.timeout.connect(compute) 
timer.setInterval(1000) 
timer.start() 
sys.exit(app.exec_())* 
+0

未定義の参照はどこで起こるのですか? – numbermaniac

+0

TGt_z = TGt_z + Vz、 TGt_x = TGt_x + Vx、TGt_y = TGt_y + Vy、これらの3つのライン全て –

答えて

0

このようなグローバル変数は使用しません。あなたはcompute関数内globalステートメントを呼び出す必要が

def compute(): 
    global TGt_z,TGt_x,TGt_y 
    //your code 
+0

ありがとう、それは –

+0

助けてくれました。答えを受け入れてください:) –

0

:にあなたのコードを変更し

def compute(): 
    global TGt_z, TGt_x, TGt_y #here 
    TGt_z = TGt_z + Vz 
    TGt_x = TGt_x + Vx 
    TGt_y = TGt_y + Vy 
    print("TGTx=============================",TGt_x) 
    print("TGTy=============================", TGt_y) 
    print("TGTz=============================",TGt_z) 
    Range = math.sqrt(pow(TGt_x, 2) + pow(TGt_y, 2) + pow(TGt_z, 2)) 
    print("Range=============================",Range,"\n") 

小さな例:エラーメッセージが言うんライン

>>> x = 5 
>>> def compute(): 
...  x+=5 
... 
>>> compute() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<stdin>", line 2, in compute 
UnboundLocalError: local variable 'x' referenced before assignment 
>>> def compute(): 
...  global x 
...  x+=5 
... 
>>> compute() 
>>> x 
10 
>>> 
+1

ありがとう、それは働いた –

関連する問題