Как продолжить выполнение программы до тех пор, пока я не введу определенную строку?

#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, поэтому забыл их удалить.