Ответы и решения урока 4.5(Матрицы. Часть 2) на курс «Поколение Python: курс для продвинутых»
На вход программе подаются два натуральных числа n и m — количество строк и столбцов в матрице. Создайте матрицу
mult
размером n×m и заполните её таблицей умножения по формулеmult[i][j] = i * j
.
n, m = int(input()), int(input())
for i in range(n):
for j in range(m):
if j != m - 1:
print(str((i * j)).ljust(2), end=' ')
else:
print(str((i * j)), end='')
print()
На вход программе подаются два натуральных числа n и m — количество строк и столбцов в матрице, затем n строк по m целых чисел в каждой, отделенных символом пробела.
Напишите программу, которая находит индексы (строку и столбец) первого вхождения максимального элемента.
n, m = int(input()), int(input())
matrix = [[int(i) for i in input().split()] for _ in range(n)]
row, col = 0, 0
for i in range(n):
for j in range(m):
if matrix[i][j] > matrix[row][col]:
row,col = i, j
print(row, col)
Напишите программу, которая меняет местами столбцы в матрице.
n, m = int(input()), int(input())
matrix = [[int(i) for i in input().split()] for i in range(n)]
change = [int(i) for i in input().split()]
a, b = change[0], change[1]
for i in range(n):
matrix[i][a], matrix[i][b] = matrix[i][b], matrix[i][a]
for row in matrix:
print(*row)
Напишите программу, которая проверяет симметричность квадратной матрицы относительно главной диагонали.
n = int(input())
matrix = [[int(i) for i in input().split()] for j in range(n)]
flag = True
for i in range(n):
for j in range(n):
if matrix[i][j] != matrix[j][i]:
flag = False
if flag == False:
print('NO')
break
else:
print('YES')
Дана квадратная матрица чисел. Напишите программу, которая меняет местами элементы, стоящие на главной и побочной диагонали, при этом каждый элемент должен остаться в том же столбце (то есть в каждом столбце нужно поменять местами элемент на главной диагонали и на побочной диагонали).
n = int(input())
matr = [[int(i) for i in input().split()] for _ in range(n)]
for i in range(n):
for j in range(n):
if (i == j) or (i == n - 1 - j):
print(matr[n - 1 - i][j], end=' ')
else:
print(matr[i][j], end=' ')
print()
Дана квадратная матрица чисел. Напишите программу, которая зеркально отображает её элементы относительно горизонтальной оси симметрии.
n = int(input())
matrix = [input().split() for _ in range(n)]
for i in range(n // 2):
matrix[i], matrix[n - i - 1] = matrix[n - i - 1], matrix[i]
for row in matrix:
print(*row)
Напишите программу, которая поворачивает квадратную матрицу чисел на 90∘ по часовой стрелке.
n=int(input())
matrix = []
for i in range(n):
temp = [int(num) for num in input().split()]
matrix.append(temp)
for j in range(n):
for i in range(n-1, -1, -1):
print(matrix[i][j], end = ' ')
print()
На шахматной доске 8×8 стоит конь. Напишите программу, которая отмечает положение коня на доске и все клетки, которые бьет конь. Клетку, где стоит конь, отметьте английской буквой
N
, клетки, которые бьет конь, отметьте символами*
, остальные клетки заполните точками.
col, row = input().strip()
coor_col = {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5, 'g': 6, 'h': 7}
coor_row = {'1': 7, '2': 6, '3': 5, '4': 4, '5': 3, '6': 2, '7': 1, '8': 0}
arr = [["N" if [i, j] == [coor_row[row], coor_col[col]] else '.' for j in range(8)] for i in range(8)]
for i in range(8):
for j in range(8):
if (coor_row[row] - i) * (coor_col[col] - j) in [-2, 2]: arr[i][j] = "*"
for line in arr:
print(*line, sep = ' ')
Магическим квадратом порядка nn называется квадратная таблица размера n×n, составленная из всех чисел 1,2,3,…,n2 так, что суммы по каждому столбцу, каждой строке и каждой из двух диагоналей равны между собой. Напишите программу, которая проверяет, является ли заданная квадратная матрица магическим квадратом.
n = int(input()) # размерность матрицы matrix = [[int(i) for i in input().split()] for i in range(n)] # задаем матрицу matrix_90 = [[[] for i in range(n)] for i in range(n)] # матр., повернутая на 90гр count = 0 # счетчик для подсч. равенства строк начальной и повернутой матрицы diag_main = [] # список элементов главной диагонали diag = [] # список элементов побочной диагонали lst = [] # список элементов матрицы для исключения повторений и проверки от 1 до 1**n for i in range(n): diag_main.append(matrix[i][i]) # заполняем список элем-ми гл. диаг. diag.append(matrix[i][n - i - 1]) # заполняем список элем-ми побочн. диаг. for j in range(n): matrix_90[i][j] = matrix[n - j - 1][i] # заполняем повернутую на 90 матрицу if matrix[i][j] not in lst: lst.append(matrix[i][j]) # заполняем список учета всех элементов for i in range(n): if sum(matrix[i]) == sum(matrix_90[i]) == sum(diag_main) == sum(diag): count += 1 print('YES' if count == n and len(lst) == n ** 2 and 0 not in lst else 'NO')
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы
def print_chessboard(knight_pos):
chessboard = [[‘.’ for _ in range(8)] for _ in range(8)]
col = ord(knight_pos[0]) — ord(‘a’)
row = 8 — int(knight_pos[1])
chessboard[row][col] = ‘N’
moves = [(-2, -1), (-1, -2), (1, -2), (2, -1),
(2, 1), (1, 2), (-1, 2), (-2, 1)]
for move in moves:
new_row = row + move[0]
new_col = col + move[1]
if 0 <= new_row < 8 and 0 <= new_col < 8:
chessboard[new_row][new_col] = ‘*’
for row in chessboard:
print(‘ ‘.join(row))
knight_position = input()
print_chessboard(knight_position)
в 9 ошибка в 17 тесте
Обновил решение