以下代码给出了错误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 = 1currentpl=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/

10-11 16:07