📝 Python

Циклы в Python: while и for 🔄

0
ავტორი
04e5cc8b-58ac-4bdc-bdee-661bbb
📅
გამოქვეყნებულია
30.03.2026
⏱️
კითხვის დრო
8 წთ
👁️
ნახვები
16
🌱
დონე
საწყისი
🐦 💼 ✈️

Представь: нужно напечатать числа от 1 до 1000. Писать 1000 строк print()? 😱

Циклы - это супер-сила программирования! Они позволяют повторять действия сколько угодно раз.

🤔 Зачем нужны циклы?

Без циклов (100 строк):

print(1)
print(2)
print(3)
print(4)
print(5)
# ... ещё 95 строк
print(100)

С циклами (2 строки):

for i in range(1, 101):
    print(i)

Разница очевидна! 🚀

🔁 Два типа циклов в Python

Python предлагает два основных типа циклов:

  1. while - пока условие истинно (не знаем сколько раз)
  2. for - для каждого элемента (знаем количество)

Давайте разберём оба!


1️⃣ Цикл WHILE - “пока”

Синтаксис:

while условие:
    код для выполнения

Логика: Пока условие True → выполняй код. Когда False → остановись.

Простой пример - обратный отсчёт:

count = 10

while count > 0:
    print(count)
    count -= 1  # count = count - 1

print("🚀 Пуск!")

Что происходит:
1. count = 10 → 10 > 0 → True → печатает 10, меняет count на 9
2. count = 9 → 9 > 0 → True → печатает 9, меняет count на 8
3. … продолжается …
4. count = 0 → 0 > 0 → False → цикл останавливается!

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

# ❌ НИКОГДА НЕ ДЕЛАЙ ТАК:
count = 10
while count > 0:
    print(count)
    # Забыли count -= 1 !
    # Цикл будет вечным! 😱

Если попал в бесконечный цикл: Нажми Ctrl+C чтобы остановить программу.

Пример - ввод до правильного ответа:

password = ""

while password != "python123":
    password = input("Введи пароль: ")
    if password != "python123":
        print("❌ Неверно, попробуй снова")

print("✅ Доступ разрешён!")

Цикл продолжается пока пароль неправильный.

Пример - игра с while:

health = 100

while health > 0:
    action = input("Действие (атака/защита/бежать): ")

    if action == "атака":
        print("⚔️ Ты атаковал!")
        health -= 20
    elif action == "защита":
        print("🛡️ Ты защищаешься!")
    elif action == "бежать":
        print("🏃 Ты убежал!")
        break  # Выход из цикла

    print(f"💚 Здоровье: {health}")

if health <= 0:
    print("☠️ Игра окончена")

2️⃣ Цикл FOR - “для каждого”

Синтаксис:

for элемент in последовательность:
    код для выполнения

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

📍 Вариант 1: for с range()

range(n) создаёт последовательность чисел от 0 до n-1

for i in range(5):
    print(f"Итерация {i}")

# Выведет:
# Итерация 0
# Итерация 1
# Итерация 2
# Итерация 3
# Итерация 4

range() имеет 3 формы:

range(5)          # 0, 1, 2, 3, 4
range(1, 6)       # 1, 2, 3, 4, 5 (от start до stop-1)
range(0, 10, 2)   # 0, 2, 4, 6, 8 (шаг 2)
range(10, 0, -1)  # 10, 9, 8...1 (обратный)

Пример - таблица умножения:

number = int(input("Введи число: "))

for i in range(1, 11):
    result = number * i
    print(f"{number} x {i} = {result}")

📍 Вариант 2: for со списком

fruits = ["яблоко", "банан", "апельсин"]

for fruit in fruits:
    print(f"Я люблю {fruit}! 🍎")

Python автоматически берёт каждый элемент из списка!

📍 Вариант 3: for со строкой

word = "PYTHON"

for letter in word:
    print(letter)

# P
# Y
# T
# H
# O
# N

Каждая буква обрабатывается отдельно!

Пример - подсчёт гласных:

text = input("Введи текст: ")
vowels = "аеёиоуыэюя"
count = 0

for char in text.lower():
    if char in vowels:
        count += 1

print(f"Гласных букв: {count}")

🛑 BREAK - досрочный выход

break немедленно останавливает цикл.

Пример - поиск числа:

numbers = [3, 7, 12, 5, 18, 9]

for num in numbers:
    if num > 10:
        print(f"Нашли большое число: {num}")
        break  # Нашли, выходим!
    print(f"Проверяем {num}...")

# Выведет:
# Проверяем 3...
# Проверяем 7...
# Нашли большое число: 12

После break цикл полностью прекращается, даже если элементы остались.

Пример - выход из бесконечного цикла:

while True:  # Бесконечный цикл!
    answer = input("Продолжить? (да/нет): ")

    if answer == "нет":
        break  # Выход

    print("Продолжаем работу...")

print("Программа завершена")

⏭️ CONTINUE - пропуск итерации

continue пропускает текущую итерацию и переходит к следующей.

Пример - вывести только чётные:

for i in range(10):
    if i % 2 != 0:  # Если нечётное
        continue     # Пропускаем

    print(i)  # Печатается только чётное

# Выведет: 0, 2, 4, 6, 8

Разница break и continue:

# BREAK - полностью выходит:
for i in range(5):
    if i == 3:
        break
    print(i)
# Выведет: 0, 1, 2 (остановился на 3)

# CONTINUE - пропускает итерацию:
for i in range(5):
    if i == 3:
        continue
    print(i)
# Выведет: 0, 1, 2, 4 (пропустил 3, продолжил)

Пример - фильтрация списка:

names = ["Анна", "Боб", "Алиса", "Борис", "Андрей"]

print("Имена на букву А:")
for name in names:
    if not name.startswith("А"):
        continue  # Пропускаем не на А

    print(name)

# Выведет: Анна, Алиса, Андрей

🎯 Вложенные циклы - цикл в цикле

Цикл может содержать другой цикл!

Пример - квадрат из звёздочек:

size = 5

for row in range(size):
    for col in range(size):
        print("⭐", end="")
    print()  # Новая строка

# ⭐⭐⭐⭐⭐
# ⭐⭐⭐⭐⭐
# ⭐⭐⭐⭐⭐
# ⭐⭐⭐⭐⭐
# ⭐⭐⭐⭐⭐

Что происходит:
- Внешний цикл (row) выполняется 5 раз
- Для каждого row → внутренний цикл (col) выполняется 5 раз
- Итого: 5 × 5 = 25 итераций!

Пример - треугольник:

for row in range(1, 6):
    for col in range(row):
        print("▲", end="")
    print()

# ▲
# ▲▲
# ▲▲▲
# ▲▲▲▲
# ▲▲▲▲▲

Пример - таблица умножения Пифагора:

print("   ", end="")
for i in range(1, 6):
    print(f"{i:3}", end="")
print()

for i in range(1, 6):
    print(f"{i:2} |", end="")
    for j in range(1, 6):
        print(f"{i*j:3}", end="")
    print()

#      1  2  3  4  5
#  1 |  1  2  3  4  5
#  2 |  2  4  6  8 10
#  3 |  3  6  9 12 15
#  4 |  4  8 12 16 20
#  5 |  5 10 15 20 25

📊 Сравнение while и for

Критерий while for
Когда использовать Не знаем сколько раз Знаем количество
Условие Проверяется каждый раз Перебирает последовательность
Риск Бесконечный цикл Безопаснее
Примеры Игровые циклы, ввод данных Обход списков, range()
Читаемость Гибкий Компактный

Решай что использовать:

Используй WHILE когда:
- Неизвестно сколько итераций нужно
- Условие зависит от действий внутри цикла
- Нужен бесконечный цикл с break

Используй FOR когда:
- Обходишь список / строку / диапазон
- Знаешь точное количество итераций
- Нужно пройтись по всем элементам


💡 Полезные техники

1. enumerate() - индекс + элемент:

fruits = ["яблоко", "банан", "апельсин"]

for index, fruit in enumerate(fruits):
    print(f"{index+1}. {fruit}")

# 1. яблоко
# 2. банан
# 3. апельсин

2. Обход словаря:

student = {"имя": "Анна", "возраст": 20, "курс": 2}

for key, value in student.items():
    print(f"{key}: {value}")

# имя: Анна
# возраст: 20
# курс: 2

3. Else после цикла:

for i in range(5):
    if i == 10:  # Никогда не True
        break
else:
    print("Цикл завершился без break")

else выполняется если цикл НЕ прервали через break.

4. Диапазон с шагом:

# Чётные числа:
for i in range(0, 10, 2):
    print(i)  # 0, 2, 4, 6, 8

# Обратный порядок:
for i in range(10, 0, -1):
    print(i)  # 10, 9, 8...1

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

1. Калькулятор с циклом:

while True:
    print("\n🧮 Калькулятор")
    print("1. Сложение")
    print("2. Вычитание")
    print("3. Умножение")
    print("4. Деление")
    print("5. Выход")

    choice = input("Выбор: ")

    if choice == "5":
        print("До встречи!")
        break

    if choice in ["1", "2", "3", "4"]:
        a = float(input("Первое число: "))
        b = float(input("Второе число: "))

        if choice == "1":
            print(f"Результат: {a + b}")
        elif choice == "2":
            print(f"Результат: {a - b}")
        elif choice == "3":
            print(f"Результат: {a * b}")
        elif choice == "4":
            if b != 0:
                print(f"Результат: {a / b}")
            else:
                print("❌ Деление на ноль!")
    else:
        print("❌ Неверный выбор")

2. FizzBuzz - классическая задача:

for i in range(1, 101):
    if i % 15 == 0:
        print("FizzBuzz")
    elif i % 3 == 0:
        print("Fizz")
    elif i % 5 == 0:
        print("Buzz")
    else:
        print(i)

3. Генератор паролей:

import random
import string

length = int(input("Длина пароля: "))
password = ""

for i in range(length):
    char = random.choice(string.ascii_letters + string.digits)
    password += char

print(f"Твой пароль: {password}")

4. Поиск простых чисел:

n = int(input("Найти простые числа до: "))

for num in range(2, n+1):
    is_prime = True

    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            is_prime = False
            break

    if is_prime:
        print(num, end=" ")

⚠️ Распространённые ошибки

1. Забыл отступ:

# ❌ Неправильно:
for i in range(5):
print(i)  # SyntaxError!

# ✅ Правильно:
for i in range(5):
    print(i)

2. Изменение счётчика в for:

# ❌ Не делай так:
for i in range(5):
    print(i)
    i = 10  # Не влияет на цикл!

# ✅ Используй while:
i = 0
while i < 5:
    print(i)
    i += 1  # Работает

3. Забыл изменить переменную в while:

# ❌ Бесконечный:
i = 0
while i < 5:
    print(i)
    # Забыли i += 1

# ✅ Правильно:
i = 0
while i < 5:
    print(i)
    i += 1

4. Неправильный range:

# ❌ range(5, 1) - ничего не выведет:
for i in range(5, 1):
    print(i)

# ✅ Нужен шаг -1:
for i in range(5, 1, -1):
    print(i)  # 5, 4, 3, 2

🚀 Итого

Циклы - это основа программирования!

Ты научился:

✅ Использовать while для циклов с условием
✅ Использовать for для перебора последовательностей
✅ Работать с range() для чисел
✅ Применять break для выхода
✅ Применять continue для пропуска
✅ Создавать вложенные циклы
✅ Избегать бесконечных циклов

С циклами ты можешь:
- Обрабатывать большие объёмы данных
- Создавать игры с повторяющимися действиями
- Автоматизировать рутинные задачи
- Строить сложные алгоритмы


Практикуйся в CodeHS! Создай несколько программ с циклами. Экспериментируй с while, for, break, continue. Комбинируй разные техники! 💪

Следующий шаг: Изучи функции чтобы организовать код ещё лучше! 🎯

თქვენი რეაქცია სტატიაზე

💬 კომენტარები (0)

🔐 შედით სისტემაში კომენტარის დასატოვებლად
🚪 შესვლა
💭

კომენტარები ჯერ არ არის

გახდით პირველი, ვინც გააზიარებს აზრს ამ სტატიის შესახებ!

🔗 მსგავსი

მსგავსი სტატიები

გააგრძელეთ სწავლა ამ მასალებით

📝

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

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

📅 03.04.2026 👁️ 24
📝

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

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

📅 03.04.2026 👁️ 21
📝

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

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

📅 03.04.2026 👁️ 14

მოგეწონათ სტატია?

გამოიწერეთ ჩვენი განახლებები და მიიღეთ ახალი სტატიები პირველებმა. განვითარდით PyLand-თან ერთად!