Перейти к основному содержанию
Программирование и CS
Начальный уровень
Учимся через действие

Функции в Python

Определяйте и вызывайте функции, управляйте областью видимости и возвращаемыми значениями — расшифровывая закодированные сообщения в работающем коде

Уроки этого курса доступны после регистрации. Демо без аккаунта показывает механику платформы на примере задачи с роботом по алгоритмике.

40
уроков
7–10 мин
один шаг
Начальный уровень
уровень
бесплатный доступ в бета-версиибез регистрации для демопрогресс можно сохранить
Пример интерфейса
Пример: урок 1 из 40
Образец
Функции в Python
Пример награды

Локальные переменные

Пример показывает устройство урока. Чтобы решать задания, откройте курс после регистрации.

01 наблюдаем условие задачи
02 проверяем свой ответ
03 объясняем следующий шаг
Шаг 1
Проверить
Шаг 3
Понятно. Ответ сопровождается объяснением, чтобы следующий шаг был осознанным.

40 коротких уроков

По 7-10 минут: можно пройти за один подход или возвращаться по частям.

Интерактив вместо конспекта

Ученик решает задачу, проверяет ответ и видит объяснение следующего шага.

Спокойный старт

Демо платформы доступно без аккаунта. Для уроков выбранного курса и сохранения прогресса нужна регистрация.

Для кого

Кому подойдёт курс «Функции в Python»

Курс подходит школьникам, которые изучают программирование и cs, взрослым для восстановления базы и всем, кто хочет понять тему через практику, а не через заучивание правил.

Тема кажется набором несвязанных правил.
Сложно перейти от примера к самостоятельной задаче.
Не хватает уверенности при решении новых заданий.
Хочется увидеть логику каждого следующего шага.
01

Локальные переменные

Собирайте функции-расшифровщики, которые копят результат в собственных локальных переменных: разворачивают строку задом наперёд, переносят букву и отсеивают шум.

02

Несколько аргументов функции

От трёх почти одинаковых функций — к одной гибкой функции с несколькими параметрами: расшифровывайте сообщения, управляя поведением через переданные аргументы.

03

Декомпозиция задач

Разбивайте задачу на части: выделяйте маленькие функции (`reverse`, `cycle`, `step_through`) и вызывайте их в цикле, чтобы расшифровывать сообщение слово за словом.

Обратная связь помогает разобраться

После ответа ученик видит не только результат, но и следующий шаг рассуждения. Так ошибка становится частью обучения, а не тупиком.

Действие

Откройте шаг «Локальные переменные» и выполните действие в модели.

Попытка
Ответ требует ещё одного шага

Ошибка не заканчивает задание: она запускает объяснение на схеме.

Понимание
Идея курса «Функции в Python» понятна

Ученик видит идею на модели и переносит её в самостоятельное решение.

Маршрут курса

От первого понятия к самостоятельному применению темы «Функции в Python».

1
1

Локальные переменные

Собирайте функции-расшифровщики, которые копят результат в собственных локальных переменных: разворачивают строку задом наперёд, переносят букву и отсеивают шум.

2
2

Несколько аргументов функции

От трёх почти одинаковых функций — к одной гибкой функции с несколькими параметрами: расшифровывайте сообщения, управляя поведением через переданные аргументы.

3
3

Декомпозиция задач

Разбивайте задачу на части: выделяйте маленькие функции (reverse, cycle, step_through) и вызывайте их в цикле, чтобы расшифровывать сообщение слово за словом.

4
4

Использование нескольких функций

Комбинируйте несколько маленьких функций — swap, remove, reverse, cycle, step_through, — выбирая нужную для каждого слова, чтобы расшифровывать сообщения.

5
5

Расшифровка сообщений

Пишите на Python короткие программы, которые перебирают символы строки в цикле и по подсказке восстанавливают спрятанное сообщение.

6
6

Индексация строк

Расшифровывайте секретные сообщения, обращаясь к символам строки по индексу: читайте строку задом наперёд и пропускайте буквы-шум с помощью цикла и переменной-индекса.

7
7

Знакомство с функциями

Расшифруйте секретные сообщения: сначала повторяя одну и ту же логику вручную, а затем вынеся её в функцию, которую можно вызывать снова и снова.

8
8

Вызов функций

Вызывайте одну и ту же функцию с разными аргументами — строковым литералом, переменной цикла и символом по индексу, — чтобы расшифровывать секретные сообщения.

9
9

Повторное использование функций

Объявите функцию один раз и вызывайте её снова и снова — для разных сообщений и ответов, при обходе строки в цикле, с конца и через один символ, — чтобы расшифровывать секретные послания.

10
10

Обновление функций

Обновляйте функцию расшифровки, чтобы она справлялась с новыми правилами шифра — новыми буквами-заменами, взаимной перестановкой букв и символами-шумом.

11
11

Шифр Виженера

Расшифруйте сообщения, в которых сдвиг меняется от буквы к букве: соберите список сдвигов, зациклите его через остаток от деления и упакуйте всё в функцию decrypt_vigenere с ключом-словом.

12
12

Контракты функций

Напишите контракт функции — её имя, типы входа и выхода и точное описание поведения — и по этому контракту ИИ-помощник соберёт детектор английского текста, который сам найдёт верный ключ шифра Виженера.

13
13

Проверка кода, написанного ИИ

Напишите спецификацию функции, а потом проверьте код, который ИИ написал по ней: замерьте английский балл открытых текстов и шифротекстов, найдите случай, где эвристика ошибается, и протестируйте функцию в обе стороны.

14
14

Планируем атаку

Перебрать все ключи шифра Виженера невозможно — их миллиарды. Найдите в шифре структуру: ключ повторяется, значит шифротекст можно разбить на куски, каждый из которых уже обычный шифр сдвига, и подобрать сдвиги по английскому баллу.

15
15

Реализация плана

Напишите спецификации трёх функций взлома шифра Виженера — разбить шифротекст на куски, найти лучший сдвиг для куска, определить длину ключа — и проверьте на тестах код, который написал по ним ИИ.

16
16

Взлом шифра

Финал курса: соберите план атаки и спецификацию функции crack_vigenere, проверьте написанный ИИ код на известном ключе, увидьте, где метод даёт сбой на коротком сообщении, и вскройте перехваченное сообщение, не зная ни ключа, ни его длины.

17
17

Склеивание списков

Разбивайте строку на список методом split, склеивайте список обратно в строку методом join и подбирайте разделитель — пробел, пустую строку или перевод строки, — чтобы расшифровывать секретные сообщения.

18
18

Генераторы списков

Одна строка вместо цикла с добавлением в список: научитесь писать генератор списка [выражение for элемент in последовательности], соберите на нём пару функций «зашифровать / расшифровать» по ключу и вскройте шифр перебором всех 26 ключей.

19
19

Фильтрация в генераторе списка

Добавьте условие if в генератор списка и оставляйте только нужные элементы: сообщения со словом "toaster", тексты с распространёнными словами и правдоподобные ключи шифра сдвига при переборе всех 26 вариантов.

20
20

Генераторы словарей

Соберите таблицу подстановки для шифра сдвига одной строкой — генератором словаря, научитесь пропускать пробелы и знаки препинания через .get, а затем постройте словарь всех 26 расшифровок и найдите среди них настоящее сообщение.

21
21

Кодировка символов

Компьютер хранит символы числами. Научитесь получать код символа функцией ord и возвращать символ по коду функцией chr, напишите пару взаимно обратных функций «буква → позиция в алфавите» и «позиция → буква» и расшифруйте с их помощью сообщения.

22
22

Остаток от деления

Освойте оператор остатка %: отбирайте буквы по чётности позиции в алфавите, отсеивайте кратные пяти позиции и заворачивайте любые числа, включая отрицательные, в диапазон алфавита от 0 до 25.

23
23

Конвейеры функций

Соединяйте функции в цепочку: position_of переводит букву в позицию алфавита, shift_number сдвигает позицию, letter_at возвращает букву обратно. Расшифруйте сообщения конвейером из двух и трёх функций.

24
24

Вспомогательные функции

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

25
25

Переиспользование вспомогательных функций

Одна вспомогательная функция shift обслуживает и шифрование, и расшифровку: чтобы расшифровать сообщение, достаточно сдвинуть буквы назад — вызвать ту же функцию с отрицательным ключом.

26
26

Отладка зависимостей

Научитесь искать ошибку в цепочке вызовов: диагностируйте баг по симптому и чините именно то звено, где он спрятан, — от decrypt до её помощников shift, shift_number и letter_at.

27
27

Другие типы возвращаемых значений

Функция может вернуть не только число: соберите функции, которые возвращают счётчик, логическое значение, список и словарь, — и проверьте, какие частые слова встречаются в расшифрованных сообщениях.

28
28

Возврат кортежей

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

29
29

Логические функции как условия

Функция может возвращать True/False. Вызывайте такую логическую функцию прямо в if, чтобы отфильтровывать расшифрованные сообщения, и комбинируйте две проверки через and.

30
30

Ранний возврат

Научитесь выходить из функции сразу, как только ответ известен: вместо флага и полного прохода цикла возвращайте результат немедленно. Проверяйте сообщения на распространённые слова и гласные, считайте долю слов с защитой от деления на ноль.

31
31

Возврат None

Разберитесь, что возвращает функция, дошедшая до конца без return: Python неявно возвращает None. Научитесь возвращать None явно и проверять результат через is None, анализируя сообщения на распространённые слова.

32
32

Глобальные переменные

Обращайтесь к глобальным переменным — словарю-ключу и строкам, объявленным вне функции, — прямо из тела функции, чтобы расшифровывать секретные сообщения.

33
33

Проектирование аргументов функции

Научитесь передавать данные в функцию через аргументы вместо глобальных переменных, чтобы избежать перезаписи ключа и ошибок области видимости при расшифровке сообщений.

34
34

Локальная область видимости

Разберитесь, почему переменная, объявленная внутри функции, недоступна снаружи: расшифровывайте сообщения функцией-переводчиком и учитесь брать её результат в правильной области видимости.

35
35

Затенение переменных

Разберитесь, почему одноимённые переменные в разных областях видимости независимы: параметр функции затеняет внешнюю переменную только внутри функции. Расшифровывайте сообщения и следите, где меняется локальная копия, а где — переменная цикла.

36
36

Функции расшифровки

Пишите функции, которые убирают буквы-шум и отбирают символы по ключу, чтобы расшифровывать секретные сообщения.

37
37

Успешные сценарии

Тестируйте функцию denoise на типичных корректных входах — «успешных сценариях»: удаление одного символа, спецсимволов, заглавных букв и пробелов, — проверяя, что она возвращает ожидаемый результат.

38
38

Особые случаи

Проверьте функцию unmask на особых входных данных — слишком коротком ключе, ключе из одних нулей или единиц, слишком длинном ключе — и посмотрите, какие из них вызывают ошибку, а какие дают неожиданный вывод.

39
39

Граничные случаи

Проверьте функцию word_letter на граничных входах — крайних индексах, словах с пунктуацией и слишком больших ключах — и убедитесь, что некоторые граничные случаи вызывают ошибку.

40
40

Проверка предусловий

Прежде чем вызвать функцию, проверяйте предусловия — то, что должно быть истинно про входные данные, — чтобы плохой вход не обрушил программу с ошибкой.

Один урок — одно понятие

Нет перегруза: сначала основная идея, затем проверка понимания и самостоятельное применение.

Мгновенная обратная связь

Ученик сразу видит, где ошибся, и получает объяснение через схему.

Последовательное усложнение

Курс строится от первого знакомства с идеей к более самостоятельным задачам.

Прогресс сохраняется

После регистрации можно продолжить курс и вернуться к сложным темам.

Кому подойдёт курс «Функции в Python»?

Курс рассчитан для первого знакомства с темой, а также на повторение и систематизацию знаний. Перед началом можно посмотреть механику платформы в общем демо по алгоритмике.

Как устроены уроки?

Уроки короткие: ученик выполняет действие, получает проверку и объяснение, а затем переходит к следующему шагу. Это помогает разобраться в логике темы постепенно.

Нужен ли взрослый рядом?

Для демо нет: задания содержат подсказки и обратную связь. Взрослый может подключиться, чтобы обсудить сложные места или посмотреть прогресс.

Что будет после регистрации?

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

Начните курс бесплатно

Создайте аккаунт, чтобы открыть уроки этого курса и сохранять прогресс.