Как бы я изменил этот кортеж обратно в строку для записи в файл? - PullRequest
0 голосов
/ 10 марта 2019

Я изменил содержимое текстового файла с именем 'HighScores.txt' в список и отсортировал его по следующему коду:

scores = []

with open("HighScores.txt") as f:
    for line in f:
        name, score = line.split(',')
        score = int(score)
        scores.append((name, score))

scores.sort(key=lambda s: s[1])

Текстовый файл выглядит следующим образом:

Хэнк, 11

Джайда, 15

Крис, 12

Как я могу превратить этот список обратно в строку, чтобы я мог записать его обратно в текстовый файл?

Первая реализация исправления была:

f = open("HighScores.txt", 'r+')

for t in ((name, score)):
    f.write(' '.join(str(s) for s in t) + '\n')

Ошибка:

File "C:\Users\samiv\Desktop\Computer Science-20190310T115417Z-001\Computer Science\Coding Project - Copy.py", line 102, in game
f.write(' '.join(str(s) for s in t) + '\n')

Ошибка типа: объект int не повторяется

1 Ответ

0 голосов
/ 10 марта 2019

Попробуйте добавить этот код после последней строки:

lines = []
for tup in scores:
    s = tup[0] + ', ' + str(tup[1]) + '\n'
    lines.append(s)

with open('result.txt', 'w') as f:
    f.writelines(lines)

Чтобы отсортировать в порядке убывания, измените параметр следующим образом:

scores.sort(key=lambda s: s[1], reverse=True)
...