2013-05-30 155 views
0
def guess(): 
    while True: 
     try: 
      guess = raw_input("Guess your letter") 
      if len(guess) != 1 or guess.isdigit() == True: 
       print "Please guess again" 
      if len(guess) == 1 and guess.isdigit() == False: 
       guessed.append = guess 
       return guess 
       break 
     except StandardError: 
      pass 

print guess() 

無論我在原始輸入中輸入什麼值,該循環都會不斷重複。爲什麼???Python:爲什麼我的while循環保持循環

+1

可能是因爲'guessed.append = guess'產生了一個錯誤。不能確定,因爲你不告訴我們什麼'猜測'是 – Paul

+0

其他人已經診斷你的問題了,但是可能值得注意的是你的'break'語句是無法訪問的(因此沒有價值)。 –

+0

'try','except'語句經常隱藏真正的錯誤。你爲什麼使用一個?看起來你已經有了'if'語句的錯誤捕獲? – TehTris

回答

2

因爲guessed.append = guess西港島線產生錯誤每次len(guess) == 1 and guess.isdigit() == FalseTrue,然後控制將轉到except塊 這是會再次重新啓動循環。

如果你已經在你的代碼某處定義guessed那麼我想你也許想做到這一點:

guessed.append(guess) 

否則定義guessed第一。

1

每次嘗試執行行guessed.append = guess時,您都會提出StandardError,因此通知return guess的行永遠不會執行。

要修復它,您應該在函數外部定義guessed,並將行更正爲guessed.append(guess)

另請注意,即使修復了此錯誤,也不會執行return guess之後的行break