当用户输入某个字符串时,如何使while循环退出?

时间:2014-10-10 07:42:07

标签: python while-loop

我正在进行一项调查,使用while循环向用户询问年龄,性别等。当用户输入某些字符串时,有没有办法让程序退出循环,例如" cya"或" bye"?

我知道我可以在每次输入后制作一个if语句,但有更快/更简单的方法吗?

我想要实现的目标:

while (user has not entered "cya"):
    age = int(input("How old? "))
    gender = input("gender? ")
编辑:这个例子非常简短,但是我所做的调查很长,因此测试每个变量都太费时了。

2 个答案:

答案 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

编辑:如果您不需要立即退出,那么更简洁的方法是提供您自己的输入功能,该功能将所有输入存储在一组中,然后可以在每次迭代时检查/重置。