Найти - Пользователи
Полная версия: Вывести матрицу того же размера, у которой каждый элемент в позиции i, j равен произведению элементов первой матрицы
Начало » Python для экспертов » Вывести матрицу того же размера, у которой каждый элемент в позиции i, j равен произведению элементов первой матрицы
1
Bull787
Добрый вечер. Выручайте, нужна ваша помощь.
Напишите программу, на вход которой подаётся прямоугольная матрица в виде последовательности строк, заканчивающиеся строкой, содержащей только строку ‘end’. Программа должна вывести матрицу того же размера, у которой каждый элемент в позиции I,j равен произведению элементов первой матрицы на позициях (I-1, j), (I+1, j), (I, j-1), (I, j+1).
У крайних символов соседний элемент находится с противоположной стороны матрицы.
В случае одной строки/столбца элемент сам себе является соседом по соответствующему направлению.

Должно получиться примерно так:

5 7 4 1
7 9 6 3
2 6 7 9
end

98 1080 168 540
270 1764 756 378
1890 882 1296 42

2
end

2
end
py.user.next
Сам что-нибудь сделал? Хотя бы ввод матрицы и вывод матрицы сделай, без преобразований.
Bull787
py.user.next
Сам что-нибудь сделал? Хотя бы ввод матрицы и вывод матрицы сделай, без преобразований.
Да, у меня есть код, но здесь элемент в позиции i,j равен СУММЕ ЭЛЕМЕНТОВ первой матрицы на позициях (I-1, j), (I+1, j), (I, j-1), (I, j+1)., а мне нужно, чтобы элемент в позиции i,j был равен ПРОИЗВЕДЕНИЮ элементов первой матрицы на позициях (I-1, j), (I+1, j), (I, j-1), (I, j+1). Прошу пожалуйста вас помочь.
Вот сам код.
 n = ''
m = []
while True:
    n = str(input()) 
    if n == 'end':
        break
    m.append([int(s) for s in n.split()]) 
li, lj = len(m), len(m[0])
new = [[sum([m[i-1][j], m[(i+1)%li][j], m[i][j-1], m[i][(j+1)%lj]]) for j in range(lj)] for i in range(li)]
for i in range (li):
    for j in range (lj):
        print(new[i][j], end =' ')
    print()
py.user.next
Найти произведение элементов списка можно так
  
>>> import functools
>>> import operator
>>> 
>>> lst = [1, 2, 3, 4, 5]
>>> 
>>> out = functools.reduce(operator.mul, lst)
>>> out
120
>>>
Vladimirv
Bull787
Классный код, только вывод матрицы подкачал:
 for lst in new:
    print(*lst)
И ещё:
 n = '' # не нужная строка
n = str(input())  # str - не нужен, там и так строка
Bull787
py.user.next
Найти произведение элементов списка можно так
Большое спасибо
Bull787
Vladimirv
Большое спасибо
Vladimirv
Bull787
Держи)
 new = [[m[i-1][j] * m[(i+1)%li][j] * m[i][j-1] * m[i][(j+1)%lj] for j in range(lj)] for i in range(li)]
Bull787
Vladimirv
БОЛЬШОЕ спасибо вам
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB