Py
💻 For developers

Python From Scratch

8 topics, 80 lessons: variables, operators, strings, numbers, conditions, loops, lists, dictionaries, and mini-projects

What you'll build
📘A solid foundation
Practice in the browser
🎯Mini-projects
🎓Course certificate
📘 80 lessons1-2 evenings🎓 Intermediate
🎯 Mission
Master Python From Scratch
+850XP
🏆CertificatePDF
🎓Course complete
Progress0 / 80 · 0%
Next up: Что такое переменная

Course program

01

Переменные и типы

0 / 8 lessons
  1. 01

    Что такое переменная

    ИмяЗначениеПрисваивание =⚡ +10
    ▶ Now
  2. 02

    Имена переменных

    snake_caseЗапрещённые именаРегистр⚡ +10
    Open
  3. 03

    Целые числа (int)

    intАрифметикаПодчёркивания в числах⚡ +10
    Open
  4. 04

    Дробные (float)

    floatДеление /Округление round()⚡ +10
    Open
  5. 05

    Логический тип (bool) и сравнения

    True / False==, !=, <, >, <=, >=and / or / not⚡ +10
    Open
  6. 06

    Функция type()

    type()<class '...'>Когда полезна⚡ +10
    Open
  7. 07

    Преобразование типов

    int(x), str(x), float(x)input даёт строкуValueError⚡ +10
    Open
  8. 08

    Множественное присваивание

    a, b = 1, 2Обмен a, b = b, aРаспаковка⚡ +10
    Open
02

Операторы и значения

0 / 5 lessons
  1. 09

    Операторы +=, -=, *= и другие

    +=, -=*=, /=Счётчики и накопление⚡ +10
    Open
  2. 10

    None и его смысл

    None — «ничего»is None vs == NoneКогда возвращается None⚡ +10
    Open
  3. 11

    Константы и стиль PEP 8

    UPPER_CASEСоглашение, не запретЗачем⚡ +10
    Open
  4. 12

    f-строки — форматирование

    f"...{x}..."Выражения внутри {}Лучше, чем + или %⚡ +10
    Open
  5. 13

    Мини-проект: профиль

    Несколько типовf-строкаНакопление⚡ +10
    Open
03

Строки

0 / 11 lessons
  1. 14

    Что такое строка

    Кавычки '' и ""Пустая строкаСтрока vs число⚡ +10
    Open
  2. 15

    Конкатенация и повторение

    + склеивает строки* повторяетЧто НЕ работает⚡ +10
    Open
  3. 16

    Длина строки len()

    len()Пустая = 0Сравнение длины⚡ +10
    Open
  4. 17

    Регистр: upper / lower / capitalize

    .upper().lower().capitalize() / .title()⚡ +10
    Open
  5. 18

    Чистка: strip / replace

    .strip().replace(a, b)Цепочка вызовов⚡ +10
    Open
  6. 19

    Индексация и срезы

    s[0]s[-1]s[1:5], s[::-1]⚡ +10
    Open
  7. 20

    Поиск: find / in / count / startswith

    .find(sub)in оператор.count(), .startswith()⚡ +10
    Open
  8. 21

    split / join

    .split(sep) → списокsep.join(список) → строкаПарные операции⚡ +10
    Open
  9. 22

    Экранирование: \n, \t, \"

    \n — перенос\t — табуляция\\ и \"⚡ +10
    Open
  10. 23

    Многострочные строки

    """..."""Сохранение переносовDocstring⚡ +10
    Open
  11. 24

    Мини-проект: визитка

    f-строкаМетоды строкМногострочный вывод⚡ +10
    Open
04

Числа и математика

0 / 10 lessons
  1. 25

    Целочисленное деление //

    // — целая частьДеление пополамСравнение / и //⚡ +10
    Open
  2. 26

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

    % — остатокЧётные/нечётныеЦикличность⚡ +10
    Open
  3. 27

    Возведение в степень и корень

    **math.sqrtДробные степени⚡ +10
    Open
  4. 28

    abs, min, max

    abs(x)min(a, b, ...)max(a, b, ...)⚡ +10
    Open
  5. 29

    round() и точность float

    round(x, n)Банковское округление0.1 + 0.2⚡ +10
    Open
  6. 30

    Модуль math

    math.pi, math.emath.floor / math.ceilmath.factorial, math.gcd⚡ +10
    Open
  7. 31

    Случайные числа random

    random.randintrandom.randomrandom.choice⚡ +10
    Open
  8. 32

    Форматирование чисел в f-строках

    {x:.2f}{x:,}{x:>10}⚡ +10
    Open
  9. 33

    Преобразования int ↔ float

    int(3.7)float(5)Потеря данных⚡ +10
    Open
  10. 34

    Мини-проект: расчёт чека

    %, /, **round, absf-строка с :,.2f⚡ +10
    Open
05

Условия

0 / 10 lessons
  1. 35

    if и else — первое решение

    if cond:else:Двоеточие и отступ⚡ +10
    Open
  2. 36

    elif — несколько вариантов

    elifЦепочка if/elif/elseПорядок важен⚡ +10
    Open
  3. 37

    Отступы и блоки

    4 пробелаОдин уровень — один блокIndentationError⚡ +10
    Open
  4. 38

    Truthy / Falsy — что считается True

    Falsy: 0, '', None, []Всё остальное — Trueif x: vs if x is None:⚡ +10
    Open
  5. 39

    and / or / not в условиях

    and — обаor — хотя бы одноКороткое замыкание⚡ +10
    Open
  6. 40

    Тернарный оператор

    a if cond else bInline ifКогда уместен⚡ +10
    Open
  7. 41

    match / case (Python 3.10+)

    Сравнение одной переменнойЗапасной вариант — символ _Несколько вариантов через |⚡ +10
    Open
  8. 42

    Вложенные условия

    if внутри ifГлубина читаемостиОбъединение and⚡ +10
    Open
  9. 43

    Частые ошибки в условиях

    = vs ==is vs ==Сравнение float⚡ +10
    Open
  10. 44

    Мини-проект: оценка балла

    if/elif/elseТернарникf-строка⚡ +10
    Open
06

Циклы

0 / 12 lessons
  1. 45

    Цикл for и range — повторяем действие

    for x in range(N)Тело цикла с отступомЧто такое итерация⚡ +10
    Open
  2. 46

    range с началом, концом и шагом

    range(start, stop)range(start, stop, step)Шаг назад step=-1⚡ +10
    Open
  3. 47

    Цикл по строке — буква за буквой

    for c in строкаКаждая итерация = один символКогда нужен индекс — range(len)⚡ +10
    Open
  4. 48

    Цикл while — пока условие верно

    while условие:Меняй переменную внутриБесконечный цикл — что это⚡ +10
    Open
  5. 49

    break — выйти из цикла досрочно

    break прерывает циклПолезно с поискомТолько один уровень⚡ +10
    Open
  6. 50

    continue — пропустить эту итерацию

    continue пропускает остатокИдём к следующей итерацииАнтипод break⚡ +10
    Open
  7. 51

    enumerate — индекс плюс значение

    enumerate(данные)Распаковка в две переменныеИндекс с нуля⚡ +10
    Open
  8. 52

    zip — идти по двум данным параллельно

    zip(a, b)Останавливается на короткойРаспаковка пар⚡ +10
    Open
  9. 53

    Накопитель — суммируем и считаем в цикле

    Переменная-накопительtotal = total + xСреднее = сумма / количество⚡ +10
    Open
  10. 54

    Вложенные циклы — цикл внутри цикла

    for внутри forВнутренний крутится полностьюДвойной отступ — 8 пробелов⚡ +10
    Open
  11. 55

    Частые ошибки в циклах

    Off-by-one с rangeБесконечный whileНакопитель не сброшен⚡ +10
    Open
  12. 56

    Мини-проект: FizzBuzz

    for + if/elif/elseДелимость через %Порядок проверок⚡ +10
    Open
07

Списки

0 / 12 lessons
  1. 57

    Что такое список и как его создать

    Список — упорядоченный наборЛитерал [a, b, c]Длина через len()⚡ +10
    Open
  2. 58

    Индексы — обращаемся к элементу по номеру

    Индексы с 0Отрицательные с -1IndexError если выйти за край⚡ +10
    Open
  3. 59

    Срезы — берём кусок списка

    [start:stop]stop НЕ входитПропуск start или stop⚡ +10
    Open
  4. 60

    append, extend, insert — добавляем элементы

    append — в конецextend — несколько в конецinsert — в любую позицию⚡ +10
    Open
  5. 61

    remove, pop, del — удаляем элементы

    remove(x) — по значениюpop(i) — по индексу + возвращаетdel list[i] — по индексу⚡ +10
    Open
  6. 62

    Оператор in — проверяем наличие

    x in list — True/Falsenot in — обратная проверкаРаботает и со строками⚡ +10
    Open
  7. 63

    Цикл по списку — обходим элементы

    for x in listНе нужен индекс по умолчаниюТолько чтение в простом цикле⚡ +10
    Open
  8. 64

    sort, sorted, reverse — сортируем

    list.sort() меняет на местеsorted() возвращает новыйreverse=True для убывания⚡ +10
    Open
  9. 65

    Списковое включение — список в одну строку

    [выражение for x in данные]С условием ifЗамена цикла + append⚡ +10
    Open
  10. 66

    split и join — между строкой и списком

    str.split(sep) → listsep.join(list) → strПо умолчанию split по пробелам⚡ +10
    Open
  11. 67

    Вложенные списки — таблицы из строк и столбцов

    Список списковДоступ table[row][col]Цикл по строкам⚡ +10
    Open
  12. 68

    Мини-проект: статистика чисел

    Сумма + среднееmin / maxПоиск в списке⚡ +10
    Open
08

Словари

0 / 12 lessons
  1. 69

    Что такое словарь и зачем он нужен

    Пары ключ → значениеЛитерал {ключ: значение}Когда вместо списка⚡ +10
    Open
  2. 70

    Получаем значение по ключу

    d[ключ] — обязательноd.get(ключ) — мягкоKeyError если нет ключа⚡ +10
    Open
  3. 71

    Добавляем и обновляем пары

    d[новый_ключ] = ...Перезапись если ключ естьОдин синтаксис для add+update⚡ +10
    Open
  4. 72

    Удаляем пары — del и pop

    del d[ключ]d.pop(ключ) возвращает значениеKeyError если ключа нет⚡ +10
    Open
  5. 73

    Проверяем ключ через in

    ключ in d → True/FalseПо умолчанию проверяет КЛЮЧИПеред d[ключ] чтобы избежать ошибки⚡ +10
    Open
  6. 74

    keys, values, items — три способа смотреть

    d.keys() — ключиd.values() — значенияd.items() — пары⚡ +10
    Open
  7. 75

    Цикл по словарю

    for k in d — только ключиfor v in d.values()for k, v in d.items() — пара⚡ +10
    Open
  8. 76

    Вложенные словари — словарь внутри словаря

    Значение = другой словарьДоступ d[a][b]Профили / структуры⚡ +10
    Open
  9. 77

    Словарное включение — словарь в одну строку

    {k: v for ... in ...}Из списка в словарьС условием if⚡ +10
    Open
  10. 78

    Шаблон счётчика — считаем повторения

    d[k] = d.get(k, 0) + 1Накопитель + словарьСамый частый шаблон⚡ +10
    Open
  11. 79

    setdefault — мягкое создание ключа

    d.setdefault(k, default)Создаёт если нетПолезно для группировок⚡ +10
    Open
  12. 80

    Мини-проект: частота слов в тексте

    split → список словСловарь-счётчик через .getПодсчёт уникальных
    Course complete
    Open
Python From Scratch — online coding course