我正在进行一项调查,使用while循环向用户询问年龄,性别等。当用户输入某些字符串时,有没有办法让程序退出循环,例如" cya"或" bye"?
我知道我可以在每次输入后制作一个if语句,但有更快/更简单的方法吗?
我想要实现的目标:
while (user has not entered "cya"):
age = int(input("How old? "))
gender = input("gender? ")
编辑:这个例子非常简短,但是我所做的调查很长,因此测试每个变量都太费时了。
答案 0 :(得分:1)
我认为执行调查的最简单方法是构建所有问题的列表,然后使用它来制作所有用户详细信息的字典。
details = {}
questions = [("gender", "What is your gender?"), ("age", "How old?"), ("name", "What is your name?")]
response = ""
while response not in ("bye", "cya"):
for detail, question in questions:
response = input(question)
if response in ("bye", "cya"):
break
details[detail] = response
print(details)
示例:
What is your gender?M
How old?5
What is your name?john
{'gender': 'M', 'age': '5', 'name': 'john'}
What is your gender?m
How old?bye
{'gender': 'm'}
答案 1 :(得分:0)
这不是一个好主意,但实现目标的一种方法是抛出异常以摆脱循环。
def wrap_input(prompt, exit_condition):
x = raw_input(prompt)
if x == exit_condition:
raise Exception
return x
try:
while True:
age = int(wrap_input("gender ", "cya"))
except Exception:
pass
编辑:如果您不需要立即退出,那么更简洁的方法是提供您自己的输入功能,该功能将所有输入存储在一组中,然后可以在每次迭代时检查/重置。