Вывести на экран элементы, которые являются квадратами какого-либо числа
Дан целочисленный двумерный массив, размерности n х m. Вывести на экран элементы, которые являются квадратами какого-либо числа. У меня получилось написать код для вывода двумерного массива. Но далее нужно каким-то образом осуществить проверку каждого элемента-являются ли они квадратами какого-либо числа. У меня выводится ошибка:TypeError: list indices must be integers or slices, not tuple
from math import sqrt
from random import randint
n, m = 3, 3
a = [[randint(1, 10) for j in range(m)] for i in range(n)]
print (*a,sep='\n')
for k in range (0,m):
for l in range (0,n):
if sqrt(a[k,l])==round(a[k,l]):
print(a[k,l])
Ответы (2 шт):
Автор решения: strawdog
→ Ссылка
Вам @MBo справедливо отметил, что вы неверно обращаетесь к элементам двухмерного списка.
Кроме того, вы можете обращаться к ним напрямую, а не через индексы:
from math import sqrt, modf
from random import randint
n, m = 3, 3
a = [[randint(1, 10) for j in range(m)] for i in range(n)]
for i in a:
for j in i:
if modf(sqrt(j))[0] == 0:
print(j)
1 1 4 1 4
Автор решения: Чмородина
→ Ссылка
- Вы перепутали ширину и высоту массива.
- В индексы передаёте два значения через запятую, Питон не поддерживает такое обращение. Нужно использовать [k][l] вместо [k, l].
- Вы забыли написать корень в сравнении
Код, который у меня получился:
from math import sqrt
from random import randint
n, m = 3, 5
a = [[randint(1, 10) for j in range(m)] for i in range(n)]
print(*a, sep='\n')
for k in range(n):
for l in range(m):
if sqrt(a[k][l]) == round(sqrt(a[k][l])):
print(a[k][l])