Найти в списке кратные элементы
Ввести с помощью генератора случайных чисел целочисленную матрицу размерности n×m (заданы константами). Найти элемент кратный заданному числу. Вывести на экран найденный элемент, его индексы, степень кратности. Я создал матрицу, но не могу найти кратный элемент. Ошибка:
TypeError: unsupported operand type(s) for %: 'list' and 'int'.
import random
n = int(input("Введите значение n: "))
m = int(input("Введите значение m: "))
array = []
q4=[]
bbb=[]
def print_matrix(array):
for i in range(len(array)):
for j in range(len(array[i])):
print(array[i][j], end = ' ')
print()
for i in range(n):
array.append([0]*m)
for i in range(n):
for j in range(m):
x = random.randint(-1,5)
array[i][j] = x
print("Матрица:")
print_matrix(array)
q5=int(input("Введите заданное число: "))
def indx(a = [], val = 0, occurrence_pos = False):
if not occurrence_pos:
for k in range(len(a)):
for j in range(len(a[k])):
if a[k][j] == val:
return (k, j)
else:
return [(k, j) for k in range(len(a)) for j in range(len(a[k])) if a[k][j] == val]
index = indx(array, q5, True)
print(array)
print(type(array))
print("Индекс элемента: ", index)
for i in array:
if i%q5==0:
bbb.append(i)
print(bbb)
Однако, в другом файле по этому принципу все работает
a =[1,2,3,4,5,6,7,8,9,10]
b=[]
print(a)
q=int(input())
for i in a:
if i%q==0:
b.append(i)
print(b)
Ответы (1 шт):
Или я чего не понимаю, или у вас все как-то очень сложно:
import random
n = int(input("Введите значение n: "))
m = int(input("Введите значение m: "))
array = []
for i in range(n):
row=[]
for j in range(m):
row.append(random.randint(-1,5))
array.append(row)
print("Матрица:",array)
q5=int(input("Введите заданное число: "))
for i in range(n):
for j in range(m):
if array[i][j]%q5==0:
print(array[i][j],i,j,int(array[i][j]/q5))
Результат:
Введите значение n: 6
Введите значение m: 8
Матрица: [[4, -1, 4, 3, -1, 2, 0, 3], [4, 1, 4, 0, 2, 4, -1, 1], [1, 4, 5, 4,
3, 1, 5, 1], [1, -1, 5, 5, 3, 4, 4, 1], [2, 3, 3, 4, -1, 1, 4, 0], [5, -1, 2,
1, -1, 2, 1, 0]]
Введите заданное число: 2
4 0 0 2
4 0 2 2
2 0 5 1
0 0 6 0
4 1 0 2
4 1 2 2
0 1 3 0
2 1 4 1
4 1 5 2
4 2 1 2
4 2 3 2
4 3 5 2
4 3 6 2
2 4 0 1
4 4 3 2
4 4 6 2
0 4 7 0
2 5 2 1
2 5 5 1
0 5 7 0
И да, разумеется, 0 считается кратным любому числу. Если это не так, то последнее условие заменить на
array[i][j]!=0 and array[i][j]%q5==0:
Дополнение. Поскольку ответ, как оказалось, труден для понимания ТС, привожу его суперупрощенную версию, отвечая на вопрос "если я вбил в q5 10, то в матрице он должен найти 30 или 100, например". Надеюсь, теперь понятно, что первый ответ не изменяет матрицу, а делает именно то, что вы описали:
array= [[40, -10, 4, 30],[20,3,100,5],[10,20,30,3],[3,3,20,3]]
q5=int(input("Введите заданное число: "))
for i in range(len(array)):
for j in range(len(array[0])):
if array[i][j]%q5==0:
print(array[i][j],int(array[i][j]/q5))
Результат:
Введите заданное число: 10
40 4
-10 -1
30 3
20 2
100 10
10 1
20 2
30 3
20 2