IT Academy
Справочник курса

Python: уверенный старт

Все объяснения, задачи и лабораторная в одном месте.

Можно сохранить страницу в PDF через печать браузера. Для печати разборы ответов раскрываются автоматически.

1. Первая программа и модель выполнения

Объяснение

Python выполняет инструкции по порядку. Имя связывается с объектом; присваивание не обязательно копирует объект. input возвращает строку, int преобразует допустимую запись числа и может выбросить ValueError. Отступ задаёт блок программы.

Задача для самостоятельного решения

Что получится: a=[1]; b=a; b.append(2); print(a)?

Показать разбор ответа

[1, 2]: a и b ссылаются на один список. Для независимого списка нужна копия, например a.copy(); для вложенных структур важно различать поверхностное и глубокое копирование.

2. Условия, циклы и коллекции

Объяснение

Условие выбирает ветвь, цикл повторяет блок. list хранит порядок и повторения, set — уникальные значения, dict — соответствие ключей значениям. Изменение списка при обходе может пропустить элементы.

Задача для самостоятельного решения

Для [1200,450,1200,800] найдите сумму и число различных значений.

Показать разбор ответа

sum даёт 3650, len(set(...)) даёт 3. При фильтрации создайте новый список comprehension вместо удаления элементов из обходящегося списка.

3. Функции и контракт

Объяснение

Функция получает аргументы и возвращает значение через return. print только выводит текст. Контракт задаёт допустимые входы, результат и ошибки. Значение аргумента по умолчанию вычисляется при определении функции.

Задача для самостоятельного решения

Почему def add(x, items=[]): items.append(x); return items опасна?

Показать разбор ответа

Один список по умолчанию разделяется между вызовами. Используйте items=None и создавайте новый список внутри функции, если список не передан.

4. Файлы, исключения и мини-проект

Объяснение

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

Задача для самостоятельного решения

Почему except Exception: return [] может привести к потере задач?

Показать разбор ответа

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

Практика

Лабораторная работа

Подготовка

Python 3, пустой каталог и терминал. Сохраните код в main.py и выполните python3 main.py.

Учебный пример

import json
from pathlib import Path

def load_tasks(path):
    if not path.exists():
        return []
    data = json.loads(path.read_text(encoding="utf-8"))
    if not isinstance(data, list):
        raise ValueError("Ожидался список задач")
    return data

def save_tasks(path, tasks):
    temporary = path.with_suffix(".tmp")
    temporary.write_text(json.dumps(tasks, ensure_ascii=False), encoding="utf-8")
    temporary.replace(path)

path = Path("tasks.json")
tasks = load_tasks(path)
tasks.append({"title": "Прочитать урок", "done": False})
save_tasks(path, tasks)
print(len(load_tasks(path)))

Как работает пример и что ожидать

Первый запуск в пустом каталоге печатает 1, второй — 2. load_tasks отделяет чтение от интерфейса. Отсутствующий файл означает первый запуск, повреждённый JSON вызывает ошибку и не перезаписывается пустым списком. Временный файл обеспечивает атомарную замену на одной файловой системе; этот короткий пример не обеспечивает блокировку конкурентных запусков и гарантию при отключении питания.

Итоговая работа

Добавьте команды add/list/done, стабильные идентификаторы, проверку каждой записи и тест повреждённого файла. При повторном запуске сохранённые задачи остаются. Пустое название отклоняется. Выполните пять тестов и объясните, где требуется блокировка при двух процессах.

Проверка результата

1. Опишите исходные данные и условия запуска, чтобы другой человек мог повторить работу.
2. Приложите результат обычного сценария и сравните его с ожидаемым.
3. Проверьте неверный вход, граничный случай и отказ зависимости, если она есть.
4. Объясните выбранное решение и известное ограничение.
5. Сохраните исправления после самопроверки вместе с примером, который раньше не работал.

Как оценить работу

По каждому пункту поставьте 0 (не выполнено), 1 (выполнено с пробелами) или 2 (результат воспроизводим и объяснён). Если обязательный сценарий не работает, вернитесь к нему независимо от общей суммы. Это рубрика самопроверки: сайт не исполняет присланный код и не выдаёт автоматическую оценку проекта.

Дополнительная самопроверка

Проверка: Python: уверенный старт →