Представь: нужно напечатать числа от 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 предлагает два основных типа циклов:
while- пока условие истинно (не знаем сколько раз)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)
Комментариев пока нет
Станьте первым, кто поделится мнением об этой статье!