Одномерные массивы целых чисел в Python: создание, обработка и поиск
Цели и задачи
- Цель по SMART: к концу урока учащиеся смогут создать в Python список целых чисел, вывести его элементы, вычислить сумму и решить не менее двух практических задач обработки списка по образцу.
- Сформировать представление о списке как об упорядоченной изменяемой последовательности целых чисел и об индексации элементов с нуля.
- Научить создавать список вручную и с помощью генератора, вводить и выводить его элементы, использовать функции sum() и max().
- Сформировать алгоритм поиска максимального элемента и подсчёта элементов, удовлетворяющих условию.
- Развивать аккуратность записи программ, умение проверять результат и снижать тревожность перед заданиями ОГЭ за счёт пошаговой работы по образцу.
Планируемые результаты
Личностные
- Осознают практическую ценность обработки массивов при работе с данными и подготовке к заданиям ОГЭ.
- Проявляют готовность исправлять ошибки в программе без отказа от выполнения задания.
- Формируют ответственное отношение к результату, соблюдая правила работы за компьютером.
- Развивают мотивацию к профессиональному самоопределению в сфере информационных технологий.
Метапредметные
- Читают программный код по шагам и соотносят строки программы с действиями алгоритма.
- Планируют решение задачи: определяют входные данные, условие, переменные и ожидаемый вывод.
- Проверяют результат на конкретном наборе чисел и находят синтаксические и логические ошибки.
- Работают с информацией на экране, используют комментарии и сохраняют результат практической работы.
Предметные
- Знать определения списка и индекса элемента, понимать, что индексация в Python начинается с нуля.
- Уметь создавать списки вида a = [4, 2, 3, 5, 7] и a = list(range(1, 6)).
- Уметь вводить целые числа строкой через пробел с помощью list(map(int, input().split())).
- Уметь выводить список, вычислять сумму элементов и находить максимальный элемент.
- Уметь подсчитывать элементы, удовлетворяющие условию, используя цикл и условный оператор.
Универсальные учебные действия (УУД)
Личностные УУД
- Определяют личный учебный результат: научиться запускать и проверять небольшую программу.
- Понимают, что ошибка в коде является источником информации для коррекции.
- Проявляют самостоятельность при выборе уровня практического задания.
- Оценивают собственную уверенность при работе с новым языком программирования.
Регулятивные УУД
- Формулируют цель практической работы по условию задачи.
- Планируют последовательность действий: создать список, обработать его, вывести результат.
- Осуществляют самопроверку по контрольным значениям и сообщениям интерпретатора.
- Исправляют найденную ошибку и повторно запускают программу.
Познавательные УУД
- Выделяют в коде имя списка, индекс, цикл, условие и команду вывода.
- Сравнивают ручной алгоритм суммирования с использованием функции sum().
- Моделируют работу цикла на списке [4, 1, 6, 3], фиксируя изменение переменной s.
- Устанавливают соответствие между условием задачи и операцией сравнения в Python.
Коммуникативные УУД
- Объясняют соседу по парте, почему первый элемент имеет индекс 0.
- Формулируют вопрос об ошибке и предлагают способ её исправления.
- Сверяют ожидаемый и фактический вывод программы без копирования решения.
- Соблюдают правила цифрового взаимодействия и корректно комментируют работу одноклассника.
Подготовка учителя к уроку
- Подготовить презентацию из прикреплённого материала: определения списка, создание, ввод и вывод, сумма, поиск максимума, подсчёт по условию и сортировка.
- Проверить на всех компьютерах запуск Python или среды программирования, клавиатуру, сохранение файла и вывод в консоль.
- Создать папку урока и файл-заготовку с комментариями: «Создание списка», «Обработка», «Вывод результата».
- Вывести на доску памятку: индекс начинается с 0; список обозначается квадратными скобками; отступ после for и if обязателен.
- Распечатать по одному экземпляру на каждого ученика: карточку с кодом-заготовкой и заданиями трёх уровней.
- Подготовить на каждого ученика лист самопроверки с полями «список», «ожидаемый результат», «фактический результат», «ошибка и исправление».
- Подготовить на экран контрольные списки [4, 1, 6, 3], [3, 8, 2, 10, 5] и [10, 60, 21, 53, 58, 14, 28, 50, 10, 51].
- Организовать работу парами за одним компьютером: один ученик набирает код, второй читает условие и проверяет вывод; через 8 минут роли меняются.
- Подготовить таймер на 25 минут и напоминание о сохранении файла после каждого выполненного задания.
Ход урока
Этап 1. Организационный момент и мотивация (3 мин)
Цель этапа: включить учащихся в работу и показать практическую значимость списков.
Действие учителя | Действие учеников |
|---|---|
Учитель приветствует класс: "Здравствуйте, ребята. Сегодня мы будем работать не с одним числом, а сразу с набором чисел. Такой набор называют одномерным массивом, а в Python для него используется список. Проверьте тетрадь, ручку и готовность компьютера; пока компьютеры не включаем." | Готовят тетради, записывают дату, проверяют рабочее место. |
Учитель показывает на экране последовательность 7, -5, 9, 1, 0 и спрашивает: "Как быстрее найти сумму, максимум или количество чисел больше нуля: вручную для пяти чисел или написать программу, которая обработает любой список? Сегодня мы научимся давать компьютеру такую инструкцию. Это умение встречается в задачах на обработку данных и помогает спокойнее решать задания ОГЭ." | Предполагают: "Программа удобнее для длинного набора чисел"; формулируют ожидаемый результат: "Создать список и получить ответ компьютера". |
Завершение этапа: учитель подводит итог: "Мы увидели, что список позволяет хранить сразу несколько чисел. Сначала разберём его устройство и команды, а затем применим их за компьютером."
Этап 2. Актуализация и выявление затруднения (3 мин)
Цель этапа: актуализировать понятия последовательности и подготовить понимание индексации с нуля.
Действие учителя | Действие учеников |
|---|---|
Учитель записывает на доске: a = [7, -5, 9, 1, 0] и спрашивает: "Сколько элементов находится в списке? Какой элемент стоит первым? Как записать обращение к первому элементу, если нумерация начинается с нуля?" | Считают элементы и отвечают: "Пять; первый элемент 7; обращение a[0]". |
Учитель показывает схему с индексами 0, 1, 2, 3, 4: "Обратите внимание: индекс — это позиция элемента, но отсчёт начинается не с единицы. Что получится при обращении a[2]? Почему запись a[5] для этого списка ошибочна?" | Заполняют в тетради соответствие: a[0]=7, a[1]=-5, a[2]=9, a[3]=1, a[4]=0; отвечают: "a[2] равно 9; индекса 5 в списке нет". |
Завершение этапа: учитель подводит итог: "Главная ловушка — перепутать номер элемента и его индекс. Теперь зафиксируем, как создать список и как передать ему набор чисел."
Этап 3. Открытие нового знания: создание, ввод и вывод списка (7 мин)
Цель этапа: сформировать базовый алгоритм работы со списком и прочитать его по строкам.
Действие учителя | Действие учеников |
|---|---|
Учитель демонстрирует на экране: "Пустой список записывается как a = []. Список с элементами — a = [4, 2, 3, 5, 7]. Диапазон можно создать командой a = list(range(1, 6)); здесь получатся числа от 1 до 5, потому что правая граница не включается. Прочитайте код вместе со мной, не пытаясь пока запомнить всё сразу." | Записывают три способа создания списка, проговаривают: "Квадратные скобки, элементы через запятую, range задаёт последовательность". |
Учитель показывает строку: a = list(map(int, input().split())) и поясняет: "Пользователь вводит целые числа через пробел, например 1 2 3 4 5. split разделяет строку, int превращает каждый фрагмент в число, map применяет преобразование, list создаёт список. Для первого урока можно пользоваться этой строкой как готовым шаблоном." | Переписывают шаблон и подписывают назначение input(), split(), int(). |
Учитель показывает варианты вывода: print(*a), print(a), затем говорит: "Звёздочка выводит элементы через пробел, а без неё Python показывает сам объект списка со скобками. Для проверки результата нам чаще нужен print(*a)." | Сравнивают два вида вывода и формулируют: "print(*a) выводит элементы через пробел, print(a) — список целиком". |
Запись в тетрадях
- Список — упорядоченная изменяемая последовательность элементов; индексы начинаются с 0.
- Создание: a = [4, 2, 3, 5, 7].
- Ввод чисел через пробел: a = list(map(int, input().split())).
- Вывод элементов: print(*a).
Посмотрите план целиком
Зарегистрируйтесь — и откройте план урока по этой теме полностью: цели, ход урока и рефлексия по ФГОС.
Завершение этапа: учитель подводит итог: "Теперь список можно создать и увидеть на экране. Следующий вопрос — как получить из него полезный результат: сумму, максимум или количество элементов по условию."
Этап 4. Теория обработки списка (7 мин)
Цель этапа: разобрать по шагам типовые алгоритмы обработки списка до начала компьютерной практики.
Действие учителя | Действие учеников |
|---|---|
Учитель показывает список [4, 1, 6, 3] и таблицу накопления суммы: "Создаём s = 0, затем проходим по элементам. После добавления 4 получаем 4, после 1 — 5, после 6 — 11, после 3 — 14. Код такой: s = 0; for x in a: s += x; print(s). Важно соблюдать отступ после for." | Заполняют цепочку 0 → 4 → 5 → 11 → 14; отвечают: "Сумма равна 14". |
Учитель показывает: "Для максимума сначала принимаем первый элемент за текущий максимум: max_value = a[0]. Затем сравниваем с ним остальные элементы; если x > max_value, заменяем значение. Встроенная функция max(a) даёт быстрый ответ, но алгоритм цикла важно понимать." | Для списка [3, 8, 2, 10, 5] называют изменения максимума: 3 → 8 → 10; записывают результат 10. |
Учитель объясняет подсчёт: "Счётчик начинается с нуля. Если условие x > 50 истинно, увеличиваем count на единицу: count = 0; for x in a: if x > 50: count += 1. В списке [10, 60, 21, 53, 58, 14, 28, 50, 10, 51] условие выполняют 60, 53, 58 и 51." | Отмечают подходящие элементы и отвечают: "Четыре элемента больше 50". |
Эталон решения
Для a = [4, 1, 6, 3]: s = 0; после обработки 4 получаем s = 4; после 1 — s = 5; после 6 — s = 11; после 3 — s = 14. Для поиска максимума в [3, 8, 2, 10, 5] начальное значение 3 заменяется на 8, затем на 10; итоговый максимум равен 10. В списке с условием x > 50 подходят 60, 53, 58 и 51, поэтому count = 4.
Завершение этапа: учитель подводит итог: "Мы разобрали три одинаково устроенных действия: пройти по элементам, проверить или изменить значение и вывести результат. Теперь переходим к компьютеру: сначала повторим программу по образцу, затем каждый выполнит самостоятельное задание."
Этап 5. Практика на компьютере: выполнение по образцу (8 мин)
Цель этапа: научить учащихся запускать готовую заготовку и изменять в ней список и операцию обработки.
Действие учителя | Действие учеников |
|---|---|
Учитель говорит: "Откройте среду программирования и создайте новый файл. Перепечатайте код: a = [4, 1, 6, 3]; print(*a); print(sum(a)). Сохраните файл. Я не буду оценивать скорость набора: сейчас важны аккуратность и понимание каждой строки." | Открывают среду, набирают код, сохраняют файл, запускают его и получают последовательность 4 1 6 3 и сумму 14. |
Учитель предлагает: "Замените список на [3, 8, 2, 10, 5] и добавьте строку print(max(a)). До запуска запишите ожидаемый максимум в лист самопроверки. Если вывод отличается, сначала сравните скобки, запятые и имя переменной." | Изменяют список, записывают ожидаемый ответ 10, запускают программу, сравнивают фактический результат и исправляют ошибки. |
Учитель раздаёт карточку и говорит: "Теперь роли в паре меняются. Один ученик вводит программу, второй читает каждую строку и задаёт вопрос: что хранится в a, что делает sum, какой результат ожидаем? Через полторы минуты поменяйтесь ролями." | По очереди набирают и проверяют программу, объясняют назначение строк, фиксируют результат в листе самопроверки. |
- Откройте среду программирования и создайте новый файл. Сохраните его под именем «Обработка списка».
- Создайте список: a = [4, 1, 6, 3]. Выведите его элементы через пробел с помощью команды print(*a).
- Вычислите сумму элементов списка с помощью команды print(sum(a)). Ожидаемый результат: 14.
- Замените список на a = [3, 8, 2, 10, 5] и найдите его максимальный элемент с помощью команды print(max(a)). Ожидаемый результат: 10.
- Перед запуском каждой программы запишите ожидаемый результат в лист самопроверки, затем сравните его с фактическим выводом.
- Если программа не запускается, проверьте квадратные скобки, запятые, имя переменной и отступы. После исправления сохраните файл и запустите программу повторно.
- Объясните соседу по парте, что хранится в переменной a, что вычисляет sum(a) и почему результат работы max(a) равен 10.
Завершение этапа: учитель подводит итог: "Базовые команды уже работают. Теперь каждый выбирает посильный уровень и решает задачу самостоятельно, а я помогу тем, кто столкнётся с ошибкой."
Этап 6. Самостоятельная практическая работа на компьютере (12 мин)
Цель этапа: применить алгоритмы создания, вывода и обработки списка в самостоятельном коде.
Действие учителя | Действие учеников |
|---|---|
Учитель объясняет инструкцию: "Выберите один обязательный уровень и, если успеете, переходите дальше. Перед запуском каждой программы запишите ожидаемый результат для предложенного списка. Не копируйте код вслепую: изменяйте только те строки, которые нужны для условия." | Выбирают карточку, читают условие, выделяют входные данные и требуемый вывод. |
Учитель сопровождает базовое задание: "Задание 1. Создайте список a = [7, -5, 9, 1, 0], выведите его элементы, сумму и максимальный элемент. Используйте print(*a), sum(a) и max(a). Если программа не запускается, проверьте квадратные скобки, запятые и регистр букв." | Создают и запускают программу, получают вывод 7 -5 9 1 0, сумму 12 и максимум 9, заносят ответы в лист самопроверки. |
Учитель предлагает повышенное задание: "Задание 2. Для списка a = [10, 60, 21, 53, 58, 14, 28, 50, 10, 51] подсчитайте количество элементов, больших 50. Используйте count = 0, цикл for x in a и условие if x > 50. Отступ после if обязателен." | Пишут программу по шаблону, получают count = 4, проверяют, что число 50 не учитывается, потому что условие строгое: x > 50. |
Учитель даёт дополнительное задание сильным или быстро справившимся: "Задание 3. Для списка [10, 50, 1, 3, 50, 14, 21, 50, 10, 21] найдите индекс первого вхождения числа 50. Можно использовать проверку if 50 in a и a.index(50), но сначала объясните, почему ответ равен 1." | Создают программу, получают индекс 1, объясняют, что индексы начинаются с нуля и первое число 50 стоит на второй позиции. |
- Обязательное задание. Создайте список a = [12, -3, 7, 0, 15, 4]. Выведите его элементы через пробел.
- Вычислите сумму всех элементов списка и выведите результат.
- Найдите максимальный элемент списка и выведите его.
- Подсчитайте количество элементов, больших 5.
- Перед запуском программы запишите ожидаемые результаты в лист самопроверки.
- Проверьте программу на компьютере, сравните ожидаемый и фактический результаты. Если возникла ошибка, найдите и исправьте её.
- Дополнительное задание. Найдите индекс первого вхождения числа 0. Объясните, почему индексы начинаются с нуля.
Эталонное решение для учителя
Итоговый вид программы для этапа 6:
a = [12, -3, 7, 0, 15, 4]
print("Элементы списка:", *a)
print("Сумма:", sum(a))
print("Максимальный элемент:", max(a))
count = 0
for x in a:
if x > 5:
count += 1
print("Количество элементов, больших 5:", count)
if 0 in a:
print("Индекс первого нулевого элемента:", a.index(0))
else:
print("Нулевой элемент не найден")
Результат работы программы:
Элементы списка: 12 -3 7 0 15 4
Сумма: 35
Максимальный элемент: 15
Количество элементов, больших 5: 3
Индекс первого нулевого элемента: 3
a = [12, -3, 7, 0, 15, 4]
print("Элементы списка:", *a)
print("Сумма:", sum(a))
print("Максимальный элемент:", max(a))
count = 0
for x in a:
if x > 5:
count += 1
print("Количество элементов, больших 5:", count)
if 0 in a:
print("Индекс первого нулевого элемента:", a.index(0))
else:
print("Нулевой элемент не найден")
Результат работы программы:
Элементы списка: 12 -3 7 0 15 4
Сумма: 35
Максимальный элемент: 15
Количество элементов, больших 5: 3
Индекс первого нулевого элемента: 3
Задание 1: a = [7, -5, 9, 1, 0]; print(*a); print(sum(a)); print(max(a)). Сумма: $7 + (-5) + 9 + 1 + 0 = 12$, максимум — 9. Задание 2: count = 0; для 60, 53, 58 и 51 условие x > 50 истинно, поэтому счётчик увеличивается четыре раза. Задание 3: в списке [10, 50, 1, 3, 50, 14, 21, 50, 10, 21] первый элемент 50 имеет индекс 1.
Завершение этапа: учитель подводит итог: "Вы прошли полный путь от списка до результата программы. Сейчас остановите выполнение, сохраните файл и ответьте на вопросы рефлексии: это поможет понять не только правильность ответа, но и то, какой шаг алгоритма ещё требует тренировки."
Этап 7. Рефлексия и подведение итогов (5 мин)
Цель этапа: проверить понимание ключевых понятий и зафиксировать индивидуальный результат урока.
Действие учителя | Действие учеников |
|---|---|
Учитель проводит приём "Светофор": "Покажите зелёный сигнал, если можете создать список и вывести его; жёлтый — если нужна подсказка; красный — если пока не понимаете индексы или цикл. Это не отметка, а способ определить, чем заняться дальше." | Показывают выбранный сигнал и записывают в листе один навык, который уже получается, и один навык для повторения. |
Учитель задаёт вопросы: "С какого числа начинается индекс? Чем отличается print(*a) от print(a)? Как работает счётчик? Что произойдёт, если написать x >= 50 вместо x > 50?" | Отвечают: "С нуля"; "первый вариант выводит элементы через пробел, второй — список со скобками"; "счётчик увеличивается при выполнении условия"; "число 50 тоже будет учтено". |
Учитель организует "Билет на выход": "На отдельной строке напишите одну команду для суммы списка и объясните, почему при обращении к первому элементу используется индекс 0. Сдайте лист при выходе." | Записывают: s = sum(a) и краткое объяснение индексации, сдают билет. |
Завершение этапа: учитель подводит итог: "Сегодня вы создали первый рабочий код обработки массива. На следующем уроке продолжим обработку списков и разберём сортировку и поиск элементов, а ваши сегодняшние программы останутся основой для новых задач."
Критерии оценивания практической работы
- "5" — выполнено базовое задание и минимум одно повышенное; программы запускаются без ошибок, результаты для суммы, максимума и подсчёта совпадают с эталоном, ученик может объяснить назначение основных строк.
- "4" — выполнено базовое задание и частично повышенное; допущена одна исправленная ошибка в синтаксисе или оформлении, алгоритм обработки списка объяснён с небольшой помощью.
- "3" — создан список, выполнен его вывод и получен хотя бы один верный результат по образцу; ученик нуждался в существенной подсказке, но смог исправить ошибку и сохранить программу.
Рефлексия
Вопрос для ученика | Цель вопроса |
|---|---|
Что такое список и с какого числа начинается его индексация? | Проверка осознания базового понятия и типичной ошибки с индексом. |
Какую команду использовали для вычисления суммы всех элементов? | Выявление понимания функции sum() и её назначения. |
Как программа определяет, какие элементы нужно посчитать? | Проверка связи между условием задачи, if и счётчиком. |
Что оказалось самым трудным: набор кода, отступы, понимание цикла или проверка результата? | Выявление индивидуальных точек затруднения для последующей дифференциации. |
Завершающее слово учителя
"Сегодня мы научились хранить целые числа в списке и обрабатывать их с помощью Python. Главное правило урока — индексы начинаются с нуля, а после for и if необходим правильный отступ. Ошибка в программе не означает неудачу: её нужно прочитать, найти строку и проверить по алгоритму. На следующем уроке мы продолжим поиск элементов и познакомимся с сортировкой списка."
Домашнее задание
Что задать | Зачем |
|---|---|
Составить и проверить программу для списка [7, -5, 9, 1, 0]: вывести элементы, сумму и максимальный элемент. Оформить три ожидаемых результата в тетради. | Закрепляет создание, вывод и обработку списка; при проверке смотреть на индексы, скобки, запятые и совпадение результатов. |
Составить программу для списка из десяти целых чисел, которая подсчитывает количество элементов, больших 50, и отдельно вычисляет их сумму. | Закрепляет цикл, условие и счётчик; при проверке смотреть, не учитывается ли число 50 при условии x > 50. |
Для списка [10, 50, 1, 3, 50, 14, 21, 50, 10, 21] вывести индекс первого вхождения числа 50, а при отсутствии такого числа вывести сообщение «Элемент не найден». | Развивает алгоритм последовательного поиска и работу с условием; при проверке смотреть на результат 1 и корректную обработку отсутствующего элемента. |
Контрольные вопросы перед выходом: "Что хранится в переменной a? Почему первый элемент имеет индекс 0? Как вывести элементы списка через пробел? Что делает sum(a)? В какой момент увеличивается count?"