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 (результат воспроизводим и объяснён). Если обязательный сценарий не работает, вернитесь к нему независимо от общей суммы. Это рубрика самопроверки: сайт не исполняет присланный код и не выдаёт автоматическую оценку проекта.