Python
Задачи на цикл while в Python
Цикл while нужен там, где количество повторов заранее неизвестно: пользователь вводит данные до команды остановки, пароль проверяется до успеха, меню работает до выхода
В каждой задаче важно следить за условием остановки. Если переменная внутри цикла не меняется, программа может зависнуть
Как работать с подборкой
Материал тренирует цикл while на практических сценариях, где for подходит хуже
Перед просмотром решения попробуйте написать хотя бы черновик. Если задача не идет, выпишите входные данные, ожидаемый результат и одно действие, которое нужно сделать первым
После решения измените данные и запустите код снова. Так вы быстрее увидите, где программа привязана только к одному примеру
Задачи с решениями
Задача 1. Счетчик до N через while
Условие: Выведите числа от 1 до N, используя while
Подсказка: Не забудьте увеличивать счетчик, иначе цикл станет бесконечным
Решение:
n = int(input("N: "))
current = 1
while current <= n:
print(current)
current += 1
Проверка: Проверьте N = 3
Задача 2. Сумма до нуля
Условие: Пользователь вводит числа, программа суммирует их, пока не введен 0
Подсказка: 0 здесь работает как сигнал остановки
Решение:
total = 0
number = int(input("Число: "))
while number != 0:
total += number
number = int(input("Число: "))
print(total)
Проверка: Введите 5, 7, 0 и получите 12
Задача 3. Угадай число
Условие: Программа хранит число, пользователь вводит варианты до правильного ответа
Подсказка: Внутри цикла дайте подсказку больше или меньше
Решение:
secret = 7
guess = int(input("Угадайте число: "))
while guess != secret:
if guess < secret:
print("Больше")
else:
print("Меньше")
guess = int(input("Попробуйте еще раз: "))
print("Верно")
Проверка: Проверьте варианты 3, 10 и 7
Задача 4. Пароль с тремя попытками
Условие: Дайте пользователю три попытки ввести правильный пароль
Подсказка: Храните количество попыток в отдельной переменной
Решение:
password = "python123"
attempts = 3
while attempts > 0:
user_password = input("Пароль: ")
if user_password == password:
print("Вход выполнен")
break
attempts -= 1
else:
print("Попытки закончились")
Проверка: Проверьте правильный пароль со второй попытки
Задача 5. Цифры числа
Условие: Посчитайте сумму цифр положительного числа
Подсказка: Берите последнюю цифру через % 10 и убирайте ее через // 10
Решение:
number = int(input("Число: "))
total = 0
while number > 0:
total += number % 10
number //= 10
print(total)
Проверка: Для 1234 результат должен быть 10
Задача 6. Факториал
Условие: Посчитайте факториал числа через while
Подсказка: Начните result с 1, потому что это нейтральное значение для умножения
Решение:
n = int(input("N: "))
result = 1
current = 1
while current <= n:
result *= current
current += 1
print(result)
Проверка: Для 5 результат должен быть 120
Задача 7. Первое число больше 100
Условие: Увеличивайте число в два раза, пока оно не станет больше 100
Подсказка: Эта задача тренирует условие продолжения цикла
Решение:
number = int(input("Стартовое число: "))
while number <= 100:
number *= 2
print(number)
Проверка: Проверьте стартовые числа 3 и 60
Задача 8. Меню команд
Условие: Показывайте меню, пока пользователь не введет команду exit
Подсказка: Так строятся простые консольные программы
Решение:
command = ""
while command != "exit":
command = input("Команда: ")
if command == "help":
print("Доступные команды: help, exit")
elif command != "exit":
print("Неизвестная команда")
print("Программа завершена")
Проверка: Проверьте help, test и exit
Задача 9. Среднее значение до пустой строки
Условие: Пользователь вводит числа, пустая строка завершает ввод, программа считает среднее
Подсказка: Для пустой строки нельзя сразу делать int
Решение:
total = 0
count = 0
value = input("Число: ")
while value != "":
total += int(value)
count += 1
value = input("Число: ")
if count > 0:
print(total / count)
else:
print("Нет чисел")
Проверка: Проверьте ввод 10, 20, пустая строка
Задача 10. Удаление задач из очереди
Условие: Пока в списке есть задачи, удаляйте первую и печатайте ее
Подсказка: while удобен, когда заранее неизвестно количество шагов
Решение:
tasks = ["письмо", "звонок", "отчет"]
while tasks:
task = tasks.pop(0)
print(f"Выполняю: {task}")
Проверка: Убедитесь, что список стал пустым
Задача 11. Обратный отсчет
Условие: Пользователь вводит число, программа считает вниз до нуля
Подсказка: Уменьшайте счетчик на один на каждом шаге
Решение:
number = int(input("Старт: "))
while number >= 0:
print(number)
number -= 1
Проверка: Для 3 программа должна вывести 3, 2, 1, 0
Задача 12. Подтверждение действия
Условие: Повторяйте вопрос, пока пользователь не введет yes или no
Подсказка: while помогает дождаться корректного ответа
Решение:
answer = input("Продолжить? yes/no: ").lower()
while answer not in ("yes", "no"):
print("Введите yes или no")
answer = input("Продолжить? yes/no: ").lower()
print(f"Ответ принят: {answer}")
Проверка: Проверьте варианты maybe, YES и no
По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы
По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы
Как проверять свои решения
Для каждой задачи сделайте минимум три запуска: обычный пример, крайний пример и пример с неожиданными данными. Для чисел это может быть ноль или отрицательное значение, для строк — пустая строка, для списков — пустой список или повторяющиеся элементы
Если код работает, объясните его словами. Скажите, какие данные приходят на вход, что хранится в переменных, где меняется результат и почему программа останавливается
Частые ошибки новичков
- читать решение, но не запускать его руками
- менять сразу несколько строк и не понимать, какая из них сломала код
- называть переменные одной буквой там, где можно написать понятное имя
- забывать проверять пустые строки, пустые списки и ноль
- путать вывод через print и возврат результата через return
- оставлять код рабочим только для одного заранее выбранного примера
Дополнительные задачи
Задача 13. Повтор ввода до правильного пароля
Условие: Запрашивайте пароль, пока пользователь не введет правильное значение
password = "python123"
user_input = ""
while user_input != password:
user_input = input("Пароль: ")
print("Вход выполнен")
Проверка: Подумайте, нужен ли лимит попыток, если программа используется не в учебном примере
Задача 14. Меню команд
Условие: Показывайте меню, пока пользователь не выберет выход
while True:
command = input("add/list/exit: ").strip().lower()
if command == "add":
print("Добавление")
elif command == "list":
print("Список")
elif command == "exit":
break
else:
print("Неизвестная команда")
Проверка: Добавьте команду help, которая выводит доступные действия