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()

无论我在原始输入中输入什么值,这个循环都会不断重复。为什么???

4

2 回答 2

2

因为guessed.append = guess每次都会引发错误len(guess) == 1 and guess.isdigit() == FalseTrue然后控制将转到将except再次重新启动循环的块。

如果您guessed在代码中的某个地方定义了,那么我认为您可能想要这样做:

guessed.append(guess)

否则guessed先定义。

于 2013-05-30T22:23:36.293 回答
1

每次您尝试执行该行时guessed.append = guess,都会引发 a StandardError,因此告诉您执行的行return guess永远不会执行。

要修复它,您应该guessed在函数外部定义,并将行更正为guessed.append(guess).

另请注意,即使您修复了此错误,也永远不会执行紧随break其后的行。return guess

于 2013-05-30T22:24:58.120 回答