Python年龄输入负数校验:如何在输入负整数时报错并允许重新输入
实现方案
你只需要在原有的年龄输入校验逻辑后,增加负数判断分支即可,最小改动的完整代码如下:
while True: try: name = str(input("Enter your name=")) age = int(input("Enter your age=")) # 新增负数年龄校验逻辑 if age < 0: print("error!! 年龄不能为负数,请重新输入") continue except ValueError: print("error!! 请输入正确格式的数值") continue else: break current_year = int(input("What is the current year you are living in=")) n = 100 - age x = n + current_year print(name,"",x,"is the year you will turn 100")
改动说明
- 在
age成功转成int类型后,立即判断是否小于0,若满足条件直接打印错误提示,执行continue回到循环开头让用户重新输入 - 原有非数字输入的异常校验逻辑完全保留,不影响原有功能
- 不需要额外新增循环结构,复用现有的输入重试循环即可
可选优化(输错年龄无需重输姓名)
如果希望用户输入合法姓名后,仅重试年龄输入,可以把年龄的校验逻辑拆成独立循环,全中文提示的优化版代码如下:
# 姓名输入单独校验 while True: name = input("请输入你的姓名:") if name.strip() != "": break print("error!! 姓名不能为空,请重新输入") # 年龄输入单独校验 while True: try: age = int(input("请输入你的年龄:")) if age < 0: print("error!! 年龄不能为负数,请重新输入") continue break except ValueError: print("error!! 请输入合法的数字年龄,请重新输入") current_year = int(input("请输入当前年份:")) n = 100 - age x = n + current_year print(f"{name} 年满100岁的年份是:{x}")
内容的提问来源于stack exchange,提问作者Allmdar Arslan
相关产品推荐
相关产品推荐

