print("This program will print the amount of greeting you would like to see.")
print()
play = input("Do you want to continue? (y/n): ") 
while play == "y":
    name = input("Enter your name: ")
    print()
    greetings = int(input("How many times would you like to see your custom greeting?: "))
    print()
    for i in range(greetings):
        print("Hello " + name + "." + " It's a pleasure to meet you!")
    while play == "n":
        continue

Поэтому в этой строке не отображается, хотите ли вы видеть больше, вместо этого отображается «Введите свое имя». Я не уверен, следует ли мне стереть этот код или что-то изменить

        play_2 = input("Would you like to see more? (y/n): ")
        while play_2 == "y":
            name_2 = input("Enter your name: ")
            print()
            greetings_2 = int(input("How many times would you like to see your custom 
greeting?: "))
            print()
            for i in range(greetings_2):
                print("Hello " + name_2 + "." + "It's a pleasure to meet you!")
            while play_2 == "n":
                continue

print()                 
print("Bye. Thanks for using my program!")
2
Naomi 24 Окт 2021 в 23:43
Вы никогда не меняете play в своем цикле. Итак, как вы ожидаете, что while play == "y": или while play == "y": выйдут из цикла? Конечно, while play == "n": никогда не будет зацикливаться, потому что это цикл, в который программа входит, только если play равен 'y'.
 – 
Matthias
24 Окт 2021 в 23:54

5 ответов

Лучший ответ

Вам нужен механизм для повторения ввода, Do you want to continue? (y/n): например в следующем коде он помещен в цикл while, и поэтому он будет запущен снова после печати заданного имени указанное количество раз.

print("This program will print the amount of greeting you would like to see.")
print()

play = input("Do you want to continue? (y/n): ")

while play == "y":
    name = input("Enter your name: ")
    greetings = int(input("How many times would you like to see your custom greeting?: "))
    for i in range(greetings):
        print("Hello " + name + "." + " It's a pleasure to meet you!")
    play = input("Do you want to continue? (y/n): ")

Пример прогона:

This program will print the amount of greeting you would like to see.

Do you want to continue? (y/n): y
Enter your name: Naomi
How many times would you like to see your custom greeting?: 2
Hello Naomi. It's a pleasure to meet you!
Hello Naomi. It's a pleasure to meet you!
Do you want to continue? (y/n): y
Enter your name: Campbell
How many times would you like to see your custom greeting?: 2
Hello Campbell. It's a pleasure to meet you!
Hello Campbell. It's a pleasure to meet you!
Do you want to continue? (y/n): n

Process finished with exit code 0
1
Arvind Kumar Avinash 25 Окт 2021 в 00:17
Но вначале я хочу спросить пользователя, хотят ли они продолжить после того, как «Эта программа напечатает ...
 – 
Naomi
25 Окт 2021 в 00:14
- Я обновил программу, чтобы соответствовать этому требованию.
 – 
Arvind Kumar Avinash
25 Окт 2021 в 00:17
1
Спасибо!
 – 
Naomi
25 Окт 2021 в 00:22

Вы можете изменить свой код следующим образом:

print("This program will print the amount of greeting you would like to see.")
print()
play = input("Do you want to continue? (y/n): ") 
while play == "y":
    name = input("Enter your name: ")
    print()
    greetings = int(input("How many times would you like to see your custom greeting?: "))
    print()
    for i in range(greetings):
        print("Hello " + name + "." + " It's a pleasure to meet you!")
    play = input("Would you like to see more? (y/n): ")

Проблема заключалась в настройке ваших циклов while. Только один нужен с проверкой, если пользователь хочет снова запустить программу в конце. Цикл прервется, если пользователь введет что-нибудь, кроме «y».

1
Florian de Koning 24 Окт 2021 в 23:58
        play_2 = input("Would you like to see more? (y/n): ")
        while play_2 == "y":
            name_2 = input("Enter your name: ")
            print()
            greetings_2 = int(input("How many times would you like to see your custom 
greeting?: "))
            print()
            for i in range(greetings_2):
                print("Hello " + name_2 + "." + "It's a pleasure to meet you!")
            while play_2 == "n":
                continue

Снимите отступ со всего этого один раз. Я рекомендую отладку прежде всего.

0
Dorian 24 Окт 2021 в 23:51
print("This program will print the amount of greeting you would like to see.")
while (play := input("\nDo you want to continue? (y/n): ")).lower() == "y" :
    name = input("Enter your name: ")
    print()
    greetings = int(input("How many times would you like to see your custom greeting?: "))
    print()
    for i in range(greetings):
        print("Hello " + name + "." + " It's a pleasure to meet you!")

Вы можете улучшить код, добавив проверки входных данных и используя \ n в конце строк, чтобы исключить строки print (), тем самым уменьшив длину кода.

0
Gaetano Marchianò 25 Окт 2021 в 01:28

Используйте бесконечный цикл с while True, который вы оставляете с break, если пользователь не хочет продолжать. Это имеет то преимущество, что вам не нужно отслеживать дополнительную переменную в нескольких строках кода.

print("This program will print the amount of greetings you would like to see.")
while True:
    name = input("Enter your name: ")
    number_of_greetings = int(input("How many times would you like to see your custom greeting?: "))
    for _ in range(number_of_greetings):
        print(f"Hello {name}. It's a pleasure to meet you!")
    play_again = input("Do you want to continue? (y/n): ")
    if play_again != 'y':
        break

print("Bye. Thanks for using my program!")
0
Matthias 25 Окт 2021 в 00:01