2016-09-29 29 views
1

我對編程非常陌生,並且正在創建一個函數,它接收一個或多個字母並檢查它是否在單詞中。我需要控制猜測的數量,所以我想設置一個布爾值來測試它是否正確。清楚的是,我已經瀏覽了這類問題的其他答案,但無法弄清楚這種情況下發生了什麼。無法在Python中創建布爾全局

即使if語句爲true,我也無法使bool'correct'返回True。看了這個後,似乎把它作爲一個全局變量應該解決這個問題,但它不適合我。它仍然返回False。 我該如何解決這個問題?我正在使用Python 2.5。

任何幫助將不勝感激! 謝謝!

randomWord = choose_word(wordlist) 
guessedLetters = [] 
correct = False 
def userGuesses(letters):  
    newLetters = list(letters)   

    global correct  #change correct to global 

    for i in range(len(letters)): 
     curLetter = letters[i] 

     for j in range(len(randomWord)):  

      if curLetter == randomWord[j]: 
       guessedLetters[j] = randomWord[j] 
       correct = True    

      else: 


       correct = False 



    return guessedLetters    
+0

當你說它返回false時,我在質疑你是否向我們展示了你的所有代碼,或者你是在說它正在返回'False'。因爲什麼是'randomWord',它在你使用它時沒有被定義。 – MooingRawr

+1

首先,你有兩個「回報」的陳述。第二個永遠不會工作。 –

+0

停止使用全局變量 – Marcin

回答

0

在代碼中的一些問題:

  • randomWord似乎是不確定的。
  • guessedLetters似乎也是未定義的。
  • 有在功能

如果你的代碼並運行2個回報,那麼也許它從來沒有進入內循環。在不同的地方添加一些print語句以查看該點上的代碼是否已運行。

另請注意,稍後您不需要執行for j in range(len(letters))即可訪問letters[i]。只要做:

for letter in letters: 
    # your code 

它更短,並具有相同的效果。內循環也是一樣。

祝你好運!

編輯:嘗試在輸入函數之前打印出randomWord,看看該變量的值是多少。

+0

對不起,我意外地沒有粘貼這些變量。我現在添加了它們。謝謝(你的)信息!它似乎一直運行正常。除了那個陳述之外,一切都似乎正常工作。 – Jim