2012-10-28 3 views
-1

У меня есть код, который идет как:Как предотвратить бесконечный цикл в булевом цикле?

maybeYes = raw_input("Please enter Yes to continue.") 
    if maybeYes != "Yes": 
     print "Try again." 
     # ask for input again 
    else: 
     pass 

Что я заполняю, где я хочу, чтобы сделать его просить ввода снова?

+0

Я полагаю, что эта линия - «даст вам репутацию», вы пытаетесь сказать ... «увеличит вашу репутацию как вопрос на SO, а не в очках» – MKJParekh

ответ

2

вы должны просто выполнить raw_input непосредственно в цикле.

while True: 
    result = raw_input("...") 
    if result != "Yes": 
     print "Try again." 
     continue 
    else: 
     break 
+0

Я получил его на работу. Спасибо за вашу помощь. –

1

Мне кажется, что вы ХОТИТЕ бесконечный цикл здесь.

maybeYes = raw_input("Please enter Yes to continue.") 
while maybeYes != "Yes": 
    maybeYes = raw_input("Please try again.") 

Однако вы всегда можете добавить счетчик/побег.

maybeYes = raw_input("Please enter Yes to continue.") 
attempts = 0 
while maybeYes != "Yes" and attempts < 10: 
    maybeYes = raw_input("Please try again.") 
    attempts += 1 
2

Это будет цикл печати wrong до пользовательских типов yes, Yes, YEs, YES, yEs или yeS как вход преобразуется в верхний регистр перед проверкой на YES, то ваш код может продолжать ...

while raw_input("Please enter Yes to start: ").upper() != 'YES': 
     print 'Wrong' 

print 'Correct' 

#Carry on here 

Выход:

Please enter Yes to start: nowg 
Wrong 
Please enter Yes to start: wggwe 
Wrong 
Please enter Yes to start: Yes 
Correct 
+0

Не знаю, почему это было проголосовано, не только верно, что он чище и надежнее, чем другие 2 текущих ответа? –

+1

Может быть, потому, что люди начали любить downvoting .. :) – MKJParekh

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