Проблема с выводом вертикальной таблцы пифагора через вложенные списки (python3)
Имеется следующий код:
def fill_1(text):
a, b = [int(i) for i in text.split(" ")]
nums = [str(i) for i in range(1, a * b + 1)]
matrix = [[] for _ in range(b)]
for j in range(b):
for i in range(a):
matrix[i].append(nums[0].ljust(3))
nums.remove(nums[0])
for i in range(a):
print(" ".join(matrix[i]))
fill_1(input())
Если на ввод подается строка, где a <= b, то все выводится корректно, например:
input: 4 5
output:
1 5 9 13 17
2 6 10 14 18
3 7 11 15 19
4 8 12 16 20
если же a > b, то на выводе следующая ошибка, например:
input: 5 4
output:
Traceback (most recent call last):
File "file.py", line 13, in <module>
fill_1(input())
File "file.py", line 7, in fill_1
matrix[i].append(nums[0].ljust(3))
IndexError: list index out of range
Судя по имени ошибки, проблема в том, что счетчик выходит за границу списка, однако это не так, что делать?
Ответы (2 шт):
Автор решения: GrAnd
→ Ссылка
Вы создаёте матрицу с количеством строк = b:
matrix = [[] for _ in range(b)]
A итерируетесь по ним до значения a:
for i in range(a):
matrix[i].append(...)
Так что поправьте на:
matrix = [[] for _ in range(a)]
Автор решения: pankazimierz
→ Ссылка
Cпасибо @GrAnd за помощь
def fill_1(text):
a, b = [int(i) for i in text.split(" ")]
nums = [str(i) for i in range(1, a * b + 1)]
matrix = [[] for _ in range(a)]
for j in range(b):
for i in range(a):
matrix[i].append(nums[0].ljust(3))
nums.remove(nums[0])
for i in range(a):
print(" ".join(matrix[i]))
fill_1(input())