#python #python_3x #массивы #numpy
Закрыт. Этот вопрос необходимо уточнить или дополнить подробностями. Ответы на него в данный момент не принимаются. Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение. Закрыт 3 месяца назад. Есть массив m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] на вход подается матрица n*m, на выходе должна получиться матрица такой же размерности но состоящая из суммы смежных элементов.например элемент [0][0] новой матрицы [i-1][j]+[i+1][j]+[i][j-1]+[i][j+1] это 7+4+3+2=16. Вариант вывода: [16, 17, 18] [19, 20, 21] [22, 23, 24]
Ответы
Ответ 1
Решал аналогичную задачу на Stepik, давно было дело. Единственная разница с вашим условием в том, что строки подавались пользовательским вводом последовательно и последняя строка содержала строку "end". Мое решение не самое лаконичное, но, возможно, оно поможет вам. # В этом блоке я просто как бы получаю вашу переменную m, но с пользовательского ввода enter = input() matrix = [] while enter != 'end': nums = [int(x) for x in enter.split()] matrix.append(nums) enter = input() # Затем создаю матрицу такого же размера, но состоящую из нулей new_matrix = [[0 for j in range(len(i))] for i in matrix] # А потом наполняю новую матрицу значениями for i in range(len(matrix)): for j in range(len(matrix[i])): if i < len(matrix)-1 and j < len(matrix[i])-1: x = sum([matrix[i - 1][j], matrix[i + 1][j], matrix[i][j - 1], matrix[i][j + 1]]) elif i == len(matrix)-1 and j < len(matrix[i])-1: x = sum([matrix[i - 1][j], matrix[0][j], matrix[i][j - 1], matrix[i][j + 1]]) elif i < len(matrix)-1 and j == len(matrix[i])-1: x = sum([matrix[i - 1][j], matrix[i + 1][j], matrix[i][j - 1], matrix[i][0]]) elif i == len(matrix)-1 and j == len(matrix[i])-1: x = sum([matrix[i - 1][j], matrix[0][j], matrix[i][j - 1], matrix[i][0]]) new_matrix[i][j] = x # А потом печатаю ответ (так нужно было по условию задачи) for row in new_matrix: print(*row)
Комментариев нет:
Отправить комментарий