Я работал над этой задачей слишком много часов и, кажется, не могу найти окончательного решения в Интернете, поэтому я надеюсь, что кто-то сможет указать, где я ошибаюсь.
Я создал тест, после завершения которого будут указаны переменные для вашего имени, количества неправильных ответов и времени, затраченного на выполнение викторины. Затем считывается файл Pickle, добавляются эти новые переменные, сортируются, отображаются в виде таблицы (с использованием табуляции), а затем добавленные данные выгружаются в тот же файл Pickle.
Моя проблема может быть ie в как я пытаюсь сохранить данные, но мой код пока выглядит так.
#Open pickle file
try:
infile = open(filename,'rb') `Open pickle file`
high_score = pickle.load(infile) `Create dict for editing`
high_score[name] = [incorrect, finishtime] `Add new name, len(incorrect)and time to dict`
sort_highscore = sorted(high_score.items(), key=lambda x: x[1])
print(tabulate(sort_highscore, headers=['Name', 'Incorrect', 'Time']))
except Exception: `used if there is no existing data in the file`
print('exception')
high_score = {} `creates blank dictionary`
high_score[name] = [incorrect, finishtime] `appends dictionary`
print(high_score)
outfile = open(filename, 'wb') `Opens pickle file in write mode`
pickle.dump(high_score, outfile) `Updates picke file with new details`
outfile.close()
Я пробовал делать это, используя только имя и sh время, и смог правильно создать таблицу из 10 лучших результатов с помощью этого метода, но я не могу понять, что мне нужно сделать, чтобы правильно создать и сохранить 3 столбца данных. Окончательный результат должен выглядеть так, и его можно будет прочитать из файла Pickle. В настоящее время этот код показывает:
Имя | Неправильно
Джек | [0, 2:05]
Джилл | [0, 2:10]
Джеймс | [0, 2:15]
Джейк | [1, 2:01]
Замятие ie | [1, 2:10]
Джеймс | [2, 2:08]
Но я хочу, чтобы это выглядело так:
Имя | Неправильно | Время
Джек | 0 | 2: 05
Джилл | 0 | 2: 10
Джеймс | 0 | 2: 15
Джейк | 1 | 2: 01
Замятие ie | 1 | 2: 10
Джеймс | 2 | 2: 08