web-dev-qa-db-fra.com

Supérieur à inférieur à, python

Je fais une chose de type classement, ce qui se passe est que je compare le score au score actuel et si le score est inférieur au courant, le joueur a obtenu un score élevé, mais lors de l'utilisation de ce code ici

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

Mais même si le score est 4 et que le tableau [x] est 2, l'instruction if est toujours faite?

Est-ce que je fais quelque chose de mal?

Ma compréhension est que si le score 4 et le tableau [x] est 2, alors 4 est supérieur à 2, ce qui signifie qu'il revient Faux?


Voici le code complet

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

il imprime ceci si score = 4 et le tableau est composé de [1, 2]

Score = 4, Compared to = 1
Set rank to: 0
Score = 4, Compared to = 2
Rank = 0
11
FabianCook

Vérifiez que le score et le tableau [x] sont des types numériques. Vous pourriez comparer un entier à une chaîne ... ce qui est déchirant possible dans Python 2.x.

>>> 2 < "2"
True
>>> 2 > "2"
False
>>> 2 == "2"
False

Éditer

Explication supplémentaire: Comment Python compare-t-il chaîne et entier?

23
Jeremy Brown