📝 Примечание
Этот урок посвящён практическим задачам в классе. Если вы ещё не выполнили основное домашнее задание, начните с урока 12: сумма цифр, палиндром и игра «Угадай число».
Дополнительные задачи для практики
Задача 1. Максимум последовательности. Напишите программу, которая считывает положительные числа до ввода 0 и выводит максимальное из них.
Введите число: 5
Введите число: 12
Введите число: 3
Введите число: 0
Максимум: 12
Задача 2. Двоичное представление. Напишите программу, которая принимает неотрицательное целое число и выводит его двоичное представление без ведущих нулей. Не используйте встроенную функцию bin().
Введите число: 13
Двоичное представление: 1101
Задача 3. Совершенное число. Напишите программу, которая проверяет, является ли введённое число совершенным. Совершенное число равно сумме своих делителей, меньших самого числа.
Введите число: 28
Число 28 является совершенным.
Введите число: 10
Число 10 не является совершенным.
🔧 Шаг 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-13
cd lesson-13
Создайте виртуальное окружение (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/13-practice-3
# Отправьте ветку на удалённый репозиторий (если настроен)
git push -u origin lesson/13-practice-3
Именование веток: lesson/XX-краткое-название. Это позволяет легко находить нужный урок.
🛠️ Шаги выполнения задания
Теперь, когда окружение готово, приступайте к решению дополнительных задач.
Задача 1: максимум последовательности
Создайте файл max_sequence.py. Используйте цикл while True с break при вводе 0. Сравнивайте каждое новое число с текущим максимумом.
maximum = 0
while True:
number = int(input("Введите число: "))
if number == 0:
break
if number > maximum:
maximum = number
print(f"Максимум: {maximum}")
Проверка в VS Code:
- Запустите:
python max_sequence.py. - Введите
5 12 3 0→ ожидаетсяМаксимум: 12. - Введите сразу
0→ ожидаетсяМаксимум: 0.
Задача 2: двоичное представление
Создайте файл binary.py. Делите число на 2, накапливая остатки, затем переверните строку.
number = int(input("Введите число: "))
binary = ""
while number > 0:
binary = str(number % 2) + binary
number //= 2
print(f"Двоичное представление: {binary}")
Проверка в VS Code:
- Запустите:
python binary.py. - Введите
13→ ожидается1101. - Введите
0→ ожидается пустая строка (или можно вывести0отдельно).
Задача 3: совершенное число
Создайте файл perfect_number.py. Найдите все делители числа, кроме самого числа, и сравните их сумму с исходным числом.
number = int(input("Введите число: "))
divisor_sum = 0
i = 1
while i < number:
if number % i == 0:
divisor_sum += i
i += 1
if divisor_sum == number:
print(f"Число {number} является совершенным.")
else:
print(f"Число {number} не является совершенным.")
Проверка в VS Code:
- Запустите:
python perfect_number.py. - Введите
28→ ожидается положительный ответ (1 + 2 + 4 + 7 + 14 = 28). - Введите
10→ ожидается отрицательный ответ.
✅ Полные решения
Ниже приведены полные решения всех трёх дополнительных задач. Совет: попробуйте выполнить самостоятельно, прежде чем смотреть ответ.
Задача 1: максимум последовательности
maximum = 0
while True:
number = int(input("Введите число: "))
if number == 0:
break
if number > maximum:
maximum = number
print(f"Максимум: {maximum}")
Задача 2: двоичное представление
number = int(input("Введите число: "))
binary = ""
while number > 0:
binary = str(number % 2) + binary
number //= 2
print(f"Двоичное представление: {binary}")
Задача 3: совершенное число
number = int(input("Введите число: "))
divisor_sum = 0
i = 1
while i < number:
if number % i == 0:
divisor_sum += i
i += 1
if divisor_sum == number:
print(f"Число {number} является совершенным.")
else:
print(f"Число {number} не является совершенным.")
🧪 Как проверить решение
- Активируйте venv:
venv\Scripts\activate(Windows) илиsource venv/bin/activate(Mac/Linux). - Запустите каждый файл:
python max_sequence.py,python binary.py,python perfect_number.py. - Проверьте вывод в терминале — не должно быть ошибок.
- Проверьте граничные случаи:
0, отрицательные числа, максимальное количество попыток.
🐛 Отладка в VS Code
Если что-то не работает:
- Поставьте точку останова (breakpoint) кликом слева от номера строки.
- Нажмите F5 или выберите «Run → Start Debugging».
- Используйте панель Debug (переменные, стек вызовов, консоль).
- Проверьте Terminal на наличие traceback — Python показывает номер строки с ошибкой.
- Если программа «зависла», скорее всего, образовался бесконечный цикл. Проверьте, что переменная цикла меняется внутри тела.
💾 Сохранение работы
# Добавьте все файлы урока
git add lesson-13/
# Сделайте коммит с осмысленным сообщением
git commit -m "lesson-13: practice 3 — additional loop exercises"
# Отправьте на GitHub / GitLab
git push
💡 Советы и типичные ошибки
- Убедитесь, что venv активирован перед запуском.
- Не коммитьте папку
venv/— она указана в.gitignore. - Не забудьте преобразовать результат
input()вint. - В задаче с двоичным представлением учитывайте случай
0.