Python限制输入为非零正整数时if判断不生效如何解决?
Python 非零正整数输入校验修复方案
现存问题点
- 仅对参数
a_1做了非零正整数范围校验,d、g_1、q、n四个参数完全没有范围判断逻辑 - 整数格式转换错误和数值范围错误共用同一个
ValueError捕获分支,错误提示无法区分错误类型,也容易导致逻辑混淆 - 任意参数校验失败都需要重新填写所有参数,交互效率极低
修复后代码
# 封装通用校验函数,复用逻辑 def input_positive_int(prompt_msg): while True: try: input_num = int(input(prompt_msg)) if input_num <= 0: print("输入值不能为0或负数,请输入正整数后重试") continue return input_num except ValueError: print("输入格式不符合要求,请输入整数后重试") # 逐个获取符合校验规则的参数 a_1 = input_positive_int("请输入等差数列首项:") d = input_positive_int("请输入等差数列公差:") g_1 = input_positive_int("请输入等比数列首项:") q = input_positive_int("请输入等比数列公比:") n = input_positive_int("请输入数列项数:")
优化说明
- 所有参数都经过整数格式校验+非零正整数范围校验,完全匹配需求
- 每个参数单独校验,单个输入错误无需重填所有内容,交互更友好
- 不同错误类型对应不同提示,用户可以快速定位问题
内容的提问来源于stack exchange,提问作者Lisa
相关产品推荐
相关产品推荐

