使用变量标志终止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
相关产品推荐
相关产品推荐

