Python: TypeError: 'int' - Objekt ist nicht subscriptable

Bekomme ich einen TypeError, und ich verstehe nicht warum. Der Fehler ist bei c = t[i][0] (laut debugger). Ich habe 3 char-Gruppen(Listen): g1, g2 und g3 und ich bin versucht zu ändern, der char index durch Abzug des Schlüssels k1, k2 oder k3 aus dem index. Was ich nun verwende zum testen:

text = 'abcd'

l_text = [('a', 0), ('b', 1), ('c', 2), ('d', 3)]

k1, k2, k3 = 2, 3, 1

- Und dies ist der code:

def rotate_left(text, l_text, k1, k2, k3):
    i = 0
    newstr = [None]*len(text)
    for t in l_text: # t = tuple
        c = t[i][0] 
        if c in g1: # c = char
            l = int(l_text[i][1]) # l = index of the char in the list
            if l - k1 < 0:
                newstr[l%len(text)-k1] = l_text[i][0]
            else:
                newstr[l-k1] = l_text[i][0]
        elif c in g2:
            l = l_text[i][1] # l = index of the char in the list
            if l - k1 < 0:
                newstr[l%len(text)-k2] = l_text[i][0]
            else:
                newstr[l-k2] = l_text[i][0]
        else:
            l = l_text[i][1] # l = index of the char in the list
            if l - k1 < 0:
                newstr[l%len(text)-k3] = l_text[i][0]
            else:
                newstr[l-k3] = l_text[i][0]
        i += 1
    return newstr

Kann jemand mir erklären, warum erhalte ich diese Fehlermeldung und wie behebe ich es? Es ist nicht so, ich bin mit einem int Typ da. Der debugger zeigt, dass es ein Typ str und es bricht nach der 2. iteration.

PS google hat nicht geholfen
PPS ich weiss, dass es zu viel Wiederholung in den code. Ich Tat es, um zu sehen, in den debugger, was passiert.

UPDATE:

Traceback (most recent call last):
  File "/hometriplerotatie.py", line 56, in <module>
    print(codeer('abcd', 2, 3, 1))
  File "/home/triplerotatie.py", line 47, in codeer
    text = rotate_left(text, l_text, k1, k2, k3)
  File "/home/triplerotatie.py", line 9, in rotate_left
    c = t[i][0] 
TypeError: 'int' object is not subscriptable
  • Wie Sie diese aufrufen?
  • Kann man den stacktrace?
  • Auf die Linie bringt diese Ausbeute eine Art Fehler ? Könnte Sie posten die ganze Nachricht ?
  • dies ist eine Funktion, die ich nenne, die innerhalb einer anderen Funktion, bearbeitet die post
  • Wenn i == 1 werden Sie versuchen, den index der Ganzzahl.
InformationsquelleAutor itVico | 2015-02-24
Schreibe einen Kommentar