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

输入验证函数无法接收有效输入,求无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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:15:32