私は、各パスでソートされたリストのランクを見つけるプログラムを書いています。 私のプログラムはここにある:私はアリスのスコアのために与えた入力がリストの要素をPython3で1つずつ読む
import sys
# No. of Students considered
n = int(input().strip())
# Scores of n students
scores = [int(scores_temp) for scores_temp in input().strip().split(' ')]
# No. of scores considered for alice
m = int(input().strip())
# Scores of Alice
alice = [int(alice_temp) for alice_temp in input().strip().split(' ')]
for i in alice:
#temp1 = sorted(alice, reverse = True)
temp = alice
print(temp)
scores.extend(temp)
temp2 = sorted(scores, reverse = True)
unique = []
[unique.append(item) for item in temp2 if item not in unique]
print(unique.index(i)+1)
た:
>>> 45 87 23
私の目標は、45が最初に、その後、順位を印刷した後、その後、87ので、上に進んで処理することですにありますが、問題は処理45,87、および23の後でしかないため、ランクが印刷され、結果が間違っています。
正しい答えを得るためには何をすべきか。入力と出力の 例がここで与えられる:
>>> n = 7
>>> scores = [100, 100, 50, 40, 40, 20, 10]
>>> m = 4
>>> alice = [5, 25, 50, 120]
同じスコアが最大スコアは最初のランクを取得するような方法で、同じランクを与えられています。実施例100は、正しい出力である第1位 です:
6
4
2
1
しかし、私はいくつかの他の間違った答えを得ます。 (私はユニークなスコアのランクが必要です) 何をすべきですか?
出力してもよろしいですか? IMHO 2人の学生が100点、アリスが50点を取得した場合、彼女は3位になるはずですので、私は8 6 3 1を期待します。ユニークな点数を付けたい場合は、それを言う必要があります。 –