Функции в Python
Определяйте и вызывайте функции, управляйте областью видимости и возвращаемыми значениями — расшифровывая закодированные сообщения в работающем коде
Уроки этого курса доступны после регистрации. Демо без аккаунта показывает механику платформы на примере задачи с роботом по алгоритмике.
Локальные переменные
Пример показывает устройство урока. Чтобы решать задания, откройте курс после регистрации.
40 коротких уроков
По 7-10 минут: можно пройти за один подход или возвращаться по частям.
Интерактив вместо конспекта
Ученик решает задачу, проверяет ответ и видит объяснение следующего шага.
Спокойный старт
Демо платформы доступно без аккаунта. Для уроков выбранного курса и сохранения прогресса нужна регистрация.
Кому подойдёт курс «Функции в Python»
Курс подходит школьникам, которые изучают программирование и cs, взрослым для восстановления базы и всем, кто хочет понять тему через практику, а не через заучивание правил.
Локальные переменные
Собирайте функции-расшифровщики, которые копят результат в собственных локальных переменных: разворачивают строку задом наперёд, переносят букву и отсеивают шум.
Несколько аргументов функции
От трёх почти одинаковых функций — к одной гибкой функции с несколькими параметрами: расшифровывайте сообщения, управляя поведением через переданные аргументы.
Декомпозиция задач
Разбивайте задачу на части: выделяйте маленькие функции (`reverse`, `cycle`, `step_through`) и вызывайте их в цикле, чтобы расшифровывать сообщение слово за словом.
После ответа ученик видит не только результат, но и следующий шаг рассуждения. Так ошибка становится частью обучения, а не тупиком.
Откройте шаг «Локальные переменные» и выполните действие в модели.
Ошибка не заканчивает задание: она запускает объяснение на схеме.
Ученик видит идею на модели и переносит её в самостоятельное решение.
Маршрут курса
От первого понятия к самостоятельному применению темы «Функции в Python».
Локальные переменные
Собирайте функции-расшифровщики, которые копят результат в собственных локальных переменных: разворачивают строку задом наперёд, переносят букву и отсеивают шум.
Несколько аргументов функции
От трёх почти одинаковых функций — к одной гибкой функции с несколькими параметрами: расшифровывайте сообщения, управляя поведением через переданные аргументы.
Декомпозиция задач
Разбивайте задачу на части: выделяйте маленькие функции (reverse, cycle, step_through) и вызывайте их в цикле, чтобы расшифровывать сообщение слово за словом.
Использование нескольких функций
Комбинируйте несколько маленьких функций — swap, remove, reverse, cycle, step_through, — выбирая нужную для каждого слова, чтобы расшифровывать сообщения.
Расшифровка сообщений
Пишите на Python короткие программы, которые перебирают символы строки в цикле и по подсказке восстанавливают спрятанное сообщение.
Индексация строк
Расшифровывайте секретные сообщения, обращаясь к символам строки по индексу: читайте строку задом наперёд и пропускайте буквы-шум с помощью цикла и переменной-индекса.
Знакомство с функциями
Расшифруйте секретные сообщения: сначала повторяя одну и ту же логику вручную, а затем вынеся её в функцию, которую можно вызывать снова и снова.
Вызов функций
Вызывайте одну и ту же функцию с разными аргументами — строковым литералом, переменной цикла и символом по индексу, — чтобы расшифровывать секретные сообщения.
Повторное использование функций
Объявите функцию один раз и вызывайте её снова и снова — для разных сообщений и ответов, при обходе строки в цикле, с конца и через один символ, — чтобы расшифровывать секретные послания.
Обновление функций
Обновляйте функцию расшифровки, чтобы она справлялась с новыми правилами шифра — новыми буквами-заменами, взаимной перестановкой букв и символами-шумом.
Шифр Виженера
Расшифруйте сообщения, в которых сдвиг меняется от буквы к букве: соберите список сдвигов, зациклите его через остаток от деления и упакуйте всё в функцию decrypt_vigenere с ключом-словом.
Контракты функций
Напишите контракт функции — её имя, типы входа и выхода и точное описание поведения — и по этому контракту ИИ-помощник соберёт детектор английского текста, который сам найдёт верный ключ шифра Виженера.
Проверка кода, написанного ИИ
Напишите спецификацию функции, а потом проверьте код, который ИИ написал по ней: замерьте английский балл открытых текстов и шифротекстов, найдите случай, где эвристика ошибается, и протестируйте функцию в обе стороны.
Планируем атаку
Перебрать все ключи шифра Виженера невозможно — их миллиарды. Найдите в шифре структуру: ключ повторяется, значит шифротекст можно разбить на куски, каждый из которых уже обычный шифр сдвига, и подобрать сдвиги по английскому баллу.
Реализация плана
Напишите спецификации трёх функций взлома шифра Виженера — разбить шифротекст на куски, найти лучший сдвиг для куска, определить длину ключа — и проверьте на тестах код, который написал по ним ИИ.
Взлом шифра
Финал курса: соберите план атаки и спецификацию функции crack_vigenere, проверьте написанный ИИ код на известном ключе, увидьте, где метод даёт сбой на коротком сообщении, и вскройте перехваченное сообщение, не зная ни ключа, ни его длины.
Склеивание списков
Разбивайте строку на список методом split, склеивайте список обратно в строку методом join и подбирайте разделитель — пробел, пустую строку или перевод строки, — чтобы расшифровывать секретные сообщения.
Генераторы списков
Одна строка вместо цикла с добавлением в список: научитесь писать генератор списка [выражение for элемент in последовательности], соберите на нём пару функций «зашифровать / расшифровать» по ключу и вскройте шифр перебором всех 26 ключей.
Фильтрация в генераторе списка
Добавьте условие if в генератор списка и оставляйте только нужные элементы: сообщения со словом "toaster", тексты с распространёнными словами и правдоподобные ключи шифра сдвига при переборе всех 26 вариантов.
Генераторы словарей
Соберите таблицу подстановки для шифра сдвига одной строкой — генератором словаря, научитесь пропускать пробелы и знаки препинания через .get, а затем постройте словарь всех 26 расшифровок и найдите среди них настоящее сообщение.
Кодировка символов
Компьютер хранит символы числами. Научитесь получать код символа функцией ord и возвращать символ по коду функцией chr, напишите пару взаимно обратных функций «буква → позиция в алфавите» и «позиция → буква» и расшифруйте с их помощью сообщения.
Остаток от деления
Освойте оператор остатка %: отбирайте буквы по чётности позиции в алфавите, отсеивайте кратные пяти позиции и заворачивайте любые числа, включая отрицательные, в диапазон алфавита от 0 до 25.
Конвейеры функций
Соединяйте функции в цепочку: position_of переводит букву в позицию алфавита, shift_number сдвигает позицию, letter_at возвращает букву обратно. Расшифруйте сообщения конвейером из двух и трёх функций.
Вспомогательные функции
Оберните конвейер расшифровки в одну функцию: научитесь вызывать вспомогательные функции из другой функции, писать отдельную проверку строчной буквы и пропускать остальные символы без изменений.
Переиспользование вспомогательных функций
Одна вспомогательная функция shift обслуживает и шифрование, и расшифровку: чтобы расшифровать сообщение, достаточно сдвинуть буквы назад — вызвать ту же функцию с отрицательным ключом.
Отладка зависимостей
Научитесь искать ошибку в цепочке вызовов: диагностируйте баг по симптому и чините именно то звено, где он спрятан, — от decrypt до её помощников shift, shift_number и letter_at.
Другие типы возвращаемых значений
Функция может вернуть не только число: соберите функции, которые возвращают счётчик, логическое значение, список и словарь, — и проверьте, какие частые слова встречаются в расшифрованных сообщениях.
Возврат кортежей
Научитесь возвращать из функции сразу несколько значений в виде кортежа и распаковывать его в отдельные переменные — на задаче поиска распространённых слов в расшифрованных сообщениях.
Логические функции как условия
Функция может возвращать True/False. Вызывайте такую логическую функцию прямо в if, чтобы отфильтровывать расшифрованные сообщения, и комбинируйте две проверки через and.
Ранний возврат
Научитесь выходить из функции сразу, как только ответ известен: вместо флага и полного прохода цикла возвращайте результат немедленно. Проверяйте сообщения на распространённые слова и гласные, считайте долю слов с защитой от деления на ноль.
Возврат None
Разберитесь, что возвращает функция, дошедшая до конца без return: Python неявно возвращает None. Научитесь возвращать None явно и проверять результат через is None, анализируя сообщения на распространённые слова.
Глобальные переменные
Обращайтесь к глобальным переменным — словарю-ключу и строкам, объявленным вне функции, — прямо из тела функции, чтобы расшифровывать секретные сообщения.
Проектирование аргументов функции
Научитесь передавать данные в функцию через аргументы вместо глобальных переменных, чтобы избежать перезаписи ключа и ошибок области видимости при расшифровке сообщений.
Локальная область видимости
Разберитесь, почему переменная, объявленная внутри функции, недоступна снаружи: расшифровывайте сообщения функцией-переводчиком и учитесь брать её результат в правильной области видимости.
Затенение переменных
Разберитесь, почему одноимённые переменные в разных областях видимости независимы: параметр функции затеняет внешнюю переменную только внутри функции. Расшифровывайте сообщения и следите, где меняется локальная копия, а где — переменная цикла.
Функции расшифровки
Пишите функции, которые убирают буквы-шум и отбирают символы по ключу, чтобы расшифровывать секретные сообщения.
Успешные сценарии
Тестируйте функцию denoise на типичных корректных входах — «успешных сценариях»: удаление одного символа, спецсимволов, заглавных букв и пробелов, — проверяя, что она возвращает ожидаемый результат.
Особые случаи
Проверьте функцию unmask на особых входных данных — слишком коротком ключе, ключе из одних нулей или единиц, слишком длинном ключе — и посмотрите, какие из них вызывают ошибку, а какие дают неожиданный вывод.
Граничные случаи
Проверьте функцию word_letter на граничных входах — крайних индексах, словах с пунктуацией и слишком больших ключах — и убедитесь, что некоторые граничные случаи вызывают ошибку.
Проверка предусловий
Прежде чем вызвать функцию, проверяйте предусловия — то, что должно быть истинно про входные данные, — чтобы плохой вход не обрушил программу с ошибкой.
Нет перегруза: сначала основная идея, затем проверка понимания и самостоятельное применение.
Ученик сразу видит, где ошибся, и получает объяснение через схему.
Курс строится от первого знакомства с идеей к более самостоятельным задачам.
После регистрации можно продолжить курс и вернуться к сложным темам.
Думаем как программист
Основы алгоритмического мышления: последовательности, циклы, логика
Мышление на Python
Основы Python через чтение и анализ программ: переменные, условная и булева логика, циклы for и while, списки, словари, строки, вложенные и цепочечные условия, работа с данными, временная сложность и алгоритмы поиска.
Объекты в Python
Классы, экземпляры, методы и состояние — постройте биграммную языковую модель, проектируя объекты, которые работают вместе
Программирование с переменными
Создавайте цифровые изображения с помощью переменных, циклов и логики
Кому подойдёт курс «Функции в Python»?
Курс рассчитан для первого знакомства с темой, а также на повторение и систематизацию знаний. Перед началом можно посмотреть механику платформы в общем демо по алгоритмике.
Как устроены уроки?
Уроки короткие: ученик выполняет действие, получает проверку и объяснение, а затем переходит к следующему шагу. Это помогает разобраться в логике темы постепенно.
Нужен ли взрослый рядом?
Для демо нет: задания содержат подсказки и обратную связь. Взрослый может подключиться, чтобы обсудить сложные места или посмотреть прогресс.
Что будет после регистрации?
Аккаунт нужен, чтобы сохранить прогресс, продолжить курс и вернуться к сложным заданиям. В демо карта и оплата не нужны.
Начните курс бесплатно
Создайте аккаунт, чтобы открыть уроки этого курса и сохранять прогресс.