获取“ SyntaxError:无效的语法”,但不知道为什么
File "cursor4.py", line 138
global D=-1*((self.meteor_x_coordlist[i]-self.meteor_x_coordlist[i+1])+(self.meteor_y_coordlist[i]-self.meteor_y_coordlist[i+1]))
^
SyntaxError: invalid syntax
代码如下:
for i in range(8):
if ((self.meteor_x_coordlist[i]-self.meteor_x_coordlist[i+1])+(self.meteor_y_coordlist[i]-self.meteor_y_coordlist[i+1])) < 0:
global D=-1*((self.meteor_x_coordlist[i]-self.meteor_x_coordlist[i+1])+(self.meteor_y_coordlist[i]-self.meteor_y_coordlist[i+1]))
if D**0.5<(self.sizelist[i]/2)+(self.sizelist[i+1]/2):
#print "-----------------------"
self.meteorlist.remove(self.meteorlist[i])
if self.meteorlist == []:
pass #psu
答案 0 :(得分:1)
我认为,是因为您在这里使用global
很奇怪。看着this tutorial,也许是这样的:
global D
for i in range(8):
test = ((self.meteor_x_coordlist[i]-self.meteor_x_coordlist[i+1])+(self.meteor_y_coordlist[i]-self.meteor_y_coordlist[i+1]))
if test < 0:
D=-1*test
if D**0.5<(self.sizelist[i]/2)+(self.sizelist[i+1]/2):
#print "-----------------------"
self.meteorlist.remove(self.meteorlist[i])
if self.meteorlist == []:
pass #psu
答案 1 :(得分:0)
您不能将global
语句与赋值结合使用。如果两者都需要,请将它们放在单独的行上:
global D
D = whatever
但是首先使用全局变量通常不是一个好主意。通常,您可以通过在面向对象的代码中使用局部变量或实例变量来获得。使用实例变量比使用全局变量要好得多,因为您可以同时使用多个对象,而不必使用相同的变量名将它们全部绊倒。
如果您刚刚添加了global
行以解决D
的问题,则可能是因为您只是有条件地分配了它,而下一个if
测试期望它总是有一个价值。在这种情况下,您可能想保留D
一个局部变量,只需在开始循环之前对其进行初始化:
D = initial_value
for i in range(8):
if something:
D = new_value
if some_condition(D): # this line requires D to always have a value!
... # do stuff