如何简化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
相关产品推荐
相关产品推荐

