2013-05-30 121 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