Программа для сортировки оценок игроков, отображения их оценок в порядке убывания

#python #python-3.9

Вопрос:

 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))

Однако это тоже не сработает, есть ли что-нибудь, что я пропустил?

Ответ №1:

Вы принимаете метки в виде строки, и когда вы пытаетесь ее отсортировать, она сортируется по алфавиту. Принимайте отметки как int

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

Комментарии:

1. Боже, неосторожная ошибка, спасибо, что указал мне на это. Спасибо~