如何将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并提示错误,直到输入合法年龄。
原代码的核心问题:
- 同时输入两项内容,无法单独校验每一项
- 错误提示逻辑混乱——不管是姓名含数字还是年龄含字符,都会同时输出两个错误提示
- 姓名含数字的场景不会触发
ValueError,导致该错误无法被正确识别
内容的提问来源于stack exchange,提问作者Ryuushen
相关产品推荐
相关产品推荐

