'int' object is not iterable Python

Выдает ошибку

    i = 0
    for i in ui.tableWidget.rowCount():
        print(ui.tableWidget.item(i,0))

Не могу понять что не так? ui.tableWidget.rowCount() возвращает int


Ответы (2 шт):

Автор решения: KoVadim

после in должно быть то, по чему можно итерироваться. Например, диапазон. Это может быть так

for i in range(0,ui.tableWidget.rowCount()):

и теперь i пробежит весь диапазон.

В 2 питоне лучше было писать xrange, хотя range также работает (но не так эффективно).

→ Ссылка
Автор решения: MarianD

Объяснение ошибки

'int' object is not iterable

ui.tableWidget.rowCount() - это число строк вашей таблицы. Скажем, 9.

Тогда из вашей команды

for i in ui.tableWidget.rowCount():

получится

for i in 9:

9 не является ни списком, ни кортежей, ни словарем, по котором бы было возможно проходить (итерировать) - это целое число, т.е. объект типа int (от «integer», целое число).


Теперь к вашей программе:

  1. Первая строка вашей программы (i = 0) не нужна.
  2. Чтобы не надо было всегда писать долгое ui.tableWidget, вы можете присвоить тому имя, например table = ui.tableWidget.

  3. Вы хотите итерировать через порядковые номера строк, значит от 0 до rowCount() - 1. Дла этого фунция range().

Итак, всё может выглядеть так:

table = ui.tableWidget
for i in range(table.rowCount()):
    print(table.item(i, 0))
→ Ссылка