Массивы и строки, 9 класс: примеры с решением

Массивы и строки: как работают индексы, срезы и двумерные массивы в Python и Паскале. Ниже разбор задания и частые ошибки, а выше решённые задания учеников.

4 задания9 класс

Массивы и строки: что это и чем отличаются

Массив — набор элементов одного типа, каждый из которых лежит под своим номером. Номер называется индексом. Строка — последовательность символов, и у неё тоже есть индексы, поэтому многие приёмы работают одинаково.

В Паскале и C строка по сути массив символов. В Python вместо массива чаще используют список (list), и в нём могут лежать числа, строки и другие списки одновременно.

Главное отличие: строку в Python изменить нельзя. Запись s[0] = "A" даст ошибку, нужно собрать новую строку. Список менять можно: a[0] = 5.

В заданиях по теме часто встречается массив A с индексами от 0 до 9. Это десять элементов, а не девять и не одиннадцать. Прежде чем разбирать программу, выпиши значения вместе с индексами. Общие приёмы написания таких программ описаны в теме основы программирования.

Индексы и срезы: строки и массивы в питоне и Паскале

В Python индексы начинаются с 0. Отрицательный индекс считает с конца: у a = [5, 8, 2, 9] значение a[0] равно 5, а a[-1] равно 9.

Срез записывается как [начало:конец:шаг], причём элемент с индексом «конец» в срез не входит. Для s = "программа" получаем:

  • s[1:4] даёт "рог" (индексы 1, 2, 3);
  • s[::-1] даёт строку задом наперёд;
  • a[::2] берёт элементы с индексами 0, 2, 4 и так далее;
  • a[1::2] берёт элементы с индексами 1, 3, 5 и так далее.

Полезные методы: s.split("_") режет строку по разделителю и возвращает список, s.count("a") считает вхождения, s.upper() и s.lower() меняют регистр, len(s) возвращает длину. У списков есть sort() и функция sum().

В Паскале всё немного иначе. Массив объявляют как array[0..9] of integer, границы индексов задаёшь сам. Символы в строке нумеруются с 1: s[1] — первая буква, а длину даёт length(s).

Двумерный массив: строки и столбцы

Двумерный массив — это таблица. В Python её делают как список списков:

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

Первый индекс задаёт строку, второй — столбец. Поэтому a[1][2] равно 6: вторая строка, третий столбец (нумерация с нуля). Количество строк равно len(a), количество столбцов равно len(a[0]).

Типичные действия:

  • сумма строки номер i: sum(a[i]);
  • сумма столбца номер j: sum(row[j] for row in a);
  • главная диагональ квадратной таблицы: элементы a[i][i].

В Паскале тот же массив объявляют как array[1..2, 1..3] of integer, а обращаются к элементу так: a[i, j].

Разбор задания по шагам

Определи, что напечатает программа:

s = "map_of_lists"
r = ""
for word in s.split("_"):
    r += word[-1] + str(len(word))
print(r[::-1])

Шаг 1. Разбей строку по символу «_». Получится список ["map", "of", "lists"].

Шаг 2. Пройди по словам и дополни r. Для каждого слова берём последнюю букву word[-1] и длину слова:

  • map: буква p, длина 3, добавляем p3;
  • of: буква f, длина 2, добавляем f2;
  • lists: буква s, длина 5, добавляем s5.

Итог: r = "p3f2s5".

Шаг 3. Срез r[::-1] переворачивает строку целиком, в том числе цифры.

Ответ: 5s2f3p. Записывай результат по шагам, как здесь: так легче заметить, где потерялась цифра или буква.

Где ошибаются чаще всего

Конец среза. s[1:4] содержит три символа, а не четыре. Индекс 4 уже не входит.

Нумерация. В Python и в массивах с границей 0..9 счёт идёт с нуля, а в строках Паскаля с единицы. Последний индекс строки в Python равен len(s) - 1.

Сравнение чисел как строк. Если из строки "Аня:10" взять "10" и не превратить в число, то при сортировке "10" окажется меньше "9", ведь строки сравниваются посимвольно. Сначала int(...), потом сравнение. Чтобы не учитывать регистр имён, в ключ сортировки добавляют name.lower().

Результат sort(). Метод a.sort() меняет список на месте и возвращает None. Запись b = a.sort() оставит в b пустое значение. Если нужен новый список, используй sorted(a).

Строка и столбец. В a[i][j] первым идёт номер строки. Перепутанные i и j дают чужой элемент или выход за границы. Для работы с повторяющимися действиями пригодятся подпрограммы и рекурсия, а общий план решения помогает составить тема алгоритмы и исполнители.

Какие задания присылают и как пользоваться страницей

По этой теме ученики 9 класса присылают задания четырёх видов: выполнить фрагмент с одномерным массивом и найти значение переменной, определить вывод программы со строкой (split, срезы, count), посчитать результат со списком (генератор списка, sort с ключом, срезы) и дописать функцию-ключ для сортировки записей.

Найди в списке выше задание, похожее на твоё, и сравни ход решения со своим. Если подходящего нет, сфотографируй условие и отправь: придёт решение с ходом, а не только с ответом.

Частые вопросы

Чем отличается массив от строки?

Массив хранит элементы любого одного типа, а строка хранит только символы. В Python строку нельзя изменить по месту, а список можно.

Как в двумерном массиве определить строки и столбцы?

В записи a[i][j] первый индекс i означает строку, второй индекс j означает столбец. Число строк равно len(a), число столбцов равно len(a[0]).

Что значит срез s[::-1]?

Это срез с шагом -1: он идёт по строке с конца в начало и возвращает её перевёрнутую копию. Исходная строка не меняется.

С какого индекса начинаются строки в Паскале?

С единицы: s[1] — первый символ, а длину строки возвращает length(s). В Python нумерация строк начинается с нуля.

Массивы и строки, 9 класс: примеры с решением | ДЗмэн