2014-11-23 57 views
1

下面的代碼給出了錯誤UnboundLocalError:賦值之前引用局部變量「currentpl」局部變量「currentpl」賦值之前引用:錯誤UnboundLocalError:

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" 

我怎樣才能解決這個問題?謝謝你的幫助!

回答

1

user_choice不是0或1時會發生什麼?

如果user_choice不是1或0,則會執行currentpl = 1currentpl=2行中的行。這意味着currentpl是'未分配' - 它確實不存在。這會導致問題,當你達到像

if currentpl == 1: 

因爲currentpl犯規還不存在一條線 - 這是未分配。

這個心不是讓 - 您需要允許的情況下user_choce不爲0或1具有這樣的:你上次elif條款後

else: 
    currentpl=10 

一種替代方法是確保在本節之前執行的代碼中,user_choice總是等於0或等於1,在這種情況下,您可以確定currentpl已分配(存在),然後您需要測試它的價值。

+0

對不起,斯圖爾特,是有點新的這個,所以我不明白你在說什麼 – deedee 2014-11-23 02:16:23

+0

@deedee不用擔心 - 我試圖在我的答案上面粘貼 – 2014-11-23 02:23:31

+0

好吧我要試一試,讓你知道結果 – deedee 2014-11-23 02:34:59