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

如何实现代码对age的整数合法性与空字符串输入的校验,并根据错误类型返回重试提示

如何实现带多场景校验的年龄输入功能?

我明白你想要打造一个能覆盖多种错误场景的年龄输入校验逻辑——既要抓空输入、非整数输入,还要检查年龄是否为负数,并且每种错误都给用户明确的重试提示。咱们来重构代码,把这些需求都实现:

完整实现代码

# 先获取用户名(原代码最后用到了name变量,所以补充这一步)
name = input("Lütfen adınızı girin: ")

# 初始化年龄变量,用于控制循环
valid_age = None
while valid_age is None:
    age_input = input("Lütfen yaşınızı girin: ")
    
    # 校验空输入(包括只输入空格的情况)
    if age_input.strip() == "":
        print("⚠️ Hata: Yaş alanını boş bırakamazsınız, lütfen tekrar deneyin.")
        continue
    
    try:
        # 尝试将输入转换为整数
        valid_age = int(age_input)
        # 校验年龄是否为非正数
        if valid_age <= 0:
            print("⚠️ Hata: Yaşınız 0'dan küçük veya eşit olamaz, lütfen doğru bir yaş girin.")
            valid_age = None  # 重置标记,让循环继续
    except ValueError:
        # 处理非整数输入的情况
        print("⚠️ Hata: Lütfen geçerli bir tam sayı olarak yaşınızı girin.")

# 输入全部有效后,打印欢迎信息
print(f"Merhaba {name}, hoşgeldiniz!")
print(f"Siz {valid_age} yaşındasınız.")

代码逻辑拆解

  • 循环控制:用valid_age is None作为循环条件,只有当得到完全有效的年龄值时,才会退出循环。
  • 空输入处理:通过age_input.strip()去掉输入首尾空格,判断是否为空字符串,给用户明确的“不能留空”提示。
  • 整数转换校验:用try-except捕获ValueError,处理用户输入字母、符号等非整数内容的情况;转换成功后立即检查年龄是否≤0,不符合要求就重置标记,让循环继续。
  • 补全用户名输入:原代码最后用到了name变量但没有获取逻辑,这里补充了这一步,避免运行时出现变量未定义的错误。

这样写的好处是,每个错误场景都有针对性的提示,用户能快速知道自己哪里输错了,而且循环逻辑清晰,只有输入完全符合要求才会进入后续流程。

内容的提问来源于stack exchange,提问作者Ahmet Uzunçayır

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 06:39:18