Как выйти из этого цикла while

#python

#python

Вопрос:

Итак, в основном, когда пользователь вводит ‘n’, мне нужно, чтобы он останавливался и не просил вводить либо y, либо n, но, похоже, я не могу заставить это произойти, какая-нибудь помощь?

 decider = input('Would you like to play the game? [y/n]? ')

while decider != 'y' :
    if decider == 'n' :
        print('Another time perhaps')
    else :
        print('Please enter either 'y' or 'n' ')

    decider = input('Would you like to play the game? [y/n]? ')
  

Также я понимаю, что вы можете использовать exit или break, но в моем упражнении это ЗАПРЕЩЕНО

Комментарии:

1. Вместо того, чтобы задавать вопросы в конце цикла, вы пробовали задавать вопросы в начале ? Подумайте, что вам нужно было бы изменить в вашей программе, если бы вы это сделали.

2. @GreenCloakGuy Я попытался поместить это в начало внутри цикла while, но это делает то же самое : (

3. Пожалуйста, не вандализируйте свои собственные сообщения. Публикуя здесь, вы предоставляете SO право распространять контент в соответствии с CC-by SA 4.0. Любой вандализм будет отменен.

4. @greg-449 Просто хотел удалить, так как я получил свое решение и не хотел, чтобы люди продолжали помогать, понял! Спасибо.

5. Вопросы предназначены не только для задающего, но и для всех других людей, у которых может возникнуть подобная проблема. Поэтому вам не следует пытаться удалить только потому, что вы получили ответ.

Ответ №1:

Вам нужно спросить пользователя перед проверкой входных данных и перед тем, как цикл while снова проверит условие. Также вам нужно выполнять цикл до тех пор, пока входные данные НЕ БУДУТ равны ‘n’

 decider = ''
while decider != 'n' and decide != 'y' :
    decider = input('Would you like to play the game? [y/n]? ')
    if decider == 'n' :
        print('Another time perhaps')
        break
    elif decider == 'y':
        print('Play again!')
        * insert restart code here*
    else :
        print('Please enter either 'y' or 'n' ')
  

Комментарии:

1. Хм, похоже, это не помогает, программа не будет проходить, даже если это ‘y’

2. decider = ' ' while decider != 'y' : decider = input('Would you like to play the game? [y/n]? ') if decider == 'n' : print('Another time perhaps') else : print('Please enter either 'y' or 'n' ') Я попробовал это, что близко к работе, однако, когда я ставлю ‘n’, он все еще задает вопрос

3. Вы пытаетесь выйти из цикла, когда пользователь нажимает «y» или, скорее, «n»?

4. Морей, это должно завершиться в n, и не спрашивать снова, когда дело дойдет до этого, и в ‘y’ это просто продолжилось бы до остальной части моей программы

5. Хорошо, смотрите мои изменения.

Ответ №2:

Попробуйте это:

 run = True
while run:
    decider = input(•••)
    if decider == "n":
        print(•••)
        run = False
    if decider == "y":
        print(•••)
    else:
        print("Please write either y or n")
  

Комментарии:

1. К сожалению, мне не разрешено использовать ‘break’ для этого упражнения, есть какое-либо другое решение?

2. Хорошо, я отредактирую ответ, чтобы избежать использования break

3. @Danyal Khan проверьте это сейчас, удовлетворительный ли ответ? Если это так, пожалуйста, отметьте это как принятое 😃

4. Нет, у него все еще та же проблема, в этом случае, когда пользователь вводит ‘y’, он будет проходить, когда пользователь вводит ‘n’, он должен остановиться, и когда пользователь вводит что-либо, отличное от y или n, он должен попросить их ввести либо из двух

5. @DanyalKhan Хорошо, проверь это сейчас

Ответ №3:

Вы можете решить эту проблему, добавив другую настройку в while и изменив ее, когда он вставит n. Я привел вам пример ниже.

 import sys

decider = input('Would you like to play the game? [y/n]? ')

while decider != 'y':
    if decider == 'n' :
        print('Another time perhaps')
        sys.exit()
    else :
        print('Please enter either 'y' or 'n' ')
        decider = input('Would you like to play the game? [y/n]? ')
  

Ну, вы были правы, я отредактировал код, чтобы больше не отвечать на вопрос

Комментарии:

1. Привет, Андрес, кажется, это работает для ‘y’ и всего, что не является ‘n’, однако, когда ‘n’ вводится и отправляется в качестве ответа, он все еще задает вопрос и со второй попытки переходит ко второй части моей программы…

2. Андрес, это идеально, это работает в соло, но моя программа состоит из двух частей: цикла while, о котором мы говорим, а затем другого цикла while. Дело в том, что мне нужно, чтобы цикл не переходил ко второй части, если пользователь вводит ‘n’, любая помощь?

3. Хорошо, я, наконец, понимаю, чего вы хотите. теперь я обновил изменения. Теперь, если пользователь вставит n, программа завершится