Seite 1 von 1

list index out of range

Verfasst: Freitag 16. Juni 2017, 18:27
von EiSiMo
Hallo,
bin in Python noch ziemlich neu und habe mal aus Spaß versucht einen Verschlüsselungs-Algorithmus zu programmieren.
Nun soll ein einzelner Buchstabe aus einer Liste "herausgenommen", verschlüsselt und anschließend wieder zu einem Wort zusammengefügt werden.

Code: Alles auswählen

def wortverschlüsseln(wort, key):
    wortleange = len(wort)
    stelle = 0
    while wortleange > 0:
        buchstabeverschlüsselt = buchstabe_en(wort[(stelle)])  #hier müsste der Fehler liegen
        if len(wort) % 2: #das hier ist nicht wichtig
            k = len(wort) * key
            buchstabeverschlüsseltk = buchstabeverschlüsselt / k
        else:
            k = len(wort) / key
            buchstabeverschlüsseltk = buchstabeverschlüsselt * k
        stelle = stelle +1
        wortv = []
        wortv.append(buchstabeverschlüsseltk)
Nun habe ich folgende Fehlermeldung:

Traceback (most recent call last):
File "C:\Users\morit\Desktop\Verschlüsselung.py", line 185, in <module>
w1v = wortverschlüsseln(buchstabeninw1, key)
File "C:\Users\morit\Desktop\Verschlüsselung.py", line 29, in wortverschlüsseln
buchstabeverschlüsselt = buchstabe_en(wort[(stelle)])
IndexError: list index out of range

Komischer weise funktioniert es(ein Buchstabe wird aus der Liste genommen), wenn ich es ohne die Schleife und der Funktion probiere.
Woran könnte es liegen? bzw. Was könnte ich ändern?

Vielen Dank für alle Antworten! :D

Re: list index out of range

Verfasst: Freitag 16. Juni 2017, 18:55
von Sirius3
@EiSiMo: Deine while-Scheife wird nie beendet. Für das, was Du tust, brauchst Du sowieso keine while-Schleife, sondern eine for-Schleife:

Code: Alles auswählen

def wortverschlüsseln(wort, key):
    for zeichen in wort:
        buchstabeverschlüsselt = buchstabe_en(zeichen)
        ...
Ansonsten darfst Du die restlichen Fehler noch selber suchen.

Re: list index out of range

Verfasst: Freitag 16. Juni 2017, 18:56
von pixewakb
Edit-Konflikt mit Sirius3. Ich schließe mich seiner Meinung an.

Ich sehe nicht, dass Du die wortleange reduzierst, d. h. dieser Wert bleibt konstant. Sobald Du den Index größer machst als die Wortlänge (also wortlaenge (!)), kommt es zum Fehler. Btw: Das ist ziemlich umständlich programmiert.

Verwende vernünftige Variablennamen und überprüfe mal, wie du die Umwandlung von Buchstaben (u. a.) in Zahlen (?) sinnvoll bewerkstelligen willst.

PS: Gib Dir doch einfach mit print() bei jedem Durchlauf aus, was die einzelnen Variablen enthalten. Das hilft bei der Fehlersuche ungemein. :!: