python while循环卡住了

时间:2013-03-22 20:01:42

标签: python

我知道这是基本的,但我不能让这个工作。 它似乎不会理解大于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"

1 个答案:

答案 0 :(得分:8)

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

最终,你需要类似的东西:

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

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

(python2.x documentation)

  

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

(python3.x documentation)

  

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