For Loop bricht ab
Verfasst: Dienstag 21. Mai 2019, 16:00
Die Funktion "codieren" verwandelt eine String-Zahl in eine Integer-Zahl, die Funktion "decodieren" andersherum.
einwortzahlen = ["null", "eins", "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht", "neun", "zehn", "elf",
"zwoelf", "sechzehn", "siebzehn", "zwanzig", "dreißig", "vierzeig", "fuenfzig", "sechzig", "siebzig",
"achtzig", "neunzig"]
integerzahlen = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 16, 17, 20, 30, 40, 50, 60, 70, 80, 90]
def codieren(einwortzahl):
return (integerzahlen[einwortzahlen.index(einwortzahl)])
def decodieren(integerzahl):
return (einwortzahlen[integerzahlen.index(integerzahl)])
Die Funktion "PlusMinus" soll String-Rechnungen auführen und als String zurückgeben. Der integrierte For-Loop scheint in meinem Beispiel jedoch die erste Plus-Rechnung zweimal zu wiederholen, also nicht in der teile-Liste weiterzugehen? Was habe ich übersehen?
def PlusMinus(rechnung):
teile = rechnung.split(" ")
ergebnis = codieren(teile[0])
for i in teile[1:]:
if i == "plus":
ergebnis += codieren(teile[teile.index(i) + 1])
elif i == "minus":
ergebnis -= codieren(teile[teile.index(i) + 1])
return decodieren((ergebnis))
print(PlusMinus("fuenf plus zwei plus eins"))
Ausgabe: neun
Hat jemand eine Idee?
einwortzahlen = ["null", "eins", "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht", "neun", "zehn", "elf",
"zwoelf", "sechzehn", "siebzehn", "zwanzig", "dreißig", "vierzeig", "fuenfzig", "sechzig", "siebzig",
"achtzig", "neunzig"]
integerzahlen = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 16, 17, 20, 30, 40, 50, 60, 70, 80, 90]
def codieren(einwortzahl):
return (integerzahlen[einwortzahlen.index(einwortzahl)])
def decodieren(integerzahl):
return (einwortzahlen[integerzahlen.index(integerzahl)])
Die Funktion "PlusMinus" soll String-Rechnungen auführen und als String zurückgeben. Der integrierte For-Loop scheint in meinem Beispiel jedoch die erste Plus-Rechnung zweimal zu wiederholen, also nicht in der teile-Liste weiterzugehen? Was habe ich übersehen?
def PlusMinus(rechnung):
teile = rechnung.split(" ")
ergebnis = codieren(teile[0])
for i in teile[1:]:
if i == "plus":
ergebnis += codieren(teile[teile.index(i) + 1])
elif i == "minus":
ergebnis -= codieren(teile[teile.index(i) + 1])
return decodieren((ergebnis))
print(PlusMinus("fuenf plus zwei plus eins"))
Ausgabe: neun
Hat jemand eine Idee?