#python #loops #while-loop
Вопрос:
Я был бы признателен за некоторую помощь в этом:
Я пытаюсь составить форм-программу философии «Тогда зачем беспокоиться» :
Я написал этот код, но я не могу понять, как заставить цикл while повторяться каждый раз, когда пользователь не вводит «да» или «нет» в обоих вопросах.
problem = str(input("Do you have a problem in life? ")) problem = problem.replace(" ", "").lower() #nevermind caps or spaces while problem: if problem not in ("yes","no"): print("Please enter YES or NO") if problem == "no": break if problem == "yes": something = str(input("Do you have something to do about it? ")) something = something.replace(" ","").lower() while something: if something not in ("yes","no"): print("Please enter YES or NO") elif: break print("Then why worry?")
Комментарии:
1.
if else:
Я думаю, вам не удалось скопировать и вставить код
Ответ №1:
Ваш алгоритм линейный, в нем нет циклов. Таким образом, единственное место, где вам нужен цикл, — это когда вы пытаетесь получить правильный ответ от пользователя. Итак, я бы предложил вам перенести это в функцию, а затем ваш пример превратится в это:
def get_user_input(prompt): while True: reply = input(prompt).replace(" ", "").lower() if reply in ['yes', 'no']: return reply print("Please enter YES or NO") problem_exists = get_user_input("Do you have a problem in life? ") if problem_exists == 'yes': action_possible = get_user_input("Do you have something to do about it? ") print("Then why worry?")
Ответ №2:
Я бы предложил использовать while True
циклы, чтобы вы могли поместить input
код один раз, затем с правильным условием и разбить, все в порядке
while True: problem = input("Do you have a problem in life? ").lower().strip() if problem not in ("yes", "no"): print("Please enter YES or NO") continue if problem == "no": break while True: something = input("Do you have something to do about it? ").lower().strip() if something not in ("yes", "no"): print("Please enter YES or NO") continue break break print("Then why worry?")
Используя оператор моржа ( pygt;=3.8
), это можно было бы сделать проще
while (problem := input("Do you have a problem in life? ").lower().strip()) not in ("yes", "no"): pass if problem == "yes": while (something := input("Do you have something to do about it? ").lower().strip()) not in ("yes", "no"): pass print("Then why worry?")