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()
修复说明:
- 将年龄输入与校验整合到while循环中,只要输入不符合要求(≤0或非数字),就提示用户重新输入,直到获取有效年龄。
- 移除了过早的
return n语句,确保票价判断逻辑能正常执行。 - 用try-except捕获非数字输入的异常,避免程序直接崩溃。
- 简化了price_checker函数的逻辑,直接返回布尔判断结果,代码更简洁。
内容的提问来源于stack exchange,提问作者Nabil Aiman
相关产品推荐
相关产品推荐

