Зачем нужен цикл: проблема копипасты
Представь: тебе нужно написать программу, которая 10 раз выводит «Привет!». Без цикла пришлось бы написать `print("Привет!")` десять раз подряд. А если нужно 100 раз? Или 1000? Копировать тысячу строк — не программирование, а мучение.
Цикл решает эту проблему. Ты говоришь компьютеру: «Выполни это действие столько-то раз» — и он повторяет автоматически. Одна строка кода вместо тысячи.
Цикл for: когда знаешь, сколько раз повторить
Цикл `for` используется, когда заранее известно количество повторений. Например: `for i in range(10): print("Привет!")` — выведет «Привет!» ровно 10 раз. `range(10)` создаёт последовательность чисел от 0 до 9, и цикл проходит по каждому из них.
Аналогия из жизни: ты делаешь 20 приседаний на физкультуре. Ты знаешь заранее: ровно 20 раз, не больше и не меньше. Тренер говорит «начали» — ты повторяешь движение 20 раз и останавливаешься. Вот это и есть цикл `for`.
Цикл while: когда повторяешь до выполнения условия
Цикл `while` повторяет действия, пока выполняется какое-то условие. Например: `while число != 7: спроси число у пользователя` — программа будет спрашивать снова и снова, пока ты не введёшь семёрку.
Аналогия: ты ищешь ключи. Пока ключи не найдены — проверяешь карманы, сумку, стол, тумбочку. Как только нашёл — останавливаешься. Ты не знаешь заранее, сколько мест проверишь. Это цикл `while`.
Как не запутаться: for или while
Простое правило: знаешь точное количество повторений — используй `for`. Не знаешь, когда остановиться, но знаешь условие — используй `while`. На практике `for` встречается чаще, потому что большинство задач — «обработать каждый элемент из списка» или «повторить N раз».
Главная ошибка новичков с `while` — бесконечный цикл. Если условие никогда не станет ложным, программа будет работать вечно. Поэтому всегда проверяй: есть ли в теле цикла что-то, что в итоге изменит условие на false?
- for — для повторений с известным количеством
- while — для повторений до выполнения условия
- break — прервать цикл досрочно
- continue — пропустить текущую итерацию