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
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?