🏠 Домашнее задание

⚡ Суть задания

Урок 13 — практикум, поэтому основное домашнее задание было задано в уроке 12. Здесь приведены три дополнительные задачи для закрепления: поиск максимума в последовательности, перевод числа в двоичную систему и проверка совершенного числа.

Результат: три рабочих файла .py, которые корректно обрабатывают пользовательский ввод.

📝 Примечание

Этот урок посвящён практическим задачам в классе. Если вы ещё не выполнили основное домашнее задание, начните с урока 12: сумма цифр, палиндром и игра «Угадай число».

Дополнительные задачи для практики

Задача 1. Максимум последовательности. Напишите программу, которая считывает положительные числа до ввода 0 и выводит максимальное из них.

Введите число: 5
Введите число: 12
Введите число: 3
Введите число: 0
Максимум: 12

Задача 2. Двоичное представление. Напишите программу, которая принимает неотрицательное целое число и выводит его двоичное представление без ведущих нулей. Не используйте встроенную функцию bin().

Введите число: 13
Двоичное представление: 1101

Задача 3. Совершенное число. Напишите программу, которая проверяет, является ли введённое число совершенным. Совершенное число равно сумме своих делителей, меньших самого числа.

Введите число: 28
Число 28 является совершенным.

Введите число: 10
Число 10 не является совершенным.

🔧 Шаг 0. Подготовка окружения

Перед началом работы над любым заданием курса нужно настроить окружение. Эти шаги одинаковы для всех уроков.

📁 Структура репозитория: мы используем один репозиторий для всех практических работ курса. Это удобнее, чем 46 отдельных репозиториев: общий .gitignore, единая история, легко переключаться между уроками.
1

Создайте (или откройте) рабочую папку

В VS Code нажмите Ctrl+K Ctrl+O → выберите или создайте папку python-fundamentals-practice. Это будет корень вашего учебного репозитория.

# Или в терминале VS Code (Ctrl + `):
mkdir python-fundamentals-practice
cd python-fundamentals-practice
2

Инициализируйте 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: базовая структура репозитория"
3

Создайте папку для текущего урока

# Структура: lesson-XX/
mkdir -p lesson-13
cd lesson-13
4

Создайте виртуальное окружение (venv)

# Windows (PowerShell / CMD)
python -m venv venv
venv\Scripts\activate

# Mac / Linux
python3 -m venv venv
source venv/bin/activate

После активации в начале строки терминала появится (venv). Все дальнейшие команды выполняйте внутри venv.

5

Создайте ветку для задания

# Вернитесь в корень репозитория
cd ..

# Создайте и переключитесь на ветку
git checkout -b lesson/13-practice-3

# Отправьте ветку на удалённый репозиторий (если настроен)
git push -u origin lesson/13-practice-3

Именование веток: lesson/XX-краткое-название. Это позволяет легко находить нужный урок.

🛠️ Шаги выполнения задания

Теперь, когда окружение готово, приступайте к решению дополнительных задач.

1

Задача 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:

  1. Запустите: python max_sequence.py.
  2. Введите 5 12 3 0 → ожидается Максимум: 12.
  3. Введите сразу 0 → ожидается Максимум: 0.
2

Задача 2: двоичное представление

Создайте файл binary.py. Делите число на 2, накапливая остатки, затем переверните строку.

number = int(input("Введите число: "))
binary = ""

while number > 0:
    binary = str(number % 2) + binary
    number //= 2

print(f"Двоичное представление: {binary}")

Проверка в VS Code:

  1. Запустите: python binary.py.
  2. Введите 13 → ожидается 1101.
  3. Введите 0 → ожидается пустая строка (или можно вывести 0 отдельно).
3

Задача 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:

  1. Запустите: python perfect_number.py.
  2. Введите 28 → ожидается положительный ответ (1 + 2 + 4 + 7 + 14 = 28).
  3. Введите 10 → ожидается отрицательный ответ.

✅ Полные решения

Ниже приведены полные решения всех трёх дополнительных задач. Совет: попробуйте выполнить самостоятельно, прежде чем смотреть ответ.

Задача 1: максимум последовательности

📄 max_sequence.py
maximum = 0

while True:
    number = int(input("Введите число: "))
    if number == 0:
        break
    if number > maximum:
        maximum = number

print(f"Максимум: {maximum}")

Задача 2: двоичное представление

📄 binary.py
number = int(input("Введите число: "))
binary = ""

while number > 0:
    binary = str(number % 2) + binary
    number //= 2

print(f"Двоичное представление: {binary}")

Задача 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} не является совершенным.")

🧪 Как проверить решение

  1. Активируйте venv: venv\Scripts\activate (Windows) или source venv/bin/activate (Mac/Linux).
  2. Запустите каждый файл: python max_sequence.py, python binary.py, python perfect_number.py.
  3. Проверьте вывод в терминале — не должно быть ошибок.
  4. Проверьте граничные случаи: 0, отрицательные числа, максимальное количество попыток.

🐛 Отладка в VS Code

Если что-то не работает:

  1. Поставьте точку останова (breakpoint) кликом слева от номера строки.
  2. Нажмите F5 или выберите «Run → Start Debugging».
  3. Используйте панель Debug (переменные, стек вызовов, консоль).
  4. Проверьте Terminal на наличие traceback — Python показывает номер строки с ошибкой.
  5. Если программа «зависла», скорее всего, образовался бесконечный цикл. Проверьте, что переменная цикла меняется внутри тела.

💾 Сохранение работы

# Добавьте все файлы урока
git add lesson-13/

# Сделайте коммит с осмысленным сообщением
git commit -m "lesson-13: practice 3 — additional loop exercises"

# Отправьте на GitHub / GitLab
git push

💡 Советы и типичные ошибки

  • Убедитесь, что venv активирован перед запуском.
  • Не коммитьте папку venv/ — она указана в .gitignore.
  • Не забудьте преобразовать результат input() в int.
  • В задаче с двоичным представлением учитывайте случай 0.