Майкл Доусон - Программируем на Python 7 глава

Задача 2
Доработайте игру «Викторина» таким образом, чтобы она хранила в файле список рекордов. В список должны попадать имя и результат игрока-рекордсмена. Используйте для хранения таблицы рекордов консервированный
объект.
Для работы программы требуется предварительно создать файл highscores2.dat вручную(и записать в него {'nobody':0}) или с помощью отдельной программы(удобно обнулять для отладки):

import pickle
score = {'nobody':0}
f = open("highscores2.dat", "wb")
pickle.dump(score, f)
f.close()

Отличия от оригинальной программы:
import sys, pickle, shelve
____________________________________________
После функции def open_file(file_name, mode) вставляем:

def check_score(score):
    score_file = open_file("highscores2.dat", "rb") #открываем файл
    records=pickle.load(score_file) #копируем в словарь
    score_file.close()
     
    listt=list(records.keys()) #ключи словаря переводим в список

    for i in range(len(listt)):
        if len(listt)<=4:
            name=input("Please write your name: ")
            records[name]=score
            break
        elif int(records[listt[i]])<score:
            name=input("Please write your name: ")
            del records[listt[i]]
            records[name]=score
            break
           
    score_file = open_file("highscores2.dat", "wb") #запись обратно в файл
    pickle.dump(records, score_file)
    score_file.close()
    score_file = open_file("highscores2.dat", "rb") #вывод результатов
    scores=pickle.load(score_file)
    print('This is our champions\n', scores)
    score_file.close()
       
_____________________________________
В конце тела функции main :
 print("That was the last question!")
 print("You're final score is", score)
 check_score(score)
 

Комментарии

Популярные сообщения из этого блога

Майкл Доусон - Программируем на Python 8 глава задача 1

Майкл Доусон - Программируем на Python 3 глава

Майкл Доусон - Программируем на Python 4 глава