2013-05-30 5 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() == False является True, а затем управление будет идти на except блок который собирается перезапустить цикл снова.

Если вы определили guessed где-то в вашем коде, то я думаю, что вы, вероятно, хотели сделать это:

guessed.append(guess) 

В противном случае определяет guessed первыми.

1

Каждый раз, когда вы пытаетесь выполнить линию guessed.append = guess, вы поднимаете StandardError, поэтому строка, указывающая вам return guess, никогда не выполняется.

Чтобы исправить ошибку, вы должны определить guessed, а также исправить строку до guessed.append(guess).

Также обратите внимание, что строка break сразу после return guess никогда не будет выполнена, даже если вы исправили эту ошибку.

Смежные вопросы