如何实现Python程序拒绝接收指定列表中的数字输入?
解决输入验证问题:拒绝接收指定列表中的数字
嘿,我来帮你搞定这个需求!首先得指出你原代码里的一个小逻辑漏洞——你写的if int(FirstNumber or SecondNumber) <= 17没法正确判断两个输入是否都符合要求,因为or在这里会返回第一个非零的数值,不是同时检查两个数。比如如果第一个数合规但第二个数超了17,代码还是会直接打印和,这显然不是你想要的效果。
接下来咱们直接重构代码,实现拒绝接收listN里的偶数,同时确保输入是小于17的奇数,还能处理用户输入非整数的情况,让程序更健壮:
# 定义禁止输入的偶数列表 listN = [0, 2, 4, 6, 8, 10, 12, 14, 16] def get_valid_number(prompt): """循环获取符合要求的输入:小于17的奇数(不在listN中)""" while True: try: # 尝试将输入转为整数 num = int(input(prompt)) # 检查是否在禁止列表里 if num in listN: print("抱歉,不能输入偶数,请重新输入!") # 检查是否小于17 elif num >= 17: print("抱歉,数字必须小于17,请重新输入!") # 符合要求就返回这个数字 else: return num except ValueError: # 处理用户输入非整数的情况,避免程序崩溃 print("请输入有效的整数哦!") # 获取两个符合要求的数字 FirstNumber = get_valid_number('Input first odd number smaller than 17: ') SecondNumber = get_valid_number('Input second odd number smaller than 17: ') # 计算并打印和 SumOfBoth = FirstNumber + SecondNumber print(f"两个数的和是:{SumOfBoth}")
代码细节说明:
- 用
get_valid_number函数封装输入验证逻辑,通过while True循环持续要求用户输入,直到输入完全符合规则。 - 加入
try-except捕获非整数输入的异常,避免程序因为用户误输入字母、符号直接崩溃。 - 明确检查两个核心条件:输入不在
listN中(即不是禁止的偶数)、输入小于17,确保每个输入都严格合规。
这样修改后,用户只要输入不合规的内容,程序就会给出明确提示并要求重新输入,完美满足你的需求!
内容的提问来源于stack exchange,提问作者FLooD Production
相关产品推荐
相关产品推荐

