Ich hatte vor etwa 6 Tagen angefangen, Python zu lernen. Ich habe mich dann selbst versucht im programmieren und habe einen 'Französischen Abfrager' programmiert (nichts grosses, sind nur drei Wörter). Dieses Programm soll mich mit französischen Wörter abfragen. Bisher hat auch alles funktioniert. Hab bei jedem Wort die richtige Antwort erhalten. Doch aus irgendeinen Grund, funktioniert EIN einziges Wort nicht: Ich hab insgesamt drei Wörter (die Blume[la fleur], die Wiese[le pré], der Stein[la pierre]). Wenn ich dann von dem Programm nach 'Die Blume' abgefragt werde, und ich gebe fälschlicherweise 'le pré' ein, stürtzt die Konsole ab, anstatt mir zu sagen, das es falsch sei. Deswegen bitte ich euch um Hilfe!
Ich glaube, ich habe dieses Problem, seit ich die Funktion 'auflister' geschrieben habe.
Code: Alles auswählen
import random
d_list = ["die Blume ", "die Wiese ", "der Stein "] #Deutsche Liste, auf das 'anz' mithilfe der Funktion 'zufall_g' zugreift.
d_f_words = {
'die Blume ': 'la fleur',
'der Stein ': 'la pierre', #Dict. auf das die Funktion 'korrigierer' zugreift
'die Wiese ': 'le pré'
}
verzeichniss_2 = {
'eingabe_1': [], #Mithilfe der Funktion 'in_put' Wird das französische geschriebene Wort, dass der Benutzer eingegeben hat, hier gesspeichert.
'eingabe_2': []
}
anz = {
'anz_1' : [verzeichniss_2['eingabe_1']],
'anz_2' : [verzeichniss_2['eingabe_2']] #'anz' steht für Anzeige. Das deutsche Wort wird dann mit der Funktion 'erneuer' zur Liste hinzugefügt.
}
def zufall_g(listo):
anzo = random.choice(listo) #Diese Funktion bestimmt ein zufälliges Wort aus einer Liste.
return anzo
def korrigierer(eingabe):
for x in d_f_words:
if x == eingabe[0]:
y = d_f_words[x]
if eingabe[1] == y:
d_list.remove(eingabe[0]) #Diese Funktion prüft das eingetippte Wort (eingabe) auf die Richtigkeit. Das gebrauchte Wort wird dann aus der Liste entfernt, dass es nicht wiederverwendet wird.
return "Richtig"
else:
d_list.remove(eingabe[0])
return "Falsch, " + y + " wäre die richtige Antwort gewesen"
def erneuer(anzi):
z = zufall_g(d_list)
anzi.append(z)
for s in verzeichniss_2:
if anzi[0] == verzeichniss_2[s]: #Diese Funktion fügt dem Dict. 'anz' das zufällige Wort hinzu. Das wird dann auch dem Dict. 'verzeiniss_2' hinzugefügt.
verzeichniss_2[s].append(anzi[1])
def in_put(anz):
word = input(anz[1])
for x in verzeichniss_2:
if verzeichniss_2[x] == anz[0]: #Hier gibt man das französische Wort ein, was dann dem verzeichniss_2 hinzugefügt wird und schlussendlich die Funktion 'korrigierer' verwendet.
verzeichniss_2[x].append(word)
print(korrigierer(verzeichniss_2[x]))
def auflister(anz):
erneuer(anz)
in_put(anz) # Diese Funktion verwenden eigentlich einfach nur zwei andere Funktionen (erneuer und in_put).
a_1 = auflister(anz['anz_1']) #Das ist Aufgabe ei.ns
a_2 = auflister(anz['anz_2']) #Das ist Aufgabe zwei.
a = input("Drücke eine Taste zum Beenden")