Майкл Доусон - Программируем на 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()
Доработайте игру «Викторина» таким образом, чтобы она хранила в файле список рекордов. В список должны попадать имя и результат игрока-рекордсмена. Используйте для хранения таблицы рекордов консервированный
объект.
Для работы программы требуется предварительно создать файл 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)
Комментарии
Отправить комментарий