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

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

11.04.2020, 20:46. Показов 5524. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru