📋 Формулировка задания
Исходное задание из LMS:
- Торговый автомат. Напишите программу, которая моделирует работу торгового автомата. Автомат принимает только монеты номиналом 1, 2, 5, 10 и 50. Программа должна запрашивать у пользователя общую стоимость покупки, а затем отображать, сколько монет каждого типа нужно потратить, чтобы использовать минимальное количество монет для оплаты товара.
Введите стоимость товара: 127 Внесите монеты номиналом 50: 2 Внесите монеты номиналом 10: 2 Внесите монеты номиналом 5: 1 Внесите монеты номиналом 2: 1 - Квадрат нечётных чисел. Напишите программу, которая изменяет изначальный список и возводит в квадрат только нечётные числа.
numbers = [4, 9, 1, 7, 2, 5, 0, 3, 7, 1, 3] # Изначальный список: [4, 9, 1, 7, 2, 5, 0, 3, 7, 1, 3] # Изменённый список: [4, 81, 1, 49, 2, 25, 0, 9, 49, 1, 9]
🔧 Шаг 0. Подготовка окружения
Перед началом работы над любым заданием курса нужно настроить окружение. Эти шаги одинаковы для всех уроков.
.gitignore, единая история, легко переключаться между уроками.
Создайте (или откройте) рабочую папку
В VS Code нажмите Ctrl+K Ctrl+O → выберите или создайте папку python-fundamentals-practice. Это будет корень вашего учебного репозитория.
# Или в терминале VS Code (Ctrl + `):
mkdir python-fundamentals-practice
cd python-fundamentals-practice
Инициализируйте Git-репозиторий (один раз)
Если папка ещё не является git-репозиторием:
git init
# Создайте базовые файлы
echo "# Python Fundamentals — Практические работы" > README.md
echo "venv/" > .gitignore
echo "__pycache__/" >> .gitignore
echo "*.pyc" >> .gitignore
echo ".env" >> .gitignore
git add README.md .gitignore
git commit -m "init: базовая структура репозитория"
Создайте папку для текущего урока
# Структура: lesson-XX/
mkdir -p lesson-18
cd lesson-18
Создайте виртуальное окружение (venv)
# Windows (PowerShell / CMD)
python -m venv venv
venv\Scripts\activate
# Mac / Linux
python3 -m venv venv
source venv/bin/activate
После активации в начале строки терминала появится (venv). Все дальнейшие команды выполняйте внутри venv.
Создайте ветку для задания
# Вернитесь в корень репозитория
cd ..
# Создайте и переключитесь на ветку
git checkout -b lesson/18-lists-intro
# Отправьте ветку на удалённый репозиторий (если настроен)
git push -u origin lesson/18-lists-intro
Именование веток: lesson/XX-краткое-название. Это позволяет легко находить нужный урок.
🛠️ Шаги выполнения заданий
Теперь, когда окружение готово, приступайте к решению.
Создайте файлы для заданий
В папке lesson-18 создайте файлы:
task_01_vending_machine.py
task_02_square_odd.py
Решите задание 1: торговый автомат
Жадный алгоритм: берём монеты от большего номинала к меньшему.
cost = int(input("Введите стоимость товара: "))
coins = [50, 10, 5, 2, 1]
for coin in coins:
count = cost // coin
cost = cost % coin
if count:
print(f"Внесите монеты номиналом {coin}: {count}")
Решите задание 2: квадрат нечётных чисел
Изменяем исходный список: нечётные элементы возводим в квадрат.
numbers = [4, 9, 1, 7, 2, 5, 0, 3, 7, 1, 3]
for i in range(len(numbers)):
if numbers[i] % 2 != 0:
numbers[i] = numbers[i] ** 2
print("Изменённый список:", numbers)
Проверьте каждый файл в VS Code
Запустите программы и проверьте вывод:
python task_01_vending_machine.py
python task_02_square_odd.py
Проверьте граничные случаи: 0, 1, суммы, не требующие всех номиналов, пустой ввод.
🧪 Как проверить решение
- Активируйте venv:
venv\Scripts\activate(Windows) илиsource venv/bin/activate(Mac/Linux). - Запустите каждый файл:
python task_XX_....py. - Проверьте вывод в терминале — не должно быть ошибок.
- Проверьте граничные случаи: стоимость 0, минимальные и максимальные значения, списки с разными числами.
🐛 Отладка в VS Code
Если что-то не работает:
- Поставьте точку останова (breakpoint) кликом слева от номера строки.
- Нажмите F5 или выберите «Run → Start Debugging».
- Используйте панель Debug (переменные, стек вызовов, консоль).
- Проверьте Terminal на наличие traceback — Python показывает номер строки с ошибкой.
- Если список меняется не так, проверьте, что вы меняете элемент по индексу, а не переменную цикла.
💾 Сохранение работы
# Добавьте все файлы урока
git add lesson-18/
# Сделайте коммит с осмысленным сообщением
git commit -m "lesson-18: lists intro - vending machine and square odd"
# Отправьте на GitHub / GitLab
git push
💡 Советы и типичные ошибки
- Убедитесь, что venv активирован перед запуском.
- Не коммитьте папку
venv/— она указана в.gitignore. - В торговом автомате используйте целочисленное деление
//и остаток%. - Для изменения элементов списка используйте индексы, а не переменную цикла.
- Помните:
my_list * nс изменяемыми элементами создаёт копии ссылок, а не независимые элементы.