Python Vokabeltrainer Probleme bei txt Dateien auslesen und speichern
Verfasst: Mittwoch 30. September 2020, 19:57
Ich versuche einen Vokabeltrainer zu programmieren, aber ich schaffe es nicht, dass das Programm die Vokabellisten abspeichert und bei einem Neustart ausliest. Das Problem ist, dass mein Programm die Vokabeln nicht erkennt oder fehlerhaft abspeichert. Wenn ich den Code beim Abspeichern ohne \n schreibe funktioniert es besser nur erkennt er dann die einzelnen Vokabeln durch den readline befehl nicht mehr und sieht alles als eine Vokabel.
Vielen Dank für Eure Hilfe.
Vielen Dank für Eure Hilfe.
Code: Alles auswählen
import random
class Entry:
def __init__(self, deutsch, englisch):
self.deutsch = deutsch
self.englisch = englisch
def toStringd(self):
return self.deutsch
def toStringe(self):
return self.englisch
d = open('deutsch.txt', 'r')
e = open('englisch.txt', 'r')
eintraege = [Entry(d.readline(), e.readline())]
speichern = []
d.close()
e.close()
def eingabe():
while True:
deutsch = input("Deutsches Wort: ")
if deutsch == "#":
break
englisch = input("Englisches Wort: ")
if englisch == "#":
break
eintraege.append(Entry(deutsch, englisch))
speichern.append(Entry(deutsch, englisch))
def abfrage():
while True:
i = random.randint(0, len(eintraege)-1)
englisch = input("Englische Übersetzung von " + eintraege[i].deutsch + ": ")
if(englisch == "#"):
return
if eintraege[i].englisch == englisch:
print("korrekt")
else:
print("falsch, richtige Antwort ist: " + eintraege[i].englisch)
def printall():
for eintrag in eintraege:
print(eintrag.toStringd() + eintrag.toStringe())
while True:
befehl = input("Befehl:")
if befehl == "eingabe":
eingabe()
elif befehl == "abfrage":
abfrage()
elif befehl == "beenden":
break
elif befehl == "ausgabe":
printall()
elif befehl == "hilfe":
print("Mögliche Befehle:", "\n eingabe", "\n abfrage", "\n beenden", "\n ausgabe", "\n hilfe",sep="")
else:
print("Keine bekannte Ausgabe. Für alle Befehle tippe: hilfe.")
d2 = open('deutsch.txt', 'a')
for eintrag in speichern:
d2.write(eintrag.toStringd()+'\n')
d2.close()
e2 = open('englisch.txt', 'a')
for eintrag in speichern:
e2.write(eintrag.toStringe()+'\n')
e2.close()
print("Beenden")