Ich versuche, eine einfache Rechtschreibprüfung Programm durch zwei Strings und passen Sie die erste an die zweite. Wenn die Strings die gleiche Länge haben, funktioniert mein Code gut, aber wenn sie unterschiedlich sind, beginnen die Probleme. Es führt die if-Anweisungen nur einmal aus und stoppt danach. Wenn ich die Break-Punkte entferne, bekomme ich einen IndexError: List-Index außerhalb des Bereichs.Python if Anweisung wird nur einmal ausgeführt
Hier ist mein Code:
#!python
# -*- coding: utf-8 -*-
def edit_operations(first,second):
a = list(first)
b = list(second)
counter = 0
l_a = len(a)
l_b = len(b)
while True:
if a == b:
break
if l_a > l_b:
if a[counter] != b[counter]:
a[counter] = ""
c = "".join(a)
print "delete", counter+1, b[counter], c
counter += 1
l_a -= 1
break
if l_a < l_b:
if a[counter] != b[counter]:
c = "".join(a)
c = c[:counter] + b[counter] + c[counter:]
print "insert", counter+1, b[counter], c
counter += 1
l_a += 1
break
if a[counter] != b[counter]:
a[counter] = b[counter]
c = "".join(a)
print "replace", counter+1, b[counter], c
counter += 1
else:
counter += 1
if __name__ == "__main__":
edit_operations("Reperatur","Reparatur")
edit_operations("Singel","Single")
edit_operations("Krach","Stall")
edit_operations("wiederspiegeln","widerspiegeln")
edit_operations("wiederspiglen","widerspiegeln")
edit_operations("Babies","Babys")
edit_operations("Babs","Babys")
edit_operations("Babeeees","Babys")
Dies ist die Ausgabe erhalte ich:
replace 4 a Reparatur
replace 5 l Singll
replace 6 e Single
replace 1 S Srach
replace 2 t Stach
replace 4 l Stalh
replace 5 l Stall
delete 3 d widerspiegeln
replace 3 d widderspiglen
replace 4 e wideerspiglen
replace 5 r widerrspiglen
replace 6 s widersspiglen
replace 7 p widersppiglen
replace 8 i widerspiiglen
replace 9 e widerspieglen
replace 11 e widerspiegeen
replace 12 l widerspiegeln
delete 4 y Babes
insert 4 y Babys
delete 4 y Babeees
Durch die letzten drei Zeilen können Sie mein Problem sehen und ich bin irgendwie jetzt verzweifelt. Hoffentlich könnte jemand einen Tip geben Sie mir, was daran falsch ist
Also was ist das Problem. Wir wissen nicht, was du zu tun versuchst. Bitte aktualisieren Sie Ihren Beitrag zusammen mit dem erwarteten Ergebnis. – Saleem
Sie haben 'Break'-Anweisungen unter den' if's, wo die Längen unterschiedlich sind; Warum würden Sie erwarten, dass die Schleife weiterläuft? –