输入验证函数无法接收有效输入,求无try/except及递归的简洁实现
无需try/except或递归的输入验证方案
原代码试图实现持续请求用户输入、直到获取有效数值1或2的功能,但存在递归调用冗余问题,且依赖try/except处理类型转换异常。以下是更简洁的实现方式:
原问题代码
def input_params(prompt): while True: try: user_input = int(input(prompt)) if user_input == 1 or user_input == 2: return user_input else: print("Invalid Input") input_params(prompt) except ValueError: pass
优化后的实现
def input_params(prompt): while True: user_input = input(prompt).strip() if user_input in ("1", "2"): return int(user_input) print("无效输入,请输入1或2")
实现说明
- 直接对输入的字符串做验证,避免整数转换时触发的
ValueError,无需使用try/except块 - 仅用
while True循环持续请求输入,彻底去掉递归调用,避免潜在栈溢出风险 - 增加明确错误提示,同时通过
strip()处理输入前后的空白字符,提升容错性
内容的提问来源于stack exchange,提问作者PythonProgrammer
相关产品推荐
相关产品推荐

