TypeError: объект’ int ‘ не является подписным, добавляя к кортежу в цикле

Этот код является частью более крупной программы pygame, и он используется для добавления 1 к значению Y падающего астероида. Он сначала печатает правильный ответ с элементами в списке со значением y = 2, но на втором цикле я получаю сообщение об ошибке.

GeneratedX = []
x = (200,1)
y = (168,1)
GeneratedX.append(x)
GeneratedX.append(y)
i = True
while i == True:
    for current in GeneratedX:
        GeneratedX = (current[0],current[1] + 1)
        print(GeneratedX)

1 ответ

  1. На второй итерации GeneratedXэто уже не список кортежей, а кортеж
    ( GeneratedX = (current[0],current[1] + 1)).

    Вот почему currentоткрывается intи current[0]поднимается TypeError.

    Вероятным решением было бы использовать enumerateследующим образом:

    for i, current in enumerate(GeneratedX):
        GeneratedX[i] = (current[0], current[1] + 1)
    

    При использовании с остальными выходными данными кода:

    [(200, 2), (168, 1)]
    [(200, 2), (168, 2)]
    [(200, 3), (168, 2)]
    [(200, 3), (168, 3)]
    [(200, 4), (168, 3)]
    [(200, 4), (168, 4)]
    [(200, 5), (168, 4)]
    [(200, 5), (168, 5)]
    [(200, 6), (168, 5)]
    .
    .
    .
    .