使用' python'编译时,我得到正确的输出但不是用' python3'

时间:2012-10-20 15:01:37

标签: python python-3.x python-2.7

在下面的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编译时,为了获得正确的输出,我必须改变什么?


有没有更简单的比较方法,而不是每个号码使用 “或”

2 个答案:

答案 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!!')