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

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

Домашнее задание закрепляет работу с циклом while, операторами break и continue, а также модулем random. Нужно написать три программы: сумму цифр числа, проверку палиндрома и игру «Угадай число».

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

📋 Формулировка задания

Исходное задание из LMS:

  1. Сумма цифр числа. Напишите программу, которая вычисляет сумму цифр введённого числа.
    Введите число: 12345
    Сумма цифр: 15
  2. Палиндром. Напишите программу, которая запрашивает у пользователя целое число и определяет, является ли оно палиндромом. Число является палиндромом, если оно читается одинаково слева направо и справа налево.
    Введите число: 12321
    Число 12321 является палиндромом.
    
    Введите число: 1234
    Число 1234 не является палиндромом.
  3. Проверь интуицию. Напишите программу, которая генерирует случайное число от 1 до 100 включительно и даёт пользователю 10 попыток, чтобы угадать это число. Программа должна подсказывать, больше или меньше загаданное число. После завершения игры программа оценивает, насколько хорошая интуиция у игрока.
    Угадайте число от 1 до 100. У вас 10 попыток.
    Ваше предположение: 50
    Загаданное число меньше вашего
    Ваше предположение: 25
    Загаданное число больше вашего
    Ваше предположение: 30
    Поздравляем! Вы угадали число: 30.
    Вы угадали число за 3 попытки. Отличный результат!

🔧 Шаг 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-12
cd lesson-12
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/12-while-loop

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

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

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

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

1

Задание 1: сумма цифр

Создайте файл sum_of_digits.py. Прочитайте число, затем в цикле while извлекайте последнюю цифру через % 10 и убирайте её через // 10.

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

while number > 0:
    digit_sum += number % 10
    number //= 10

print(f"Сумма цифр: {digit_sum}")

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

  1. Запустите: python sum_of_digits.py.
  2. Введите 12345 → ожидается Сумма цифр: 15.
  3. Введите 7 → ожидается Сумма цифр: 7.
  4. Введите 0 → ожидается Сумма цифр: 0.
2

Задание 2: палиндром

Создайте файл palindrome.py. Самый простой способ — сравнить строковое представление числа с его перевёрнутой версией.

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

if text == text[::-1]:
    print(f"Число {number} является палиндромом.")
else:
    print(f"Число {number} не является палиндромом.")

Альтернативный способ через выделение цифр (без строк):

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

while number > 0:
    reversed_number = reversed_number * 10 + number % 10
    number //= 10

if original == reversed_number:
    print(f"Число {original} является палиндромом.")
else:
    print(f"Число {original} не является палиндромом.")

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

  1. Запустите: python palindrome.py.
  2. Введите 12321 → ожидается положительный ответ.
  3. Введите 1234 → ожидается отрицательный ответ.
  4. Введите 5 → ожидается положительный ответ (одна цифра).
3

Задание 3: игра «Угадай число»

Создайте файл guess_number.py. Используйте random.randint(1, 100) и цикл while с ограничением в 10 попыток.

import random

secret = random.randint(1, 100)
max_attempts = 10
attempts = 0

print("Угадайте число от 1 до 100. У вас 10 попыток.")

while attempts < max_attempts:
    guess = int(input("Ваше предположение: "))
    attempts += 1

    if guess == secret:
        print(f"Поздравляем! Вы угадали число: {secret}.")
        print(f"Вы угадали число за {attempts} попытки.")
        break
    if guess < secret:
        print("Загаданное число больше вашего.")
    else:
        print("Загаданное число меньше вашего.")
else:
    print(f"Вы не угадали. Загаданное число было {secret}.")

# Evaluate intuition
if attempts == 1:
    print("Отличная интуиция! Вы угадали с первой попытки!")
elif attempts <= 3:
    print("Отличный результат!")
elif attempts <= 6:
    print("Хороший результат.")
else:
    print("Попробуйте ещё раз, чтобы улучшить интуицию.")

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

  1. Запустите: python guess_number.py.
  2. Введите несколько чисел, чтобы проверить подсказки «больше/меньше».
  3. Угадайте число и проверьте, что счётчик попыток и оценка корректны.
  4. Используйте 10 неверных попыток, чтобы проверить сообщение о проигрыше.

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

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

Задание 1: сумма цифр

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

while number > 0:
    digit_sum += number % 10
    number //= 10

print(f"Сумма цифр: {digit_sum}")

Задание 2: палиндром (строковый способ)

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

if text == text[::-1]:
    print(f"Число {number} является палиндромом.")
else:
    print(f"Число {number} не является палиндромом.")

Задание 3: угадай число

📄 guess_number.py
import random

secret = random.randint(1, 100)
max_attempts = 10
attempts = 0

print("Угадайте число от 1 до 100. У вас 10 попыток.")

while attempts < max_attempts:
    guess = int(input("Ваше предположение: "))
    attempts += 1

    if guess == secret:
        print(f"Поздравляем! Вы угадали число: {secret}.")
        print(f"Вы угадали число за {attempts} попытки.")
        break
    if guess < secret:
        print("Загаданное число больше вашего.")
    else:
        print("Загаданное число меньше вашего.")
else:
    print(f"Вы не угадали. Загаданное число было {secret}.")

if attempts == 1:
    print("Отличная интуиция! Вы угадали с первой попытки!")
elif attempts <= 3:
    print("Отличный результат!")
elif attempts <= 6:
    print("Хороший результат.")
else:
    print("Попробуйте ещё раз, чтобы улучшить интуицию.")

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

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

🐛 Отладка в VS Code

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

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

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

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

# Сделайте коммит с осмысленным сообщением
git commit -m "lesson-12: while loop, break, continue, random"

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

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

  • Убедитесь, что venv активирован перед запуском.
  • Не коммитьте папку venv/ — она указана в .gitignore.
  • Для игры используйте именно random.randint(1, 100), чтобы обе границы были включены.
  • Не забудьте преобразовать результат input() в int, иначе сравнения будут работать некорректно.