Обработка символьных данных. Встроенные функции для обработки строк
Цели и задачи
- Цель урока по SMART: к концу урока научиться применять встроенные функции обработки строк для получения длины строки, изменения регистра, поиска и замены фрагментов, выделения частей строки и проверки результата на тестовых данных.
- Познакомить учащихся с назначением и синтаксисом основных строковых функций выбранного языка программирования: len, lower, upper, find, replace, substring или их аналогов.
- Сформировать умение моделировать обработку строки как последовательность преобразований «исходные данные — функция — результат».
- Развивать навыки анализа условия, выбора подходящей функции, проверки граничных случаев и исправления ошибок в программном коде.
- Воспитывать самостоятельность при выборе уровня задания, ответственное отношение к тестированию программы и интерес к применению обработки текста в будущей профессиональной деятельности.
Планируемые результаты
Личностные
- Осознавать практическую значимость обработки текстовых данных для программирования, поиска информации и автоматизации рутинных операций.
- Проявлять учебную самостоятельность при выборе задания базового, повышающего или продвинутого уровня.
- Понимать ценность аккуратной проверки программ и ответственности за корректность обработки пользовательских данных.
- Формировать готовность к осознанному выбору дальнейшего образовательного и профессионального маршрута в сфере информационных технологий.
Метапредметные
- Уметь преобразовывать словесное условие в модель обработки строки и последовательность операций.
- Уметь находить необходимую информацию в справочном материале и выбирать функцию по её назначению.
- Планировать решение, прогнозировать результат, сравнивать его с фактическим и корректировать программу.
- Аргументированно объяснять выбор функции, работать в паре и представлять результат в краткой форме.
Предметные
- Знать понятия «символьные данные», «строка», «индекс символа», «подстрока», «метод» и «встроенная функция».
- Уметь определять длину строки, изменять регистр символов, находить и заменять фрагменты текста.
- Уметь получать символ или подстроку по индексу и учитывать особенности нумерации позиций в выбранном языке.
- Уметь составлять и тестировать короткие программы обработки строк, включая обработку пробелов и отсутствие искомого фрагмента.
- Владеть приёмом моделирования строковых операций в виде таблицы «вход — действие — выход».
Универсальные учебные действия (УУД)
Личностные УУД
- Определяют личную цель работы со строковыми функциями и связывают её с задачами программирования.
- Проявляют познавательный интерес к исследованию поведения функций на разных входных данных.
- Оценивают собственную готовность применять алгоритм без пошаговой подсказки.
- Принимают необходимость исправления ошибки как часть процесса разработки программы.
Регулятивные УУД
- Формулируют цель практической работы и составляют краткий план решения.
- Распределяют время между анализом условия, написанием кода и тестированием.
- Сверяют результат с ожидаемым выводом и находят причину расхождения.
- Выбирают уровень сложности и при необходимости переходят к заданию с поддержкой.
Познавательные УУД
- Выделяют в условии операции над строкой и соотносят их с функциями.
- Строят модель преобразования строки в виде таблицы или цепочки операций.
- Сравнивают действие функций поиска и замены на разных примерах.
- Анализируют код, находят синтаксическую или логическую ошибку и предлагают исправление.
- Используют знаково-символические средства для записи индексов, подстрок и результатов вычислений.
Коммуникативные УУД
- Формулируют точный вопрос о поведении функции и объясняют его партнёру.
- Согласовывают в паре модель решения и распределяют роли программиста и тестировщика.
- Аргументируют выбор функции, используя назначение и ожидаемый результат.
- Корректно дают обратную связь по критериям «работает — объяснено — протестировано».
Подготовка учителя к уроку
- Подготовить компьютеры с установленной средой программирования на изучаемом языке и проверить запуск короткой программы со строковой переменной.
- Распечатать по одному листу на ученика с краткой памяткой: длина строки, изменение регистра, поиск, замена, индексирование и выделение подстроки.
- Распечатать карточки трёх уровней: по одной базовой и повышающей на каждого ученика, продвинутые карточки — по одной на парту.
- Подготовить таблицу моделирования «Исходная строка | Операция | Промежуточный результат | Итог» — по одной на ученика.
- Вывести на доску или экран проблемный пример: строка « Ivanov_Ivan » и вопрос «Как получить аккуратную фамилию и имя без лишних пробелов?».
- Записать на доске обозначения: s — строка, len(s) — длина, s[i] — символ с индексом i, find — поиск, replace — замена.
- Подготовить четыре тестовые строки: пустую, строку из одного символа, строку с пробелами и строку без искомого фрагмента.
- Проверить проектор, локальную сеть или общий экран для демонстрации кода; подготовить маркеры и стикеры для рефлексии.
- Подготовить эталонные тесты и критерии: корректность результата, объяснение модели, проверка минимум двух случаев.
Ход урока
Этап 1. Организационный момент и мотивация (3 мин)
Цель этапа: включить учащихся в исследовательскую работу и показать практическую задачу обработки текстовых данных.
Время | Действие учителя | Действие учеников |
|---|---|---|
1 мин | Учитель приветствует класс и говорит: "Сегодня мы будем работать не с готовыми рецептами, а как исследователи. На экране вы видите строку « Ivanov_Ivan ». Представьте, что это данные из анкеты пользователя. Как превратить её в аккуратную запись?" Учитель показывает строку и не сообщает готовую последовательность действий. | Рассматривают пример, называют проблемы: «лишние пробелы», «нижнее подчёркивание», «нужно изменить регистр». |
2 мин | Учитель организует приём «Подумай — обсуди в паре — поделись»: "Сначала 30 секунд сформулируйте возможные операции самостоятельно, затем обсудите их с соседом. Не называйте пока конкретные функции — опишите действия над строкой." Учитель фиксирует на доске ответы: убрать пробелы, заменить символ, изменить регистр, проверить результат. | Индивидуально записывают операции, затем обсуждают их в парах и предлагают последовательность преобразований: «очистить строку, заменить подчёркивание, привести слова к нужному виду». |
Завершение этапа: учитель подводит итог: "Мы увидели, что одна строка может потребовать нескольких последовательных операций. Теперь выясним, какие встроенные средства позволяют выполнять их быстро и надёжно."
Этап 2. Актуализация знаний и выявление затруднения (5 мин)
Цель этапа: актуализировать представления о строковой переменной, индексах и алгоритме обработки данных.
Время | Действие учителя | Действие учеников |
|---|---|---|
2 мин | Учитель выводит на экран код: `s = "Python"`. Реплика: "Что хранится в переменной s? Как обратиться к первому символу? Как определить последний символ, если длина строки заранее неизвестна? Запишите предполагаемые ответы и объясните обозначения." | Записывают: «в переменной хранится строка», «первый символ имеет индекс 0», «длину можно получить функцией len». Формулируют обращения к символам в синтаксисе изучаемого языка. |
3 мин | Учитель предлагает мини-тест «Светофор»: "Покажите зелёную карточку, если утверждение верно, красную — если неверно, жёлтую — если нужно уточнение. Строка состоит из символов; пробел является символом; поиск всегда находит фрагмент; индексация начинается с единицы." После каждого ответа просит назвать причину. | Отмечают утверждения и поясняют: «пробел тоже символ», «поиск может не найти фрагмент», «в Python индексация начинается с нуля». Фиксируют возникшее затруднение: не всегда знают, какую функцию выбрать и как обработать отсутствие результата. |
Завершение этапа: учитель подводит итог: "Мы вспомнили, что строка — это последовательность символов с индексами, но для реальной обработки одной индексации недостаточно. Сформулируем цель и построим модель действий."
Этап 3. Постановка проблемы и целеполагание (4 мин)
Цель этапа: сформулировать учебную задачу и определить последовательность исследовательских действий.
Время | Действие учителя | Действие учеников |
|---|---|---|
2 мин | Учитель показывает задачу: "Дана строка с названием файла: « Отчёт_октябрь_2026.TXT ». Нужно получить строку без внешних пробелов, заменить подчёркивания пробелами и привести расширение к нижнему регистру. Как решить задачу, если не перебирать каждый символ вручную?" Учитель принимает гипотезы, но не исправляет их сразу. | Формулируют гипотезы: «использовать готовые функции», «разделить обработку на этапы», «проверить результат после каждого этапа». |
2 мин | Учитель организует «Снежный ком»: "Сначала каждый запишите цель урока одним предложением. Объединитесь в пары и выберите наиболее точную формулировку, затем две пары сравнят варианты." Учитель помогает уточнить измеримый результат. | Формулируют цель: «научиться выбирать и применять строковые функции для преобразования текста и проверять результат на тестах». Записывают план: узнать назначение функций, построить модель, написать код, протестировать. |
Посмотрите план целиком
Зарегистрируйтесь — и откройте план урока по этой теме полностью: цели, ход урока и рефлексия по ФГОС.
Завершение этапа: учитель подводит итог: "Цель определена: нам нужно не просто запомнить названия функций, а уметь выбрать их для конкретной строки и доказать тестированием, что программа работает."
Этап 4. Открытие нового знания методом моделирования (9 мин)
Цель этапа: исследовать назначение основных строковых функций и представить обработку строки как цепочку преобразований.
Время | Действие учителя | Действие учеников |
|---|---|---|
3 мин | Учитель демонстрирует на экране таблицу: «Исходная строка | Операция | Результат». Реплика: "Запишем модель для строки « AbC_123 ». Первый вопрос: что нужно узнать о строке? Функция длины позволяет получить количество символов: `len(s)`. Для изменения регистра применяются `lower()` и `upper()`. Назначение каждой функции проверяем не по памяти, а экспериментом." Учитель запускает несколько примеров. | Заполняют первые строки модели: `len(s)` — длина; `s.lower()` — нижний регистр; `s.upper()` — верхний регистр. Сравнивают фактический вывод с прогнозом. |
3 мин | Учитель продолжает: "Теперь найдём фрагмент. Функция `find` возвращает позицию первого вхождения, а при отсутствии фрагмента — специальный результат, например `-1`. Функция `replace` создаёт новую строку, где найденные вхождения заменены. Важно: исходная строка не должна считаться изменённой автоматически. Проверим это отдельным выводом." Учитель показывает строку до и после операции. | Заполняют модель для поиска и замены, прогнозируют результат для `s.find("_")` и `s.replace("_", " ")`. Делают вывод: «результат замены нужно присвоить переменной, если требуется сохранить его». |
3 мин | Учитель показывает индексирование и срез: "Символ можно получить по индексу, а последовательность символов — срезом. Но границы нужно проверять. Сравним строку «Код» и пустую строку. Какие операции безопасны для пустой строки?" Учитель фиксирует на доске цепочку: `s = s.strip(); s = s.replace("_", " "); s = s.lower()`. | В парах достраивают модель для строки « Код_11 » и называют промежуточные результаты. Указывают риск ошибки при обращении к символу пустой строки и необходимость тестов. |
Запись в тетрадях
Записать: строка — последовательность символов; `len(s)` возвращает длину; `s.lower()` и `s.upper()` меняют регистр результата; `s.find(t)` ищет фрагмент; `s.replace(a, b)` заменяет фрагмент; `s[i]` обращается к символу, срез выделяет подстроку. Обработка моделируется цепочкой: входная строка → операция → промежуточный результат → итог.
Завершение этапа: учитель подводит итог: "Мы получили не список разрозненных команд, а рабочую модель: каждая функция выполняет одну операцию, а результат одной операции становится входом для следующей. Теперь проверим эту модель на небольших задачах."
Этап 5. Первичное закрепление в парах (7 мин)
Цель этапа: закрепить выбор функций и последовательность преобразований на практической задаче.
Время | Действие учителя | Действие учеников |
|---|---|---|
2 мин | Учитель раздаёт карточки базового уровня: "Для строки `s = " School_2026 "` составьте таблицу модели и запишите цепочку команд: убрать внешние пробелы, заменить подчёркивание пробелом, получить строку в нижнем регистре. Сначала прогнозируйте результат, затем проверьте его в среде программирования." | В парах заполняют таблицу, записывают цепочку операций и прогнозируют итог: «school 2026». |
3 мин | Учитель предлагает взаимопроверку «Две звезды и пожелание»: "Обменяйтесь результатами с соседней парой. Найдите две удачные части решения и одну деталь, которую нужно проверить: порядок операций, присваивание или тест на пробелы." | Сравнивают модели, отмечают две сильные стороны и один совет, например: «сначала удалены внешние пробелы», «результат replace присвоен переменной». |
2 мин | Учитель разбирает типичную ошибку: "Если написать `s.replace("_", " ")`, но не сохранить результат, что выведет программа при печати s? Почему? Покажите ответ и объясните его соседу." | Запускают пример, формулируют: «исходная строка останется прежней, потому что результат функции не присвоен s». Исправляют код и повторно тестируют. |
Эталон решения
1) `s = " School_2026 "`; 2) убрать внешние пробелы: `s = s.strip()`; 3) заменить подчёркивание: `s = s.replace("_", " ")`; 4) изменить регистр: `s = s.lower()`; 5) вывести результат. Ожидаемый результат: `school 2026`. Контрольный тест: строка без подчёркивания должна остаться корректной.
Завершение этапа: учитель подводит итог: "Мы проверили, что модель помогает увидеть не только нужные функции, но и порядок их применения. Дальше каждый выберет уровень задачи и покажет самостоятельное владение способом."
Этап 6. Самостоятельная практическая работа с дифференциацией (10 мин)
Цель этапа: применить строковые функции самостоятельно, учитывая индивидуальный уровень подготовки.
Время | Действие учителя | Действие учеников |
|---|---|---|
2 мин | Учитель объясняет выбор: "Карточка базового уровня проверяет основные функции, повышающая требует условной обработки, продвинутая — моделирования небольшой прикладной задачи. Выберите посильный уровень, но после завершения базового можно перейти выше. В каждой работе обязательны код, ожидаемый результат и два теста." | Выбирают карточку, записывают номер уровня и составляют план решения. |
5 мин | Учитель консультирует и задаёт вопросы вместо готового решения: "Какая операция названа первой? Что произойдёт, если искомый фрагмент отсутствует? Как вы докажете, что программа работает для пустой строки?" Для испытывающих затруднение выдаёт опорную схему функций. | Решают индивидуально. Базовый уровень: очистить строку, заменить разделитель и вывести длину и результат. Повышенный: проверить наличие подстроки и заменить её только при наличии. Продвинутый: обработать строку с несколькими словами, посчитать количество разделителей и сформировать аккуратную запись. |
3 мин | Учитель запускает самопроверку: "Откройте эталонные входные данные на экране. Сравните вывод, но сначала найдите расхождение самостоятельно. Отметьте в листе: функция выбрана верно, порядок операций верен, два теста пройдены." | Запускают программу минимум на двух тестах, фиксируют результаты, исправляют одну найденную ошибку и сдают или демонстрируют код. |
Эталон решения
Для повышенного задания: `s = "data_2026"`; если `s.find("2026") != -1`, то выполнить `s = s.replace("2026", "2027")`; иначе вывести сообщение «Год не найден». Затем вывести `s`. Тест 1 даёт `data_2027`; тест 2 для строки `"data"` выводит сообщение об отсутствии года. Ключевая проверка — условие не должно обращаться к фрагменту как к найденному, если результат поиска равен `-1`.
Завершение этапа: учитель подводит итог: "Вы увидели, что один и тот же набор функций позволяет решать задачи разного уровня — от простой замены до условной обработки и анализа текста. Осталось связать отдельные операции в общий алгоритм и проверить понимание."
Этап 7. Включение в систему знаний и рефлексия (7 мин)
Цель этапа: обобщить способы обработки строк, выявить затруднения и сформулировать личный результат урока.
Время | Действие учителя | Действие учеников |
|---|---|---|
3 мин | Учитель проводит приём «Модель на доске»: "Восстановите цепочку для задачи: из строки « USER_Name_17 » получить «user name 17». Какие функции нужны и в каком порядке? Где в модели появится проверка?" Учитель просит одного ученика озвучить решение, другого — назвать тестовый случай. | Формулируют цепочку: убрать внешние пробелы, заменить подчёркивания, привести к нижнему регистру. Называют тесты: пустая строка, строка без подчёркивания, строка с несколькими разделителями. |
2 мин | Учитель раздаёт стикеры для приёма «Светофор»: "Зелёный — самостоятельно выбираю функцию; жёлтый — могу после примера; красный — нужна помощь с индексами или тестированием. На обратной стороне запишите один вопрос, который остался." | Выбирают цвет, записывают вопрос или формулируют уверенность: «могу использовать replace», «нужно повторить срезы», «не всегда понимаю результат find». |
2 мин | Учитель проводит «Билет на выход»: "Ответьте письменно на три пункта: 1) какая функция возвращает длину строки; 2) зачем нужно сохранять результат replace; 3) какой тест выявит ошибку при обращении к символу строки?" | Заполняют билет: `len`; результат replace присваивают переменной; проверяют пустую строку или строку из одного символа. |
Завершение этапа: учитель подводит итог: "Сегодня вы научились рассматривать строку как объект преобразований, выбирать встроенную функцию под конкретную операцию и подтверждать решение тестами. Домашняя работа позволит закрепить базовый алгоритм и по желанию перейти к обработке более сложного текста."
Критерии оценивания практической работы
- «5» — корректно выполнено задание выбранного уровня, код даёт правильный результат минимум на двух тестах, модель обработки заполнена, выбор функций и порядок операций объяснены.
- «4» — основная программа работает, но допущена одна исправимая неточность в модели, оформлении или тестировании; после подсказки ученик самостоятельно вносит исправление.
- «3» — выполнена базовая часть задания, использована хотя бы одна подходящая строковая функция, но есть существенная ошибка в порядке операций или не проведена полноценная проверка.
- Ниже «3» — решение фрагментарно, функция выбрана без связи с условием, результат не проверен или программа не запускается; требуется повторная работа по опорной модели.
Рефлексия
Вопрос для ученика | Цель вопроса |
|---|---|
Какая строковая функция сегодня оказалась для вас наиболее полезной и почему? | Выявление осознанности выбора функции и связи с практической задачей. |
Какой этап модели «вход — операция — результат» помог избежать ошибки? | Проверка понимания метода моделирования и последовательности действий. |
Что произойдёт, если функция поиска не найдёт фрагмент? | Выявление понимания граничного случая и необходимости условной проверки. |
Какой уровень задания вы готовы выполнить самостоятельно на следующем уроке? | Определение субъективной оценки освоения темы и потребности в дифференцированной поддержке. |
Завершающее слово учителя
"Сегодня мы научились обрабатывать символьные данные не перебором каждого символа, а с помощью встроенных функций и понятной модели преобразований. Особенно важно помнить: функция обычно возвращает результат, а исходная строка изменяется только после правильного присваивания. Типичная ошибка — забыть про отсутствие искомого фрагмента или про пустую строку, поэтому тестирование обязательно. На следующем уроке мы продолжим работу с текстом и рассмотрим составные алгоритмы, в которых несколько строковых операций объединяются с условиями и циклами."
Домашнее задание
Уровень | Что задать | Зачем |
|---|---|---|
Базовый (обязательный) | Составить и протестировать программу для строки с лишними пробелами и разделителями: удалить внешние пробелы, заменить один разделитель на другой, вывести длину исходной и обработанной строк. Выполнить минимум три теста. | Закрепляет применение функций очистки, замены и определения длины; при проверке смотреть на порядок операций и наличие тестов. |
Средний (повышающий) | Разработать программу, которая получает строку с названием файла, проверяет наличие заданного расширения и при необходимости заменяет его на другое. Предусмотреть случай отсутствия расширения и выполнить не менее трёх тестов. | Формирует умение сочетать поиск, условие и замену; при проверке смотреть на обработку граничных случаев. |
Продвинутый (дополнительный) | Создать модель и программу для нормализации строки с именем пользователя: убрать внешние пробелы, заменить повторяющиеся разделители, привести буквы к единому регистру и вывести количество символов. Описать два возможных ограничения решения. | Развивает проектирование цепочки преобразований и критическую оценку алгоритма; при проверке смотреть на корректность модели, тесты и объяснение ограничений. |
Контрольные вопросы перед выходом из класса: «Какая функция возвращает длину строки? Чем поиск отличается от замены? Почему результат строковой функции иногда нужно присвоить переменной? Какой тест вы обязательно добавите для проверки своей программы?»