仅当某些特殊输入为大于1且小于5的整数时,我才需要进行计算。如果数字不满足此条件,则会显示一条消息。有用。 我希望当输入不是整数但它不起作用时也要打印消息。当我输入例如“ a”时,我得到信息“ ValueError:int()的无效文字,基数为10:'ds'”
w = input("write a number")
if (int(w)<1 or int(w)>5) or w.isdigit()==False:
print("input must be between 1 and 5 and not to be a letter")
else:
print(w)
答案 0 :(得分:6)
如果w
确实不是数字,那么int(w)
将不起作用,并且您会得到所描述的错误。但是,您已经在检查w
是否为数字,只需要反过来对条件进行排序:
w = input("write a number")
if w.isdigit() == False or int(w) < 1 or int(w) > 5:
print("input must be between 1 and 5 and not to be a letter")
else:
print(w)
条件是从左到右评估的,因此,如果是w.isdigit() == False
,则int(w) < 1
和int(w) > 5
甚至都不会被评估,并且您不会看到错误。 / p>
答案 1 :(得分:1)
由于or
运算符的工作方式而引起问题。实际上,当您有两个或多个or
时,编译器会继续检查条件,直到获得第一个False
。
在您的情况下,当您输入字母(例如'a')时,最后检查条件w.isdigit()
,因此int()
给出错误invalid literal for int() with base 10: 'a'
。因此,为避免错误,只需更改条件的顺序即可。首先检查输入是否为数字,然后检查范围如下:
w = input("write a number")
if w.isdigit()==False or (int(w)<1 or int(w)>5) :
print("input must be between 1 and 5 and not to be a letter")
else:
print(w)