#python
Вопрос:
#Это программа, которую я пишу. Я хочу, чтобы это продолжалось до тех пор, пока я не нажму «n». Но это работает только один раз. Любой ответ был бы признателен.
names = ["Steve"]
add = input("Enter your name: ")
names.append(add)
ques = input("Do you want to add more? (Press 'y' for yes and 'n' for no)")
if(ques == "y"):
add = input("Enter your name: ")
names.append(add)
print(*names, sep="n")
elif(ques == "n"):
print("Program Stopped")
else:
print("Entered wrong letter!")
Комментарии:
1. Тебе нужна какая-нибудь петля ?
2. @хелвуд, да! Я все еще новичок, поэтому мне трудно это делать. Но для цикла должно работать, но я знаю, как его использовать
Ответ №1:
while True
Петля-это путь сюда. Этот цикл будет длиться вечно, пока вы не выйдете из него, и в этом случае мы используем break
, если пользователь не хочет добавлять больше имен.
names = ["Steve"]
while True:
names.append(input("Enter your name: "))
# make sure only "n" or "y" is entered
while True:
continue_input = input("Do you want to add more? (Press 'y' for yes and 'n' for no)")
continue_input = continue_input.lower()
if continue_input in {'y', 'n'}:
break # answer is OK, leave the inner loop
print("Entered wrong letter!")
# leave the outer loop
if continue_input == 'n':
break
print(*names, sep="n")
print("Program Stopped")
Я добавил второй внутренний while True
цикл, чтобы проверить, был ли правильный ответ на вопрос «Вы хотите добавить больше?».
Поскольку другой ответ был неверным: убедитесь, что вы установили names = ["Steve"]
перед входом в цикл, а не в цикле. В противном names
случае будет сброшен во время каждого запуска цикла.
Ответ №2:
Для этого вам нужен бесконечный break
цикл while, убедитесь , что вы находитесь в elif
бесконечном цикле или else
блокируете, также я оптимизирую сравнение с учетом регистра , потому что конечный пользователь может нажать Y
«нет y
«, аналогично для n
и `N».
Код :
while True:
names = ["Steve"]
add = input("Enter your name: ")
names.append(add)
ques = input("Do you want to add more? (Press 'y' for yes and 'n' for no)")
if ques == "y" or ques =='Y':
add = input("Enter your name: ")
names.append(add)
print(*names, sep="n")
elif ques == "n" or ques =='N':
print("Program Stopped")
break
else:
print("Entered wrong letter!")
break
Комментарии:
1. Спасибо за ваш ответ, но это не то, чего я хочу. Он просто запрашивает максимум 3 имени, я хочу, чтобы их было столько, сколько я хочу, пока я не нажму «n».
2. Я запустил приведенный выше код, и я могу добавить столько, сколько захочу.
3. Да, это работает так, но на нем печатается не более 3 имен. Я имею в виду, что если я наберу «y», то он сбросит предыдущие имена.
4.
while
,if
иelif
не являются функциями, поэтому они не нуждаются в круглых скобках.5. @Matthias : конечно, я могу их удалить, я скопировал из OP, поэтому забыл их удалить.