Why does it say (in python) “UnboundLocalError: local variable 'yes' referenced before assignment” when I already defined the variable?
本问题已经有最佳答案,请猛点这里访问。
这是我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | from random import randint ant1 = 1 ant2 = 2 ant3 = 3 ant4 = 4 cntNum = 0 no = 0 yes = 0 def antMove(antNum): randomNum = randint(0,3) if randomNum == antNum: yes += 1 else: print("No") while cntNum < 20: antMove(ant1) antMove(ant2) antMove(ant3) antMove(ant4) cntNum = cntNum + 1 if cntNum == 20: print(yes) |
消息的重要部分是在赋值之前引用的粗体:unboundlocalerror:local变量"yes"。
在下一行中,您试图更新在函数的本地范围内不存在的
1 | yes += 1 |
我假设您想要更新全局
1 2 | def antMove(antNum): global yes |
但有人承认,这是一个糟糕的实践,你应该找到一个更好的方法来实现你的愿望。
这里有一个范围问题。在你的脚本中,
1 2 3 4 5 6 7 | def antMove(antNum): global yes randomNum = randint(0,3) if randomNum == antNum: yes += 1 else: print("No") |
你看到
在大多数情况下,我都看到了这一点,global对于来自C的人或者编码错误的人来说都是一个信号。如果您重用您的小脚本,调试错误增加的