Как мне создать цикл в python, который прервется после завершения пользовательского ввода?

#python

#python

Вопрос:

введите описание изображения здесь

Я отредактировал свой код следующим образом:

 while(True):
    #get user to input a noun as a string variable
    noun = input()
    
    #get user to input a positive number for the integer variable
    number = int(input())

    #if the user inputs quit into the string variable stop program
    if noun == 'quit':
        break
    #otherwise print the output
    else:
        print('Eating {} {} a day keeps the doctor away.'.format(number,noun))
 

И я получаю следующие коды ошибок:
введите описание изображения здесь

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

1. Поместите операторы ввода в цикл while, иначе он будет запрашивать только один раз.

2. Выполняется else только в том случае, если while условие неверно, вы удаляете else его, и оно будет выполняться каждый раз, если вы не прервете его перед ним (чего вы и хотите).

3. Также сделайте правильный отступ. else должно совпадать с if . В настоящее время он связан с while .

Ответ №1:

Похоже, вы отредактировали код с момента этих ответов, это должно сработать

 while(True):
    noun, number = input().split()
    number = int(number)

    #if the user inputs quit into the string variable stop program
    if noun == 'quit':
        break
    #otherwise print the output
    else:
        print('Eating {} {} a day keeps the doctor away.'.format(number,noun))
 

Ваша проблема заключалась в том, что вы вызываете ввод дважды в каждом цикле. Итак, для noun было установлено 'apples 5' значение, а для number было установлено 'shoes 2' значение, которое не может быть преобразовано в целое число. Вы можете разделить ввод, чтобы получить существительное и число.

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

1. Я так сильно люблю тебя прямо сейчас. lol Разделение ввода, наконец, заставило его работать, чтобы пройти все тесты в моей программе.

Ответ №2:

Вы должны принимать входные данные внутри цикла, иначе это бесконечный цикл или, если вы написали quit, он будет выполняться только один раз. Также нет необходимости в том, чтобы условие == 0 выходило из цикла в соответствии с представленной вами проблемой.

Ответ №3:

Проблема в том, что вы просто берете первый ввод, просто устанавливаете входные данные внутри цикла.

Также else должно быть идентифицировано с помощью оператора if, и вам не нужно условие number == 0, поэтому результирующий код должен быть примерно таким:

 while(True):
    #get user to input a noun as a string variable
    noun = input()
    
    #get user to input a positive number for the integer variable
    number = int(input())

    if noun == 'quit':
        break
    else:
        print('Eating {} {} a day keeps the doctor away.'.format(number,noun))
 

Ответ №4:

Вот как я бы написал. 🙂

 while True:
    noun = input("Enter a noun: ")
    if noun == 'quit':
        print("Quitting the program...")
        break

    while True:
        number = input("Enter a number: ")
        try:
           if type(int(number)) == int:
               break
        except ValueError:
            print("Invalid input. Please enter a number.")
 
    if number == '0':
        print("Quitting the program...")
        break
    
    print("Eating {} {} a day keeps the doctor away.".format(number, noun))