Не может вырваться из цикла - PullRequest
0 голосов
/ 06 ноября 2019

Я абсолютный новичок в Python, вот код, с которым у меня проблемы. Так что проблема в том, что когда я нажимаю 0, цикл не прерывается

while True:
idiot = input('Continue Y/N?: ')
idiot = idiot.upper()
if idiot == ('Y'):
    print('Great')
if idiot == ('N'):
    print('okey')
if idiot == 0:
    print('exit')
    break

1 Ответ

1 голос
/ 06 ноября 2019

В вашем случае True никогда не изменится на False, что приведет к завершению цикла.

Изменение последнего предложения if на if str(idiot) == '0' поможет, потому что input() всегда возвращаетstr и вы указали int (0 вместо '0').

while True:
    idiot = input('Continue Y/N?: ')
    idiot = idiot.upper()
    if idiot == ('Y'):
        print('Great')
    if idiot == ('N'):
        print('okey')
    if idiot == '0':
        print('exit')
        break


В любом случае я всегда использую циклы while с переменной, которая содержит логическое значение (True / False).

С помощью переменной TrueOrFalse я могу установить ее на False, как только условие будет выполнено.

Вот как я бы это сделал:

TrueOrFalse = True
while TrueOrFalse:
    idiot = input('Continue Y/N?: ')
    idiot = idiot.upper()
    if idiot == ('Y'):
        print('Great')
    if idiot == ('N'):
        print('okey')
    if idiot == '0':
        TrueOrFalse = False
        print('exit')

Еще одна вещь: я знаю, что это всего лишь пример, но ваш input() запрашивает только «Y» или «N», а «0» отсутствует. В любом случае, я предполагаю, что «N» должен сделать (выйти из цикла) то, что сейчас делает «0».

...