12

私はランキング型のことをしています。スコアを現在のスコアと比較し、スコアが現在よりも低い場合、プレイヤーは高いスコアを獲得していますが、ここでこのコードを使用すると

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

しかし、スコアが 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

スコア = 4 で、配列が [1, 2] で構成されている場合、これを出力します。

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

1 に答える 1

24

score と array[x] の両方が数値型であることを確認してください。整数を文字列と比較している可能性があります...これは Python 2.x では非常に可能です。

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

編集

詳細説明: Python は string と int をどのように比較しますか?

于 2012-08-01T21:32:14.590 に答える