📝 Python

Цикл while: повторяем пока условие истинно 🔁

0
Автор
04e5cc8b-58ac-4bdc-bdee-661bbb
📅
Опубликовано
30.03.2026
⏱️
Время чтения
4 мин
👁️
Просмотров
14
🌱
Уровень
Начальный
🐦 💼 ✈️

Цикл for отлично работает когда знаешь сколько раз нужно повторить действие. Но что если неизвестно?

Примеры:
- Игра идет пока игрок жив
- Запрашивай пароль пока не введут правильный
- Атакуй врага пока у него есть здоровье

Для таких ситуаций есть цикл while (пока).

🎯 Как работает while?

Схема:

while условие:
    # Выполняй код
    # пока условие истинно (True)

Цикл проверяет условие. Если True — выполняет код. Потом снова проверяет. И так пока условие не станет False.

🔢 Простой пример: счетчик

count = 0

while count < 5:
    print(f"Счет: {count}")
    count += 1

print("Готово!")

Выведет:

Счет: 0
Счет: 1
Счет: 2
Счет: 3
Счет: 4
Готово!

Как это работает:
1. count = 0 — начальное значение
2. Проверка: 0 < 5? Да → выполняем код
3. Выводим 0, увеличиваем count до 1
4. Проверка: 1 < 5? Да → еще раз
5. …
6. Проверка: 5 < 5? Нет → выходим из цикла

⚠️ Важно: Не забывай изменять переменную внутри цикла! Иначе будет бесконечный цикл.

⚔️ Практический пример: битва

player_health = 100
enemy_health = 80

round_number = 1

while player_health > 0 and enemy_health > 0:
    print(f"\n=== Раунд {round_number} ===")

    # Игрок атакует
    damage = 15
    enemy_health -= damage
    print(f"Ты атакуешь! Враг получает {damage} урона")
    print(f"Здоровье врага: {enemy_health}")

    # Проверка победы
    if enemy_health <= 0:
        print("\n🎉 ТЫ ПОБЕДИЛ!")
        break

    # Враг атакует
    enemy_damage = 10
    player_health -= enemy_damage
    print(f"Враг атакует! Ты получаешь {enemy_damage} урона")
    print(f"Твое здоровье: {player_health}")

    # Проверка поражения
    if player_health <= 0:
        print("\n💀 ТЫ ПРОИГРАЛ!")
        break

    round_number += 1

🛑 Команды управления циклом

break - выход из цикла

break немедленно прерывает цикл:

count = 0

while count < 100:
    print(count)
    count += 1

    if count == 5:
        print("Хватит!")
        break  # Выходим из цикла

print("Цикл завершен")

Выведет:

0
1
2
3
4
Хватит!
Цикл завершен

continue - пропустить итерацию

continue переходит к следующей итерации, пропуская код ниже:

count = 0

while count < 5:
    count += 1

    if count == 3:
        continue  # Пропускаем тройку

    print(count)

Выведет:

1
2
4
5

(Тройка пропущена!)

🎮 Игровой цикл

Классический паттерн игры — основной цикл пока игрок не проиграет:

game_over = False
score = 0

while not game_over:
    print(f"\n💰 Счет: {score}")
    action = input("Действие (атака/защита/выход): ")

    if action == "атака":
        score += 10
        print("⚔️ Успешная атака! +10 очков")
    elif action == "защита":
        score += 5
        print("🛡️ Защита! +5 очков")
    elif action == "выход":
        print("Выход из игры...")
        game_over = True
    else:
        print("❌ Неизвестное действие!")

print(f"\nИгра окончена! Финальный счет: {score}")

🔄 while True - бесконечный цикл

Иногда нужен цикл который работает вечно (пока не встретит break):

while True:
    user_input = input("Введи команду (или 'выход'): ")

    if user_input == "выход":
        print("До свидания!")
        break

    print(f"Ты ввел: {user_input}")

Полезно для:
- Меню программы
- Ожидание правильного ввода
- Игровые циклы

⚠️ Опасность бесконечного цикла

ОШИБКА: Забыли изменить условие

# ❌ НЕ ДЕЛАЙ ТАК!
count = 0

while count < 5:
    print(count)
    # Забыли count += 1
    # Цикл будет выводить 0 бесконечно!

Если попал в бесконечный цикл:
- В CodeHS: нажми кнопку Stop
- В терминале: нажми Ctrl+C

🎲 Пример: угадай число

import random

secret_number = random.randint(1, 10)
attempts = 0

print("Я загадал число от 1 до 10")

while True:
    guess = int(input("Твоя попытка: "))
    attempts += 1

    if guess == secret_number:
        print(f"🎉 Правильно! Попыток: {attempts}")
        break
    elif guess < secret_number:
        print("⬆️ Мое число больше")
    else:
        print("⬇️ Мое число меньше")

📊 for vs while

for while
Знаем количество повторений Повторяем пока условие истинно
for i in range(10): while health > 0:
Перебор списков Игровые циклы
Счетчик автоматически Счетчик вручную
Конец известен заранее Конец зависит от условия

Когда использовать for:
- ✅ Перебор списка
- ✅ Повтор N раз
- ✅ Фиксированное количество итераций

Когда использовать while:
- ✅ Неизвестно сколько повторений
- ✅ Зависит от условия (игрок жив, враг жив)
- ✅ Ожидание ввода пользователя

💪 Практические примеры

Пример 1: Повтор игры

play_again = "да"

while play_again == "да":
    print("\n🎮 Начинаем игру!")

    # Игра здесь...
    print("Игра закончена!")

    play_again = input("Играть еще? (да/нет): ")

print("Спасибо за игру!")

Пример 2: Здоровье не ноль

player_hp = 100

while player_hp > 0:
    print(f"\n❤️ Здоровье: {player_hp}")

    damage = random.randint(10, 20)
    player_hp -= damage

    print(f"💥 Получен урон: {damage}")

    if player_hp <= 0:
        print("\n💀 Игрок повержен!")

Пример 3: Проверка ввода

while True:
    age = input("Сколько тебе лет? ")

    if age.isdigit():  # Проверка что введено число
        age = int(age)
        if age > 0 and age < 150:
            print(f"Тебе {age} лет!")
            break
        else:
            print("❌ Возраст должен быть от 1 до 150")
    else:
        print("❌ Введи число!")

🎯 Итог

Конструкция Применение
while условие: Повторять пока условие True
while True: Бесконечный цикл (используй break)
break Выйти из цикла немедленно
continue Пропустить текущую итерацию
not game_over Пока НЕ game_over

Запомни:
- ✅ while повторяет пока условие True
- ✅ Обязательно изменяй условие внутри цикла!
- ✅ Используй break для выхода
- ✅ Используй continue для пропуска
- ✅ Не забывай двоеточие : и отступы
- ✅ while True + break для меню и ожидания ввода

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

JSON: Сохранение данных как в большой игре 💾

Цель: Научиться сохранять и загружать данные в формате JSON.

📅 03.04.2026 👁️ 24
📝

map() — Преобразуй всё разом! 🔄

map() применяет функцию к каждому элементу списка и возвращает результаты.

📅 03.04.2026 👁️ 21
📝

filter() — Отбери лучшее! 🔍

filter() отбирает элементы, которые проходят проверку (возвращают True).

📅 03.04.2026 👁️ 13

Понравилась статья?

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