我的代码应该输出游戏的分数,并根据每个玩家的名字按字母顺序排序,每个玩家得分最高,只从玩家的最后3分中取得。
在得分为10之前一切正常,这是你在游戏中得分最高的。我认为这与分数是两位数而不是一位数有关。
def alpha():
d = collections.defaultdict(lambda: collections.deque(maxlen=3))
with open("scores.txt" as f:
for line in f:
player,score = line.strip().split(":")
d[player].append(score)
for k in sorted(d):
values = max(d[k])
print(k + " " + " ".join(map(str, values)))
有谁知道导致问题的原因是什么? 我使用的是python 3.3.2。
这是我的文本文件:
Aaron:1
Ronnie:10
Ronnie:2
Ronnie:4
Aaron:5
Vick:6
Vick:9
Vick:2
Andy:5
答案 0 :(得分:2)
您正在存储字符串分数而不是整数分数,因此,它们将被比较为字符串。由于字符串比较是词典,因此"10" < "9"
为True
,因此"10" < "2"
等等,因此您的代码因2位数而失败,因为比较不正确。
要更正此问题,请将分数转换为整数并替换此行
d[player].append(score)
用这个:
d[player].append(int(score))