在下面的python代码中
var=input("Enter a number between 1 to 10:")
if (var==1 or var==2 or var==3 or var==4 or var==5):
print ('the entered number is between 1 to 5')
elif (var==6 or var==7 or var==8 or var==9 or var==10):
print ('The entered number is between 5 to 10')
else:
print ('Wrong value exiting!!')
当我在终端〜$ python name.py
中运行它时输入介于1到10:3之间的数字
输入的数字介于1到5之间
当我在终端〜$ python3 name.py
中运行它时输入介于1到10:3之间的数字
错误的价值退出!!
有什么区别? &安培;当我使用python3编译时,为了获得正确的输出,我必须改变什么?
有没有更简单的比较方法,而不是每个号码使用 “或” ?
答案 0 :(得分:4)
在Python 2中:
var=input("Enter a number between 1 to 10:")
以上评估表达式,因此最终var
可能等于数字。 (并且应该注意避免)
在Python 3中,input
是等价的。在Python 2中raw_input
,因此它返回一个字符串 - 如果您希望它是一个数字,您需要var = int( input("...") )
并注意可能发生的任何转换错误:
有in
运算符:
if var in (1, 2, 3, 4, 5):
pass
elif var in (6, 7, 8):
pass
else:
pass
或者,如果你想要一个中间操作,你可以使用Python逻辑系统:
if 1 <= var <= 5:
pass
答案 1 :(得分:2)
我相信这是由于你使用input
- 在Python 3.x中,它与Python 2.x中的raw_input
相同,这意味着它将它转换为字符串为反对整数。至于您的比较,您可以尝试使用range
:
var=int(input("Enter a number between 1 to 10:"))
if var in range(1, 6):
print ('the entered number is between 1 to 5')
elif var in range(6,11):
print ('The entered number is between 5 to 10')
else:
print ('Wrong value exiting!!')