Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
11 / 11 / 2
Регистрация: 30.03.2010
Сообщений: 199

Перебор матриц

11.04.2020, 20:46. Показов 5494. Ответов 7

Студворк — интернет-сервис помощи студентам
Задача:
Напишите программу, на вход которой подаётся прямоугольная матрица в виде последовательности строк, заканчивающихся строкой, содержащей только строку "end" (без кавычек)

Программа должна вывести матрицу того же размера, у которой каждый элемент в позиции i, j равен сумме элементов первой матрицы на позициях (i-1, j), (i+1, j), (i, j-1), (i, j+1). У крайних символов соседний элемент находится с противоположной стороны матрицы.

В случае одной строки/столбца элемент сам себе является соседом по соответствующему направлению.

Sample Input 1:

9 5 3
0 7 -1
-5 2 9
end
Sample Output 1:

3 21 22
10 6 19
20 16 -1
Sample Input 2:

1
end
Sample Output 2:

4

Код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
a = [line.split() for line in iter(input, 'end')]
i = 0
k = 0
l=[]
 
while i < len(a):
    k=0
    while k < len(a[i]):
        if a[i+1]>len(a):
            x = int(a[i-1][k]) + int(a[0][k]) + int(a[i][k-1]) + int(a[i][k+1])
        elif int(a[i][k+1])>len(a[i]):
            x = int(a[i-1][k]) + int(a[i+1][k]) + int(a[i][k-1]) + int(a[i][0])
        elif int(a[i+1])>len(a) and a[i][k+1]>len(a[i]):
            x = int(a[i-1][k]) + int(a[0][k]) + int(a[i][k-1]) + int(a[i][0])
        else:
            x = int(a[i-1][k]) + int(a[i-len(a[i])+1][k]) + int(a[i][k-1]) + int(a[i][k-len(a[k])+1])
        print(x, end=" ")
        k+=1
    print()
    i+=1
Ошибка:

TypeError Traceback (most recent call last)
<ipython-input-31-57b44fd1f4d3> in <module>
7 k=0
8 while k < len(a[i]):
----> 9 if a[i+1]>str(len(a)):
10 x = int(a[i-1][k]) + int(a[0][k]) + int(a[i][k-1]) + int(a[i][k+1])
11 elif int(a[i][k+1])>len(a[i]):
TypeError: '>' not supported between instances of 'list' and 'str'


Что не так?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.04.2020, 20:46
Ответы с готовыми решениями:

Перебор матриц
День добрый. Очень нужна помощь с написанием отдельного фрагмента программы. Задаётся размерность матрицы m, нужно поочерёдно перебирать...

Вычисление детерминанта матрицы,перемножение матриц,разложение матриц,обращение матриц
Добрый день ! Хочу предоставить ссылку на очень полезную информация по работе с матрицами на C#. ...

Полный перебор и сокращенный перебор, путем исключения одного цикла
1) Разработать на основе метода полного перебора программу razmen1 для решения задачи о способах размена купюры достоинством 100 условных...

7
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
11.04.2020, 21:00
Цитата Сообщение от lemuriec Посмотреть сообщение
TypeError: '>' not supported between instances of 'list' and 'str'
Ну он же вам пишет, что не так.

a[i+1] - это список
str(len(a)) - это строка

Интерпретатор не понимает как можно сравнить, что больше список или строка.
0
 Аватар для codcw
815 / 527 / 214
Регистрация: 22.12.2017
Сообщений: 1,495
11.04.2020, 21:00
Цитата Сообщение от lemuriec Посмотреть сообщение
a[i+1]>str(len(a))
a - список списков, str(len(a)) думаю даже объяснять даже не надо
0
11 / 11 / 2
Регистрация: 30.03.2010
Сообщений: 199
11.04.2020, 21:07  [ТС]
unfindable_404, codcw, я понимаю что это список. я вижу ошибку.
При вводе:
1
2
3
end

print(len(a)) равняется 3.
Как тогда сделать так, чтобы при переборе он не переходил за пределы списка?
0
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
11.04.2020, 21:34
Во первых, вам тут явно нужны циклы for, а не while.
По поводу вашего вопроса, когда будете пробегаться по индексам элементов строки (вложенный цикл),
то просто проверяйте, если index + 1 == len(строки), то вместо index + 1 надо брать 0.
1
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
11.04.2020, 23:30
Лучший ответ Сообщение было отмечено lemuriec как решение

Решение

Python
1
2
3
4
5
6
7
a =[list(map(int, line.split())) for line in iter(input, 'end')]
n = len(a)
m = len(a[0])
for i in range(n):
    for j in range(m):
        print(a[i-1][j] + a[(i+1) % n][j] + a[i][j-1] + a[i][(j+1) % m], end=' ')
    print()
1
11 / 11 / 2
Регистрация: 30.03.2010
Сообщений: 199
12.04.2020, 10:13  [ТС]
eaa, это круто... реально. а что делает map?
она применяет функцию int к каждому разделенному input?

Добавлено через 4 минуты
eaa, и еще 1 вопрос если не сложно. а если бы нужно было чтобы инпут принимал только отрицательные и положительные значения что-то типа iter(input, str) будет работать?
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
12.04.2020, 10:17
нет, input принимает только строки
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.04.2020, 10:17
Помогаю со студенческими работами здесь

Перемножение матриц, умножение матриц на вектор, сложение матриц
Помогите пожалуйста написать программу, которая производит основные действия с матрицами произвольных размеров (перемножения 2х матриц,...

Определите класс матриц. Напишите перегруженные конструкторы для создания одномерной и двумерной матриц. В конструкторы передаются размерности матриц
Доброго времени суток всем) Извините если не в том разделе) Не могу понять как решить данную задачу &quot;(Определите класс матриц....

Отсортировать массив матриц по возрастанию значений сумм элементов этих матриц
вот по этому примеру (здесь условие:дан массив квадратных целочисленных матриц. Отсортировать его по возрастанию значений произведений...

Формирование матриц путем транспонирования заданных константами матриц В(3х3) и F(4x4)
Разработать программу формирования матриц А(3x3) и С(4x4) путем транспонирования заданных константами матриц В(3х3) и F(4x4) . Найти...

Разработать класс матриц размера 3 на 3. Переопределить операции сложения, вычитания матриц
Друзья, очень прошу помочь. Необходимо: разработать класс матриц размера 3 на 3. Переопределить операции сложения, вычитания матриц,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru