首页 > 解决方案 > 一个程序来排序球员的分数,按降序显示他们的分数

问题描述

position = []
name = []
all_marks =[]

total_players = int(input("Insert number of players: "))


for x in range(total_players):
    player_name = input("Player name: ")
    print("Player ",x+1," name:",player_name)
    position.append(int(x+1))
    name.append(player_name)

index_name = list((position[x],name[x]) for x in range(total_players))

print(index_name)



for x in range(total_players):
    print("For player ",name[x], )
    marks = input("Insert your marks: ")
    all_marks.append(marks)

marks_name = list((all_marks[x],name[x]) for x in range(total_players))

marks_name.sort(key=lambda mn: mn[0], reverse = True)

print("Ranking",marks_name)

打印标记时,它是基于玩家标记的,也就是说mn[0],标记将按相反的顺序排序,因为我已经说过reverse = True了,但是,打印的顺序要么不是所需的相反顺序,要么是出乎意料的随机顺序。我试过把

sorted(marks_name(key=lambda mn:mn[0], reverse = True))

但是它也不起作用,我错过了什么吗?

标签: pythonpython-3.9

解决方案


您将标记作为字符串,当您尝试对其进行排序时,它会按字母顺序排序。以标记为int

marks = int(input("Insert your marks: "))

推荐阅读