0

我知道这是基本的,但我无法让它发挥作用。它似乎不理解大于 60 并不断在循环中循环。

Python 2.7.3

rackNo = 0
while (rackNo > 60) or (rackNo < 1) :
    rackNo = raw_input("Enter the Rack number you are using: ") 
    if (rackNo > 60) or (rackNo < 1) :
        print "Rack number must be between 1 and 60"
4

1 回答 1

8

您正在将字符串 (from raw_input) 与整数进行比较。

最终,你想要这样的东西:

rackNo = int(raw_input("Enter the Rack number you are using: "))

在 python2.x 中,内置类型之间的比较 ( >, ) 取决于实现。<在 python3.x 中,这些比较被明确禁止。

(python2.x 文档)

运算符 <、>、==、>=、<= 和 != 比较两个对象的值。对象不必具有相同的类型。如果两者都是数字,则将它们转换为通用类型。否则,不同类型的对象总是比较不相等,并且顺序一致但任意。__cmp__您可以通过定义方法或丰富的比较方法来控制非内置类型对象的比较行为__gt__,如特殊方法名称部分所述。

(python3.x 文档)

运算符 <、>、==、>=、<= 和 != 比较两个对象的值。对象不必具有相同的类型。如果两者都是数字,则将它们转换为通用类型。否则,== 和 != 运算符总是认为不同类型的对象是不相等的,而 <、>、>= 和 <= 运算符在比较不同类型的对象时引发 TypeError,而这些对象没有为给定对实现这些运算符的类型。您可以通过定义丰富的比较方法来控制非内置类型对象的比较行为__gt__(),如基本自定义部分所述。

于 2013-03-22T20:03:02.447 回答