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

如何将Python输入验证程序拆分为两个独立循环?

解决方案

拆分两个独立循环分别验证姓名和年龄,确保每一项输入符合要求后再进入下一项:

修正后的代码

# 验证姓名:确保不含数字
while True:
    name = input("What's your name?: ")
    if any(char.isdigit() for char in name):
        print("name can't be numbers")
    else:
        break

# 验证年龄:确保是有效数字
while True:
    age_input = input("What's your age?: ")
    try:
        age = int(age_input)
        break
    except ValueError:
        print("age can't be characters")

# 输入验证通过后执行后续逻辑
print(f"Hello {name.capitalize()}")
print(f"You will turn 100 in {100 - age}")

关键说明

  • 第一个while循环单独处理姓名验证:用any(char.isdigit() for char in name)检测姓名中是否包含数字,存在则提示错误并重新询问,直到输入合法姓名。
  • 第二个while循环单独处理年龄验证:尝试将输入转为整数,失败则捕获ValueError并提示错误,直到输入合法年龄。

原代码的核心问题:

  1. 同时输入两项内容,无法单独校验每一项
  2. 错误提示逻辑混乱——不管是姓名含数字还是年龄含字符,都会同时输出两个错误提示
  3. 姓名含数字的场景不会触发ValueError,导致该错误无法被正确识别

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 22:19:52