---
tags: Python Step
---
# Практика по теме 9. Двумерные структуры данных
На сайте http://pythontutor.ru/lessons/2d_arrays/problems/2d_max/ решить все задачи к занятию *9. Двумерные массивы*
Выслать *архив с решениями всех задач (файлы с расширением .py) и скриншотом с сайта*, на котором видно количество решенных задач и имя текущего пользователя.
## [Задача 1. Максимум](http://pythontutor.ru/lessons/2d_arrays/problems/2d_max/)
Найдите индексы первого вхождения максимального элемента. Выведите два числа: номер строки и номер столбца, в которых стоит наибольший элемент в двумерном массиве. Если таких элементов несколько, то выводится тот, у которого меньше номер строки, а если номера строк равны то тот, у которого меньше номер столбца.
Программа получает на вход размеры массива `n` и `m`, затем `n` строк по `m` чисел в каждой.
:::spoiler Решение
``` python
(n, m) = [int(s) for s in input().split()]
a = [[int(s) for s in input().split()] for i in range(n)]
max = a[0][0]
max_i = max_j = 0
for i in range(len(a)):
for j in range(len(a[i])):
if a[i][j] > max:
max = a[i][j]
max_i, max_j = i, j
print(max_i, max_j)
```
:::
## [Задача 2. Снежинка](http://pythontutor.ru/lessons/2d_arrays/problems/snowflake/)
Дано нечетное число `n`. Создайте двумерный массив из `n×n` элементов, заполнив его символами "." (каждый элемент массива является строкой из одного символа). Затем заполните символами "\*" среднюю строку массива, средний столбец массива, главную диагональ и побочную диагональ. В результате звездочки в массиве должны образовывать изображение снежинки. Выведите полученный массив на экран, разделяя элементы массива пробелами.
:::spoiler Решение
``` python
n = int(input())
a = [['.'] * n for i in range(n)]
for i in range(n):
for j in range(n):
if i == (n // 2) or j == (n // 2) or i == j or (i+j)==n-1:
a[i][j] = '*'
print(' '.join(a[i]))
```
:::
## [Задача 3. Шахматная доска](http://pythontutor.ru/lessons/2d_arrays/problems/chessboard/)
Даны два числа `n` и `m`. Создайте двумерный массив размером `n×m` и заполните его символами "." и "\*" в шахматном порядке. В левом верхнем углу должна стоять точка.
:::spoiler Решение
``` python
n, m = [int(i) for i in input().split()]
a = [['.'] * m for i in range(n)]
for i in range(n):
for j in range(m):
if (i + j) % 2 != 0:
a[i][j] = '*'
print(' '.join(a[i]))
```
:::
## [Задача 4. Диагонали, параллельные главной](http://pythontutor.ru/lessons/2d_arrays/problems/diagonals/)
Дано число `n`. Создайте массив размером n×n и заполните его по следующему правилу. На главной диагонали должны быть записаны числа 0. На двух диагоналях, прилегающих к главной, числа 1. На следующих двух диагоналях числа 2, и т.д.
:::spoiler Решение
``` python
n = int(input())
a = [[0] * n for i in range(n)]
for i in range(n):
for j in range(n):
a[i][j] = abs(i - j)
print(' '.join([str(s) for s in a[i]]))
```
:::
## [Задача 5. Побочная диагональ](http://pythontutor.ru/lessons/2d_arrays/problems/secondary_diagonal/)
Дано число `n`. Создайте массив размером `n×n` и заполните его по следующему правилу:
Числа на диагонали, идущей из правого верхнего в левый нижний угол равны 1.
Числа, стоящие выше этой диагонали, равны 0.
Числа, стоящие ниже этой диагонали, равны 2.
Полученный массив выведите на экран. Числа в строке разделяйте одним пробелом.
:::spoiler Решение
``` python
n = int(input())
a = [[1] * n for i in range(n)]
for i in range(n):
for j in range(n):
if j < n - i - 1:
a[i][j] = 0
elif j > n - i - 1:
a[i][j] = 2
print(' '.join([str(s) for s in a[i]]))
```
:::
## [Задача 6. Поменять столбцы](http://pythontutor.ru/lessons/2d_arrays/problems/swap_columns/)
Дан двумерный массив и два числа: `i` и `j`. Поменяйте в массиве столбцы с номерами `i` и `j` и выведите результат.
Программа получает на вход размеры массива `n` и `m`, затем элементы массива, затем числа `i` и `j`.
Решение оформите в виде функции `swap_columns(a, i, j)`.
:::spoiler Решение
``` python
```
:::