Заказ списка лидеров в repl.it - PullRequest
0 голосов
/ 19 января 2020

Необходимо заказать таблицу лидеров, которую я создал в программе на repl.it.

При упорядочении в настоящее время, похоже, упорядочивает каждую запись на основе ее первого di git, поэтому все одиночные записи di git упорядочены правильно, но все двойные числа di git отсортированы по первому только di git, поэтому, например, он упорядочивает 11 ниже 2, поскольку читает его как 1.

Любые идеи?

NB. Таблица лидеров хранит имена, оценки и оценки, безусловно, хранятся в виде строки, поэтому мне нужно изменить это на целые числа из вашего совета. Спасибо. Попытался изменить во второй строке вниз - file.write (str (оценка)) - но говорит мне, что это должна быть строка, а не int. Помогите? Код для этого раздела ниже.

file = open ("Leaderboard.txt", "a")
file.write(str(score))
file.write(",")
file.write(nickname)
file.write("\n")
file.close()

Leaderboard1 = list()
Leaderboard_unsorted = "Leaderboard.txt"
with open (Leaderboard_unsorted) as fin:
  for line in fin:
    if line[0] != "0":
      Leaderboard1.append(line.strip())
Leaderboard1.sort(reverse = True)

1 Ответ

0 голосов
/ 19 января 2020

Поскольку вы не показывали никакого кода, я должен сделать обоснованное предположение, что вы храните свои значения, которые вы хотите отсортировать как строки, а не как целые. Таким образом, при сортировке строк они сортируются char по char. Если вы хотите, чтобы они сортировались как числовые значения, сохраните их как целые числа, изолированные от строк, или, по крайней мере, скажите, чтобы ваша функция сортировки считала их целыми числами.

scores = ["23", "3", "111"]
print("string sort", sorted(scores))
print("int sort", sorted(scores, key=int))

OUTPUT

string sort ['111', '23', '3']
int sort ['3', '23', '111']

Но на будущее, пожалуйста, поделитесь своим кодом или хотя бы минимальным примером, который воспроизводит вашу проблему

...