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

如何简化Python中重复的用户输入类型校验防呆代码

你可以将重复的校验逻辑封装为可复用的通用函数,通过参数自定义提示文本、错误提示、校验规则等,完全避免重复编写循环和异常捕获逻辑。

基础实现(仅校验合法整数)

def get_integer_input(prompt: str, error_msg: str = "Please enter a whole number (in digits)") -> int:
    while True:
        try:
            return int(input(prompt))
        except ValueError:
            print(error_msg)

使用时直接调用即可,一行代码完成整数输入校验:

# 示例:获取用户输入的年龄
age = get_integer_input("请输入你的年龄:")
# 自定义错误提示示例
count = get_integer_input("请输入购买数量:", error_msg="购买数量必须为整数,请重新输入")

扩展实现(支持范围校验)

如果需要额外限制整数的取值范围,可以进一步扩展函数功能:

def get_integer_input(prompt: str, 
                     error_msg: str = "Please enter a whole number (in digits)",
                     min_val: int = None,
                     max_val: int = None) -> int:
    while True:
        try:
            num = int(input(prompt))
            if min_val is not None and num < min_val:
                print(f"输入值不能小于{min_val},请重新输入")
                continue
            if max_val is not None and num > max_val:
                print(f"输入值不能大于{max_val},请重新输入")
                continue
            return num
        except ValueError:
            print(error_msg)

使用示例:

# 必须输入0-100之间的整数
score = get_integer_input("请输入考试分数:", min_val=0, max_val=100)

通用校验方案(支持任意校验规则)

如果后续还有其他类型的输入校验需求(比如浮点数、手机号、邮箱格式等),可以封装更通用的校验函数,传入自定义校验规则即可:

def get_validated_input(prompt: str, validator, error_msg: str = "输入不合法,请重新输入"):
    while True:
        user_input = input(prompt)
        if validator(user_input):
            return user_input
        print(error_msg)

# 整数校验器示例
def int_validator(s: str) -> bool:
    try:
        int(s)
        return True
    except ValueError:
        return False

# 使用示例
age = int(get_validated_input("请输入年龄:", int_validator, "请输入合法整数"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:45:04