以下代码给出了错误UnboundLocalError:赋值之前引用的局部变量'currentpl':
def play(num_sq, user_choice):
drawStrip(num_sq)
if user_choice == 0:
currentpl = 1
elif user_choice == 1:
currentpl = 2
while gameover(num_sq):
if currentpl == 1:
pick = getPlayerPick(num_sq)
while not validPlay(pick, num_sq):
pick = getPlayerPick(num_sq)
makePlay(pick, player_col[currentpl])
if currentpl == 2:
pick = computerSelection(num_sq)
makePlay(pick, player_col[currentpl])
currentpl = togglePlayer(currentpl)
if currentpl == 2:
return "User"
return "Computer"
我怎样才能解决这个问题?谢谢你的帮助!
最佳答案
user_choice
不是0或1时会发生什么?
如果user_choice
不为1或0,则执行currentpl = 1
或currentpl=2
行的网络。这意味着currentpl
是“未分配的”-它确实不存在。当您到达以下行时,这会导致问题
if currentpl == 1:
因为
currentpl
尚不存在-未分配。不允许这样做-您需要通过类似以下内容允许
user_choce
不是0或1的情况:else:
currentpl=10
在最后一个
elif
子句之后。另一种方法是确保在本节之前执行的代码中
user_choice
始终等于0或等于1,在这种情况下,可以确保在需要之前已分配(存在)currentpl
。测试其价值。关于python - 错误UnboundLocalError:分配前引用了局部变量'currentpl':,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27084804/