【问题标题】:Getting "SyntaxError: Invalid Syntax", but don't know why得到“SyntaxError: Invalid Syntax”,但不知道为什么
【发布时间】:2019-09-20 06:22:20
【问题描述】:

得到“SyntaxError: Invalid Syntax”,但不知道为什么

  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

【问题讨论】:

  • 您不能在作业中使用 global 关键字。

标签: python python-2.7 pygame


【解决方案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 

【讨论】:

    【解决方案2】:

    您不能将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
    

    【讨论】:

      猜你喜欢
      • 2019-07-29
      • 2022-12-12
      • 1970-01-01
      • 2021-07-27
      • 1970-01-01
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 2022-07-02
      相关资源
      最近更新 更多