#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))