Счётчик в цикле while
Иногда нужно выполнить цикл ровно N раз, но при этом использовать while — например, потому что помимо счёта есть дополнительные условия выхода, или шаг счётчика меняется динамически.
В таких случаях переменную-счётчик создают вручную.
Базовая схема
Три обязательных элемента:
- Инициализация до цикла (
count = 0) - Условие в заголовке (
count < limit) - Обновление в конце тела (
count = count + 1)
Если забыть обновление — цикл никогда не завершится.
Почему не просто for?
Цикл for лучше когда шаг постоянный и известен заранее. while со счётчиком нужен когда:
Несколько условий выхода:
Переменный шаг:
Откат назад:
Важно: в Lua нет ++ и +=
В JavaScript, C++, Python есть удобные операторы i++ или i += 1. В Lua их нет. Всегда пиши полную форму:
Счётчик для отслеживания прогресса
🚀 Задания
Задание 1
Напиши систему попыток входа: 3 попытки ввести пароль через read(). После каждой неверной попытки — сообщение с количеством оставшихся. После трёх — блокировка.
Задание 2 Напиши цикл, который выводит числа 1, 2, 4, 8, 16, 32... (каждый раз умножает на 2) пока число не превысит 1000. Выведи, сколько шагов потребовалось.
Задание 3
Создай счётчик с условием досрочного выхода: цикл считает от 1 до 100, но если число кратно 7 (i % 7 == 0) — выходит через break. Выведи на каком числе остановился.
Задание 4
Напиши "игру в угадайку": загадай число через math.random(1, 10). Игрок вводит числа через read() пока не угадает. Считай количество попыток и выведи его в конце.
Задание 5 Объясни почему этот код зависнет и исправь: