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

Python中while True与if函数问题:年龄校验及票价计算异常

问题修复:年龄校验与票价计算代码异常

你写的代码存在几个关键问题,导致后续逻辑无法执行:

  • return语句位置错误:main函数里的return n写在了票价判断逻辑之前,函数执行到这里会直接终止,后面的票价打印代码完全没机会运行。
  • 年龄校验循环无效:当前的while循环如果用户输入的年龄≤0,会陷入无限死循环——因为循环内部没有重新获取用户输入的逻辑,一直卡在循环里出不来。
  • 未处理非法输入:直接用int(input(...))转换输入,若用户输入字母或非数字内容,程序会直接报错崩溃。

修复后的代码:

def main():
    while True:
        try:
            n = int(input("Insert your age: "))
            if n > 0:
                break
            print("年龄必须大于0,请重新输入!")
        except ValueError:
            print("请输入有效的数字年龄!")
    
    if price_checker(n):
        print("Price is 12 dollars")
    else:
        print("Price is 18 dollars")
    
def price_checker(x):
    return x < 12  # 简化逻辑,直接返回判断结果

main()

修复说明:

  1. 将年龄输入与校验整合到while循环中,只要输入不符合要求(≤0或非数字),就提示用户重新输入,直到获取有效年龄。
  2. 移除了过早的return n语句,确保票价判断逻辑能正常执行。
  3. 用try-except捕获非数字输入的异常,避免程序直接崩溃。
  4. 简化了price_checker函数的逻辑,直接返回布尔判断结果,代码更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:46:03