ich habe einen Trick anwenden müssen, um beim Schleifendurchlauf nicht "out of range" zu gelangen. Allerdings glaube ich, dass dieser "Trick"
a) schlechter Programmierstil und
b) gar nicht nötig ist
Ich stehe aber auf dem Schlauch und komme auf nichts anderes. Der "Trick" ist in Zeile 7, wo ich einfach ein weiteres Zeichen an die String-Variable hänge, um einen Index mehr zu haben. Dies ist der Code (wandelt römische in arabische Zahlen um):
Code: Alles auswählen
zahlen = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
zahlzeichen = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]
roemisch = ""
i = 0
zahl = raw_input("Zahl: ")
zahl = zahl + "A"
zahl = zahl.upper()
while i < len(zahl) - 1:
if zahl[i] + zahl[i+1] in zahlzeichen:
zahlzeichen_index = zahlzeichen.index(zahl[i] + zahl[i+1])
roemisch = roemisch + zahlen[zahlzeichen_index]
i = i + 1
elif zahl[i] in zahlzeichen:
zahlzeichen_index = zahlzeichen.index(zahl[i])
roemisch = roemisch + zahlen[zahlzeichen_index]
i = i + 1