0

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


有没有更简单的比较方法而不是 对每个数字使用“或” ?

4

2 回答 2

4

在 Python 2 中:

var=input("Enter a number between 1 to 10:")

上面对表达式求值,所以它最终var可能等于一个数字。(并且确实应该避免注意)

在 Python 3 中,input是等价的。ofraw_input在 Python 2 中,因此它返回一个字符串 - 如果您希望它是一个数字,您需要执行var = int( input("...") )并注意可能发生的任何转换错误:

in运营商:

if var in (1, 2, 3, 4, 5):
    pass
elif var in (6, 7, 8):
    pass
else:
    pass

或者,如果你想要一个 between 操作,你可以使用 Python 逻辑系统:

if 1 <= var <= 5:
    pass
于 2012-10-20T15:06:21.277 回答
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!!')
于 2012-10-20T15:05:15.673 回答