Информатика 7–9 классы

9.1. Массивы и строки

Раздел 9. Алгоритмы и программирование (продолжение)

📋 Содержание темы:
  1. Одномерные массивы
  2. Операции с массивами
  3. Поиск и сортировка
  4. Обработка строк
  5. Двумерные массивы (матрицы)
  6. Практические задачи

Одномерные массивы

Массив — это структура данных, хранящая набор элементов одного типа.

В Python массив реализуется с помощью списка (list).

# Создание массива
a = [1, 2, 3, 4, 5]

# Доступ к элементам
print(a[0])   # 1 (первый элемент)
print(a[-1])  # 5 (последний элемент)

# Длина массива
n = len(a)    # 5

Способы создания массива:

# Пустой массив
a = []

# Массив из N нулей
n = 10
a = [0] * n

# Заполнение с клавиатуры
a = [int(x) for x in input().split()]

# Ввод N чисел
n = int(input())
a = []
for i in range(n):
    a.append(int(input()))

Операции с массивами

a = [3, 1, 4, 1, 5]

# Перебор элементов
for x in a:
    print(x)

# Перебор с индексами
for i in range(len(a)):
    print(a[i])

# Сумма элементов
s = sum(a)

# Максимум / минимум
mx = max(a)
mn = min(a)

# Добавление элемента
a.append(9)

# Удаление по индексу
a.pop(2)

Поиск и сортировка

Линейный поиск:

a = [3, 1, 4, 1, 5, 9, 2, 6]
x = 5
found = False
for i in range(len(a)):
    if a[i] == x:
        print(f'Найден на позиции {i}')
        found = True
        break

Сортировка:

a = [3, 1, 4, 1, 5, 9, 2, 6]

# По возрастанию
a.sort()

# По убыванию
a.sort(reverse=True)

Пузырьковая сортировка — простейший алгоритм сортировки (O(n²)).

for i in range(len(a)):
    for j in range(len(a)-1-i):
        if a[j] > a[j+1]:
            a[j], a[j+1] = a[j+1], a[j]

Обработка строк

Строка — это последовательность символов. В Python строки неизменяемы.

s = "Привет, мир!"

# Длина строки
print(len(s))

# Доступ по индексу
print(s[0])     # П
print(s[-1])    # !

# Срез строки
print(s[0:6])   # Привет

# Поиск подстроки
print(s.find("мир"))    # 8

# Замена
print(s.replace("мир", "Python"))

Полезные методы строк:

МетодОписание
s.upper()Верхний регистр
s.lower()Нижний регистр
s.strip()Удаление пробелов
s.split()Разделение на части
' '.join(list)Склеивание из списка

Двумерные массивы (матрицы)

Двумерный массив — это массив, каждый элемент которого является массивом. Используется для представления таблиц и матриц.

Создание двумерного массива:

# Способ 1: вложенные списки
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# Способ 2: создание пустой матрицы N×M
n, m = 3, 4
matrix = [[0] * m for _ in range(n)]

# Способ 3: матрица из ввода
n, m = map(int, input().split())
matrix = []
for i in range(n):
    row = list(map(int, input().split()))
    matrix.append(row)

Доступ к элементам:

# matrix[строка][столбец]
print(matrix[0][0])  # первый элемент (1, 2, 3) → 1
print(matrix[1][2])  # второй строка, третий столбец → 6

# Вывод всей матрицы
for i in range(len(matrix)):
    for j in range(len(matrix[i])):
        print(matrix[i][j], end=' ')
    print()  # перевод строки

Основные операции с матрицами:

# Сумма всех элементов
total = 0
for row in matrix:
    for val in row:
        total += val

# Транспонирование матрицы (3×3)
transposed = [[0]*3 for _ in range(3)]
for i in range(3):
    for j in range(3):
        transposed[j][i] = matrix[i][j]

# Умножение матрицы на число
k = 5
result = [[val * k for val in row] for row in matrix]
Совет: При работе с матрицами удобно использовать функцию len() для определения количества строк и столбцов: n = len(matrix), m = len(matrix[0]).

Практические задачи

Задача 1: Найти второй по величине элемент

a = [3, 1, 4, 1, 5, 9, 2, 6]
first = max(a)
second = None
for x in a:
    if x != first:
        if second is None or x > second:
            second = x
print(f"Второй по величине: {second}")

Задача 2: Подсчёт уникальных слов

text = "мама мыла раму а папа читал книгу а мама пила чай"
words = text.split()
count = {}
for word in words:
    count[word] = count.get(word, 0) + 1

for word, n in count.items():
    print(f"{word}: {n}")

Задача 3: Удаление дубликатов с сохранением порядка

a = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3]
seen = set()
result = []
for x in a:
    if x not in seen:
        seen.add(x)
        result.append(x)
print(result)  # [3, 1, 4, 5, 9, 2, 6]

Задача 4: Поворот матрицы на 90°

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
n = len(matrix)
rotated = [[0]*n for _ in range(n)]
for i in range(n):
    for j in range(n):
        rotated[j][n-1-i] = matrix[i][j]

# Результат: [[7,4,1],[8,5,2],[9,6,3]]

Задача 5: Объединение отсортированных массивов

def merge_sorted(a, b):
    result = []
    i = j = 0
    while i < len(a) and j < len(b):
        if a[i] <= b[j]:
            result.append(a[i])
            i += 1
        else:
            result.append(b[j])
            j += 1
    result.extend(a[i:])
    result.extend(b[j:])
    return result

print(merge_sorted([1,3,5], [2,4,6]))  # [1,2,3,4,5,6]