如何让Python for循环拒绝负整数?实现正整数输入校验
解决方案
你的原代码存在两个明显问题:一是使用eval()有安全风险(它会执行任意输入的代码),二是缺少输入校验逻辑。下面是修改后的代码,能确保循环只接受正整数输入:
current = [] print("Enter 6 integers greater than 0") for i in range(6): while True: try: num = int(input(f"Enter positive integer {i+1}/6: ")) if num > 0: current.append(num) break else: print("Error: Please enter a number greater than 0.") except ValueError: print("Error: Please enter a valid integer.")
关键修改说明
- 替换
eval()为int():直接将输入转换为整数,避免执行恶意代码的安全风险,同时能捕获非整数输入的错误。 - 新增
while True循环:针对每个输入位置,持续提示用户直到输入符合正整数要求。 - 双重校验逻辑:
- 通过
try-except捕获非整数输入,给出明确提示后重新请求输入。 - 判断输入的整数是否大于0,不符合要求时提示用户并重新输入。
- 通过
- 优化交互提示:明确告知用户当前是第几个输入,提升操作清晰度。
内容的提问来源于stack exchange,提问作者Louis Phan
相关产品推荐
相关产品推荐

