📋 Формулировка задания
Исходное задание из LMS:
- Сумма цифр числа. Напишите программу, которая вычисляет сумму цифр введённого числа.
Введите число: 12345 Сумма цифр: 15 - Палиндром. Напишите программу, которая запрашивает у пользователя целое число и определяет, является ли оно палиндромом. Число является палиндромом, если оно читается одинаково слева направо и справа налево.
Введите число: 12321 Число 12321 является палиндромом. Введите число: 1234 Число 1234 не является палиндромом. - Проверь интуицию. Напишите программу, которая генерирует случайное число от
1до100включительно и даёт пользователю10попыток, чтобы угадать это число. Программа должна подсказывать, больше или меньше загаданное число. После завершения игры программа оценивает, насколько хорошая интуиция у игрока.Угадайте число от 1 до 100. У вас 10 попыток. Ваше предположение: 50 Загаданное число меньше вашего Ваше предположение: 25 Загаданное число больше вашего Ваше предположение: 30 Поздравляем! Вы угадали число: 30. Вы угадали число за 3 попытки. Отличный результат!
🔧 Шаг 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-12
cd lesson-12
Создайте виртуальное окружение (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/12-while-loop
# Отправьте ветку на удалённый репозиторий (если настроен)
git push -u origin lesson/12-while-loop
Именование веток: lesson/XX-краткое-название. Это позволяет легко находить нужный урок.
🛠️ Шаги выполнения задания
Теперь, когда окружение готово, приступайте к решению.
Задание 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:
- Запустите:
python sum_of_digits.py. - Введите
12345→ ожидаетсяСумма цифр: 15. - Введите
7→ ожидаетсяСумма цифр: 7. - Введите
0→ ожидаетсяСумма цифр: 0.
Задание 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:
- Запустите:
python palindrome.py. - Введите
12321→ ожидается положительный ответ. - Введите
1234→ ожидается отрицательный ответ. - Введите
5→ ожидается положительный ответ (одна цифра).
Задание 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:
- Запустите:
python guess_number.py. - Введите несколько чисел, чтобы проверить подсказки «больше/меньше».
- Угадайте число и проверьте, что счётчик попыток и оценка корректны.
- Используйте
10неверных попыток, чтобы проверить сообщение о проигрыше.
✅ Полные решения
Ниже приведены полные решения всех трёх заданий. Совет: попробуйте выполнить самостоятельно, прежде чем смотреть ответ.
Задание 1: сумма цифр
number = int(input("Введите число: "))
digit_sum = 0
while number > 0:
digit_sum += number % 10
number //= 10
print(f"Сумма цифр: {digit_sum}")
Задание 2: палиндром (строковый способ)
number = int(input("Введите число: "))
text = str(number)
if text == text[::-1]:
print(f"Число {number} является палиндромом.")
else:
print(f"Число {number} не является палиндромом.")
Задание 3: угадай число
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("Попробуйте ещё раз, чтобы улучшить интуицию.")
🧪 Как проверить решение
- Активируйте venv:
venv\Scripts\activate(Windows) илиsource venv/bin/activate(Mac/Linux). - Запустите каждый файл:
python sum_of_digits.py,python palindrome.py,python guess_number.py. - Проверьте вывод в терминале — не должно быть ошибок.
- Проверьте граничные случаи:
0, однозначные числа, отрицательные (если программа должна их поддерживать), максимальное количество попыток в игре.
🐛 Отладка в VS Code
Если что-то не работает:
- Поставьте точку останова (breakpoint) кликом слева от номера строки.
- Нажмите F5 или выберите «Run → Start Debugging».
- Используйте панель Debug (переменные, стек вызовов, консоль).
- Проверьте Terminal на наличие traceback — Python показывает номер строки с ошибкой.
- Если программа «зависла», скорее всего, образовался бесконечный цикл. Проверьте, что переменная цикла меняется внутри тела.
💾 Сохранение работы
# Добавьте все файлы урока
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, иначе сравнения будут работать некорректно.