大于小于,python

Fab*_*ook 12 python if-statement

我正在做一个排名类型的事情,发生的事情是我将得分与当前得分进行比较,如果得分低于当前,那么玩家获得了高分,但在此处使用此代码时

        print "Score = " + str(score) + ", Compared to = " + str(array[x])
        if score < array[x]:
                #Do stuff here
Run Code Online (Sandbox Code Playgroud)

但即使得分为4且数组[x]为2,if语句仍然完成?

难道我做错了什么?

我的理解是,如果得分4和数组[x]是2,则4大于2,这意味着它返回False?


下面是完整的代码

def getRank(array, score):
    rank = 0
    rankSet = False
    for x in range(0, len(array)):
        print "Score = " + str(score) + ", Compared to = " + str(array[x])
        if score < array[x]:
            if not rankSet:
                rank = x
                print "Set rank to: " + str(rank)
                rankSet = True
        elif score == array[x] or score > array[x]:
            rank += 1
            print "Rank higher than " + str(x)
    print "Rank = " + str(rank)
    return rank
Run Code Online (Sandbox Code Playgroud)

如果得分= 4则打印出来,数组由[1,2]组成

Score = 4, Compared to = 1
Set rank to: 0
Score = 4, Compared to = 2
Rank = 0
Run Code Online (Sandbox Code Playgroud)

Jer*_*own 24

检查以确保得分和数组[x]都是数字类型.您可能正在将整数与字符串进行比较......这在Python 2.x中是令人心碎的.

>>> 2 < "2"
True
>>> 2 > "2"
False
>>> 2 == "2"
False
Run Code Online (Sandbox Code Playgroud)

编辑

进一步说明:Python如何比较字符串和int?

  • 最简单的检查方法:`print repr(score),repr(array [x])`.另外:在Python 3中,你得到`TypeError:unorderable types:int()<str()`; 这只是一个2.x问题. (3认同)