Ich habe nochmals eine Frage ;D Funktioniert die Funktion "wort_buchstaben_vergleich" oder beziehungsweise könntest du mir den/ die Fehler verraten und funktioniert die Funktion "does_match", also kann ich das so auf die Worte anwenden? Ich danke dir nochmals!decoder hat geschrieben: Sonntag 11. Oktober 2020, 11:34Ok, danke! Ja das letztere Problem habe ich behoben!__blackjack__ hat geschrieben: Samstag 10. Oktober 2020, 14:04 @decoder: Irgendwo auf dem Weg der Daten hat was mit der Kodierung nicht geklappt: "für" sollte wohl "für" heissen. Falls das beim Einlesen passiert: Bei Textdateien ist es wichtig, dass man beim öffnen die korrekte Kodierung angibt. Die Vermutung liegt nahe, dass hier eine UTF-8 kodierte Textdatei fälschlicherweise als CP1252 eingelesen wurde:Bei den Lückenworten sind ja noch Satzzeichen dran. Das geht natürlich nicht:Code: Alles auswählen
In [56]: "für".encode("cp1252").decode("utf-8") Out[56]: 'für'
Ich habe in meinem kleinen Testcode eine `fill()`-Funktion die als erstes Argument den kompletten Lückentext als Zeichenkette bekommt und (mit Hilfe einer weiteren Funktion) da nur die Lückenworte ohne Satzzeichen draus ermittelt. Für das ermitteln der Füllworte aus dem Lückentext sind reguläre Ausdrücke ganz praktisch. Also das `re`-Modul in der Standardbibliothek.Code: Alles auswählen
In [58]: len("je") Out[58]: 2 In [59]: len("__,") Out[59]: 3 In [60]: does_match("__,", "je") Out[60]: False
Deine Aufteilung des Lückentextes ist auch falsch: Du hast das letzte Wort zerteilt! Hast Du das manuell gemacht, oder ist das ein Fehler in den Eingangsdaten? Beziehungsweise hast Du das überhaupt falsch gemacht? Denn *mit* diesem Fehler dürft es keinen `IndexError` geben. Ohne den Fehler aber schon.
Um Lückenwort und Füllwort buchstabenweise zusammen durch zu gehen ist die `zip()`-Funktion nützlich. Und dann entweder eine Schleife, oder wenn man es kompakter möchte die `any()`-Funktion und ein Generatorausdruck.
def wort_buchstaben_vergleich (a,b):
q = -1
i = 0
z = 0
k = 0
ueberpruefung = False
while k < len(a) and len(b):
while i < len(a) and len(b):
q = q+1
while a[z][q] == b[z][q]:
ueberpruefung = True
if ueberpruefung == False:
print()
else:
return wort_buchstaben_vergleich
if z == len(a) and len(b):
z = z+1
def lange_ueberpruefen (a,b):
if len(a) == len(b):
return lange_ueberpruefen
def does_match (a,b):
if lange_ueberpruefen(a,b) and wort_buchstaben_vergleich(a,b):
return does_match