Witam!
Piszę system zapisujący najlepsze wyniki w moim quizie. Po drodze napotkałem mały problem. Co zrobić aby jeden wynik nie nadpisywał poprzedniego? Wyniki zapisuje w pliku binarnym za pomocą shelve.
Kod
import shelve
import sys
def file_open(file_name):
"""otwarcie pliku"""
try:
file = open(file_name, "r")
return file
except IOError:
print("Nie można otworzyć pliku", file_name)
input("Aby zakończyć program, naciśnij klawisz Enter")
sys.exit()
def add_rang(total_points, name):
"""dodanie wyniku"""
rang = []
rang.append((name, total_points))
#print("Gracz:", name, "Punkty:", total_points)
file = shelve.open("rang.dat")
file["rang"] = rang
file.sync()
def open_rang():
"""wyświetlanie wyników"""
file = shelve.open("rang.dat")
print("Wynik:", file["rang"])
file.close()
file = file_open("quiz.txt")
open_rang()
total_points = 0
print(file.readline().rstrip(), file.readline().rstrip()) # nazwa quizu i autor
print()
for x in range(0, 5): # wypisuje kolejno 5 pytań
print(file.readline().rstrip()) # treść pytania
for y in range(0, 4): # wypisuje 4 odpowiedzi
print(file.readline().rstrip()) # 4 odpowiedzi
points = int(file.readline().rstrip()) # waga pytania
correct = file.readline().rstrip() # poprawna
player = input("Odpowiedź: ") # odpowiedź gracza
if correct == player:
print("Poprawna odpowiedź\n")
total_points += points
else:
print("Zła odpowiedź\n")
print("Zobyłeś", total_points, "punktów!")
name = input("Twoje imię: ")
add_rang(total_points, name)
open_rang()