0
1 комментарий

Изучаю програмирование в Питон. Дано задание. Двумерный список в некоторых ячейках которого символы. Словарь определяет каждый символ как какое-нибудь животное. Одна формула проверяет каждую ячейку (делать это предписано с помощью цикла for). Другая выводит на печать данные о каждой ячейке, в которой есть символ. например: «В ячейке (1, 0) есть осёл.» Программа должна работать с разными двумерными списками, в которых может быть разное количество строк и столбцов.

Сначала я написал такой код для формулы, проверяющей ячейки:

for alkio in lista:
            for i in range(len(lista)):
                for j in range(len(lista[i])):
                   a = lista[i][j]
                   ruutu = tutki_ruutu(a, i, j)

У меня для проверки список с тремя вложенными списками по 5 элементов. То есть 3 строки, 5 столбцов. Программа работала, но выводила рузультат трижды. Тогда я изменил строчку for i:

for alkio in lista:
for i in range(len(lista[0])):
for j in range(len(lista[i])):
a = lista[i][j]
ruutu = tutki_ruutu(a, i, j)

Программа выводила правильный результат (по крайней мере для моего короткого списка) + сообщение об ошибке. Тогда я добавил except:

try:
for alkio in lista:
for i in range(len(lista[0])):
for j in range(len(lista[i])):
a = lista[i][j]
ruutu = tutki_ruutu(a, i, j)
except IndexError:
ruutu = tutki_ruutu(a, i, j)

Для моего списка программа вывела правильный результат. Но когда я отправил её на сайт своего учебного учреждения, оказалось, что при работе с более крупными двумерными списками программа выдаёт неверные результаты. В очень больших списках обычно последний ряд не обрабатывается, а результаты других выдаются в многократном количестве. В списках поменьше добаляется лишний элемент на лишней несуществующей строке.

Подскажите, пожалуйста, что и как нужно исправить.

Новый комментарий
Andrei добавлен комментарий

Проблему решил сам, наконец-то. В изначальном варианте первая строка была лишней…

Добавить комментарий