Python Pickle Vokabeltrainer?
Hallo,
ich will einen simplen Vokabeltrainer mit python programmieren. Um die Vokabeln die vom user eingeben werden zu speichern verwende ich pickle. Leider werden ohne Fehlermeldung keine Vokabeln in der von mir angelegten Datei gespeichert.
import random
import pickle
class Entry:
def __init__(self, deutsch, englisch):
self.deutsch = deutsch
self.englisch = englisch
def toString(self):
return self.deutsch + " - " + self.englisch
eintraege = [Entry("hallo", "hello")]
def save():
with open('vocabulary.pkl', 'wb') as voc_pkl:
pickle.dump(eintraege, voc_pkl)
save()
with open('vocabulary.pkl', 'rb') as voc_pkl:
eintraege = pickle.load(voc_pkl)
def eingabe():
while True:
deutsch = input("Deutsches Wort: ")
if deutsch == "#fertig":
return
englisch = input("Englisches Wort: ")
if englisch == "#fertig":
return
eintraege.append(Entry(deutsch, englisch))
save()
def abfrage():
while True:
i = random.randint(0,len(eintraege)-1)
englisch = input("Englische Übersetzung von " + eintraege[i].deutsch + ": ")
if(englisch == "#fertig"):
return
if eintraege[i].englisch == englisch:
print("korrekt!")
else:
print("leider falsch. Richtige Antwort: " + eintraege[i].englisch)
def printall():
for eintrag in eintraege:
print(eintrag.toString())
while True:
befehl = input("Befehl: ")
if befehl == "eingabe":
eingabe()
elif befehl == "abfrage":
abfrage()
elif befehl == "beenden":
break
elif befehl == "ausgabe":
printall()
else:
print("keine bekannte Ausgabe. Tippe: eingabe, abfrage, ausgabe oder beenden.")