You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用变量标志终止while循环时输入'quit'触发ValueError问题求助

报错原因
  • 即使你输入了符合条件的quit将active设为False,当前轮次循环的剩余代码仍然会执行完成,不会立刻终止循环,所以程序还是会走到age = int(age)这行尝试对字符串quit做整数转换,触发类型错误。
  • 从报错信息里的invalid literal for int() with base 10: "'quit'"可以看到,你实际输入的内容是带单引号的'quit',而你的判断条件是age == 'quit',两个字符串不相等,active变量根本不会被修改为False,直接就执行了类型转换逻辑。
修复方案

你可以在匹配到退出关键词后直接终止当前轮次循环,同时可以兼容带引号输入的情况,修改后代码如下:

prompt = "How old is the movie goer today? "
prompt += "\nYou can enter 'quit' to end: "

active = True
while active:
    age = input(prompt)
    # 去掉输入内容首尾的空格和引号,再判断是否是quit
    if age.strip('\'" ') == 'quit':
        active = False
        # 直接跳出当前循环,不执行后面的类型转换逻辑
        continue

    age = int(age)

    if age < 3:
        print(" Congratulations! You get in for free.")
    elif age < 13:
        print(" The cost of your ticket is $10.")
    else:
        print(" Your ticket cost is $15.")

内容的提问来源于stack exchange,提问作者Ray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:06:04