Перейти к содержанию

Урок 004: циклы и повторение

Цель

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

Цикл for

for подходит, когда набор повторений известен заранее:

for attempt in range(1, 4):
    print(f"Проверка {attempt}")

Ожидаемый вывод:

Проверка 1
Проверка 2
Проверка 3

range(1, 4) создаёт числа 1, 2, 3; правая граница не включается.

Пример накопления суммы:

total = 0

for number in range(1, 4):
    total = total + number

print(total)

После трёх итераций total равен 6. Запишите значения переменных после каждого шага — это простой способ понять цикл.

Цикл while

while выполняется, пока условие истинно. Он подходит для повторного запроса:

price = -1

while price < 0:
    price = float(input("Введите неотрицательную цену: "))

print(f"Цена принята: {price:.2f}")

Этот пример не обрабатывает буквенный ввод; добавим try и continue:

while True:
    price_text = input("Цена: ").replace(",", ".")

    try:
        price = float(price_text)
    except ValueError:
        print("Ошибка: введите число")
        continue

    if price < 0:
        print("Ошибка: цена не может быть отрицательной")
        continue

    break

print(f"Цена принята: {price:.2f}")
  • continue немедленно начинает следующую итерацию.
  • break завершает ближайший цикл.
  • while True безопасен только при понятном и достижимом break.

Защита от бесконечного цикла

Перед запуском ответьте:

  1. какое условие продолжает цикл;
  2. что меняется на каждой итерации;
  3. при каком вводе достигается завершение;
  4. что увидит пользователь после ошибки.

Если ни одно значение не приближает программу к завершению, цикл бесконечен. Остановить зависшую консольную программу обычно можно сочетанием Ctrl+C.

Упражнение

Создайте quantity_loop.py, который запрашивает целое неотрицательное количество до получения корректного значения. Проверьте ввод abc, -2, 0 и 5. После принятия значения программа должна один раз вывести сводку и завершиться.

Дополнительно используйте for, чтобы напечатать номера трёх контрольных сценариев: Сценарий 1, Сценарий 2, Сценарий 3.

Самопроверка

  • Когда выбирать for, а когда while?
  • Чем continue отличается от break?
  • Как доказать, что цикл может завершиться?
  • Почему преобразование находится внутри try?

← Предыдущий урок · Следующий урок →