尝试在Python中打破while循环时获取错误消息

时间:2016-09-05 04:41:43

标签: python

我正在尝试编写包含以下内容的代码:

1)在while语句中使用条件测试来停止循环。

2)使用活动变量来控制循环运行的时间。

3)当用户输入“退出”时,使用break语句退出循环。值。

这是我的代码:

prompt = "What is your age?"
prompt += "\nEnter 'quit' to exit: "

while True:
    age = input(prompt)
    age = int(age)

    if age == 'quit':
        break
    elif age < 3:
        print("Your ticket is free.")
    elif 3 <= age <=12:
        print("Your ticket is $10.")
    elif 12 < age:
        print("Your ticket is $15.")
    else:
        print("Please enter a valid age.")

我相信我已经正确回答了第1部分和第2部分,但每当我进入&#39;退出&#39;或者测试第3部分的任何其他单词,我收到一条错误消息,指出:&#34; ValueError:对于带有基数10的int()的无效文字:&#39;退出&#39;&#34;

有没有人对我的代码中的错误提出任何建议?谢谢你的时间。

5 个答案:

答案 0 :(得分:5)

您正在将用户的输入转换为数字,然后再检查该输入是否实际为数字。从这里开始:

age = input(prompt)

age = int(age)

if age == 'quit':
    break
elif age < 3:
    print("Your ticket is free.")

对此:

age = input(prompt)

if age == 'quit':
    break

age = int(age)

if age < 3:
    print("Your ticket is free.")

这将在假定用户输入数字之前检查退出请求。

答案 1 :(得分:1)

您将年龄转换为int()的整数,因此它永远不会等于'quit'。首先进行quit检查,然后转换为整数:

age = input(prompt)

if age == 'quit':
    break;

age = int(age)
...

现在检查它是否等于字符串文字 first ,这样如果它是,它会正确地中断。如果没有,那么继续照常进行。

答案 2 :(得分:1)

您正在将字符串“quit”转换为整数,而python告诉您它是错误的。

这将有效:

prompt = "What is your age?"   
prompt += "\nEnter 'quit' to exit: "
while True:
    age = input(prompt)       
    if age == 'quit':
        break
    age = int(age)
    if age < 3:
        print("Your ticket is free.")
    elif 3 <= age <=12:
        print("Your ticket is $10.")
    elif 12 < age:
        print("Your ticket is $15.")
    else:
        print("Please enter a valid age.")

答案 3 :(得分:1)

为了显示不同的内容,您实际上可以在此处使用try/except来捕获ValueError,并且在您的例外区块中,您可以检查quit和{ {1}}因此。此外,您可以稍微简化输入提示以节省几行。

你也可以强制break的外壳为小写,这样你就可以把它写在任何一个外壳中,只需将它强行放到一个外壳中并检查quit(如果有人碰巧写的话) QuIt或QUIT它仍然可以工作。)

quit

答案 4 :(得分:0)

正如上面评论中提出的那样,您应该使用raw_input()而不是input来处理用户输入为字符串,以便您可以检查'quit'字符串。如果用户输入不等于'quit',则可以尝试将输入字符串作为整数进行管理。如果用户传递了无效的字符串(例如'hgkjhfdjghd'),您可以将其作为例外处理。

在下面找到一段代码,演示我上面描述的内容:

prompt = "What is your age?"
prompt += "\nEnter 'quit' to exit: "

while True:
    age = raw_input(prompt)

    if age == 'quit':
        break

    try:
        age = int(age)  

        if age < 3:
            print("Your ticket is free.")
        elif 3 <= age <=12:
            print("Your ticket is $10.")
        elif 12 < age:
            print("Your ticket is $15.")

    except Exception as e:
        print 'ERROR:', e
        print("Please enter a valid age.")