2012-08-01 12 views
11

Sto facendo una cosa tipo classifica, quello che succede è confrontare il punteggio con il punteggio corrente e se il punteggio è inferiore alla corrente allora il giocatore ha ottenuto un punteggio alto, ma quando si usa questo codice quiMaggiore di meno di, python

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

Ma anche se il punteggio è 4 e l'array [x] è 2, l'istruzione if viene ancora eseguita?

Sto facendo qualcosa di sbagliato?

La mia comprensione è che se il punteggio 4 e l'array [x] sono 2 allora 4 è maggiore di 2 il che significa che ritorna False?


Heres il codice completo

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 

esso stampa questo se il punteggio = 4 e l'array è composto da [1, 2]

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

risposta

21

Controllare per accertarsi che sia score e array [x] sono tipi numerici. Si potrebbe confrontare un intero con una stringa ... il che è straziante in Python 2.x.

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

Modifica

Ulteriori spiegazioni: How does Python compare string and int?

+3

Il modo più semplice per verificare: 'stampa repr (score), repr (array [x])'. Inoltre: in Python 3, si ottiene 'TypeError: types non ordinabili: int() Dougal

+0

Perché non ci penso D: Penso che potrei essere – FabianCook

+0

usando 'print type (score)' ritorna con '' ma penso che sia la matrice che lo sta facendo. – FabianCook

Problemi correlati