Python 当用户输入某个字符串时,如何使while循环退出?
我正在做一项调查,使用while循环询问用户的年龄、性别等。当用户输入诸如“cya”或“bye”之类的字符串时,有没有办法使程序退出循环 我知道我可以在每次输入后生成if语句,但有没有更快/更简单的方法 我想要实现的示例:Python 当用户输入某个字符串时,如何使while循环退出?,python,while-loop,Python,While Loop,我正在做一项调查,使用while循环询问用户的年龄、性别等。当用户输入诸如“cya”或“bye”之类的字符串时,有没有办法使程序退出循环 我知道我可以在每次输入后生成if语句,但有没有更快/更简单的方法 我想要实现的示例: while (user has not entered "cya"): age = int(input("How old? ")) gender = input("gender? ") 编辑:这个例子很短,但我正在做的调查很长,所以测试每个变量都太耗时。这不
while (user has not entered "cya"):
age = int(input("How old? "))
gender = input("gender? ")
编辑:这个例子很短,但我正在做的调查很长,所以测试每个变量都太耗时。这不是一个好主意,但实现目标的一种方法是抛出一个异常以退出循环
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
编辑:如果您不需要立即退出,那么一种更简洁的方法是提供您自己的输入功能,将所有输入存储在一个集合中,然后在每次迭代时可以检查/重置。我认为执行调查的最简单方法是构建一个包含所有问题的列表,然后用它来制作一个包含所有用户详细信息的字典
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'}
但是有没有一种方法可以通过while循环来实现呢?我举了一个使用while循环的例子。但是,它比其他版本更复杂,所以我强烈建议使用for循环。谢谢,但是当我运行代码时,它不会循环。问了一次问题就停了?