#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. Боже, неосторожная ошибка, спасибо, что указал мне на это. Спасибо~