Python - Выберите для сохранения имени, рекорда и времени, затем загрузите данные для отображения в виде таблицы рекордов. - PullRequest
0 голосов
/ 13 июля 2020

Я работал над этой задачей слишком много часов и, кажется, не могу найти окончательного решения в Интернете, поэтому я надеюсь, что кто-то сможет указать, где я ошибаюсь.

Я создал тест, после завершения которого будут указаны переменные для вашего имени, количества неправильных ответов и времени, затраченного на выполнение викторины. Затем считывается файл 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

...