Python如何检查输入为1-9的整数,不符合则将其存储为0?
解决方案
你可以在将输入转换为整数后添加范围检查逻辑,同时建议捕获特定的ValueError异常(而非所有异常),让代码更健壮。这里提供几种实现方式:
方式一:区分无效输入和范围错误
如果需要明确告诉用户是输入了非数字,还是数字不在指定范围内,可以用这种写法:
try: x = input("Enter the first number:") x = int(x) # 检查输入是否在1-9区间内(包含1和9) if not (1 <= x <= 9): raise ValueError("out_of_range") except ValueError as e: if str(e) == "out_of_range": print("You have not entered a number between 1 and 9 - 0 has been stored instead") else: print("You have not entered a valid number - 0 has been stored instead") x = 0
方式二:简化逻辑(不区分错误类型)
如果不需要细分错误类型,只需要最终保证x为0或符合范围的整数,可简化为:
try: x = int(input("Enter the first number:")) # 范围不满足则重置为0并提示 if not 1 <= x <= 9: print("You have not entered a number between 1 and 9 - 0 has been stored instead") x = 0 except ValueError: print("You have not entered a valid number - 0 has been stored instead") x = 0
扩展:让用户重新输入直到符合要求
如果希望用户输入错误时重复输入,直到给出合法值,可以在外层套循环:
while True: try: x = int(input("Enter the first number:")) if 1 <= x <= 9: break print("Please enter a number between 1 and 9!") except ValueError: print("Please enter a valid number!") # 执行到这里时,x一定是1-9之间的整数
补充说明
- 捕获
ValueError而非所有异常:避免意外捕获其他不可预见的错误(如内存错误),提升代码安全性。 1 <= x <= 9是Python特有的简洁范围判断写法,等价于x >= 1 and x <= 9。
内容的提问来源于stack exchange,提问作者Rendevouz
相关产品推荐
相关产品推荐

