<MyRusakov.ru />

WordPress 6 с Нуля до Гуру

WordPress 6 с Нуля до Гуру

Этот курс научит Вас созданию самых разных сайтов на самой популярной в мире CMS - WordPress. Вы увидите установку и настройку локального сервера, разбор каждой настройки, каждой кнопки и каждого пункта меню в панели WordPress.

Также Вы получите и всю практику, поскольку прямо в курсе с нуля создаётся полноценный Интернет-магазин, который затем публикуется в Интернете. И всё это прямо на Ваших глазах.

Помимо уроков к курсу идут упражнения для закрепления материала.

И, наконец, к курсу идёт ценнейший Бонус по тому, как используя ChatGPT и создавая контент для сайта, можно выйти на пассивный доход. Вы наглядно увидите, как зарегистрироваться в ChatGPT (в том числе, и если Вы из России), как правильно выбрать тему для сайта, как правильно генерировать статьи для него(чтобы они индексировались поисковыми системами) и как правильно монетизировать трафик на сайте.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Циклы в Python: for, while, range, enumerate и else — понятное руководство с примерами

Циклы в Python: for, while, range, enumerate и else — понятное руководство с примерами

Циклы — один из первых инструментов, которые осваивают в Python. Они помогают обходить коллекции, повторять действия и управлять потоком выполнения. В этом руководстве мы разберём цикл for и while, функции range и enumerate, совместную итерацию с zip, а также break, continue и малоизвестную конструкцию else у циклов.

Цикл for: итерация по коллекциям

В Python цикл for итерируется по элементам последовательности (список, строка, кортеж, словарь и т.п.), а не по индексам — это делает код чище.

fruits = ["яблоко", "банан", "киви"]
for fruit in fruits:
    print(f"Мне нравится {fruit}")

Итерироваться можно и по строкам:

for ch in "Python":
    print(ch, end=" ")  # P y t h o n

range: последовательности чисел без лишней памяти

range создаёт «ленивую» последовательность чисел: сам по себе почти не занимает память, но выдаёт значения по мере итерации.

# range(stop)
for i in range(5):
    print(i)  # 0..4

# range(start, stop)
for i in range(2, 7):
    print(i)  # 2..6

# range(start, stop, step)
for i in range(10, 0, -2):
    print(i)  # 10, 8, 6, 4, 2

Частая ошибка — ожидать, что range(5) даст 1..5. На самом деле stop не включается.

enumerate: индекс и значение без range(len(...))

Вместо «антипаттерна» for i in range(len(seq)) используйте enumerate — так вы сразу получаете индекс и элемент, код читабельнее и безопаснее.

users = ["Ann", "Bo", "Cat"]
for idx, name in enumerate(users, start=1):
    print(f"{idx}. {name}")

zip: параллельная итерация по нескольким последовательностям

zip объединяет последовательности по элементам. По умолчанию останавливается на самой короткой.

names = ["CPU", "RAM", "SSD"]
prices = [120, 60, 80]
for name, price in zip(names, prices):
    print(f"{name}: ${price}")

Нужно строгое совпадение длины списков? В Python 3.10+ используйте zip(..., strict=True) — он бросит исключение при несовпадении:

for name, price in zip(names, prices, strict=True):
    ...  # ValueError, если длины различаются

Если нужно «дотянуть» короткую последовательность значением по умолчанию, используйте itertools.zip_longest.

from itertools import zip_longest
for a, b in zip_longest([1, 2, 3], [10], fillvalue=0):
    print(a, b)  # 1 10; 2 0; 3 0

break, continue и else у циклов

  • break — прерывает цикл целиком.
  • continue — переходит к следующей итерации.
  • else у цикла — выполняется, если цикл завершился без break.
# Поиск простого числа: если делитель не найден, сработает else
n = 29
for d in range(2, int(n ** 0.5) + 1):
    if n % d == 0:
        print(f"{n} составное")
        break
else:
    print(f"{n} простое")

Ещё пример с continue: пропустим отрицательные числа и посчитаем сумму положительных.

nums = [2, -1, 7, -3, 4]
s = 0
for x in nums:
    if x < 0:
        continue
    s += x
print(s)  # 13

Цикл while: когда условие важнее последовательности

Используйте while, если нужно повторять действие до выполнения условия.

# Считывание hasta-сигнала (пока пользователь не введёт пустую строку)
lines = []
while True:
    line = input()
    if not line:
        break
    lines.append(line)
print("\n".join(lines))

У while тоже есть else — он выполнится, если цикл завершён без break.

attempts = 3
password = "s3cr3t"
while attempts:
    guess = input("Пароль: ")
    if guess == password:
        print("Вход выполнен")
        break
    attempts -= 1
else:
    print("Попытки исчерпаны")

Итерация по словарям: items, keys, values

Итерируйте словари правильно: используйте .items() для пары ключ-значение.

user = {"name": "Ann", "age": 30}
for key, value in user.items():
    print(key, value)

Если нужны только ключи или значения:

for k in user.keys():
    print(k)
for v in user.values():
    print(v)

Частые ошибки и лучшие практики

  • Не модифицируйте список, по которому итерируетесь. Либо итерируйтесь по копии, либо создавайте новый список.
nums = [1, 2, 3, 4]
# Плохо: удаление во время итерации ломает индексы
# for x in nums:
#     if x % 2 == 0:
#         nums.remove(x)

# Хорошо: создаём новый список
filtered = []
for x in nums:
    if x % 2 != 0:
        filtered.append(x)
print(filtered)  # [1, 3]
  • Не злоупотребляйте range(len(...)). Предпочитайте enumerate и прямую итерацию.
  • Следите за условиями в while. Избегайте бесконечных циклов по ошибке. Если нужен «намеренный» бесконечный — используйте while True с понятным break.
  • Выносите тяжёлые вычисления из тела цикла. Например, заранее вычислите длину или подготовьте структуры данных.

Паттерны, ускоряющие работу

Итерация парой индекс-элемент:

for i, x in enumerate(data):
    ...

Итерация по двум спискам с валидацией длины (Python 3.10+):

for a, b in zip(a_list, b_list, strict=True):
    ...

Замена вложенных циклов на product:

from itertools import product
for x, y in product(range(3), range(2)):
    print(x, y)

Мини‑практика

  1. Подсчёт частоты слов: пройтись по словам строки и собрать словарь частот.
  2. Слияние списков с проверкой длины: склеить два списка в пары, упасть с ошибкой при разной длине (используйте zip(..., strict=True)).
  3. Поиск первого элемента по условию: найти первое число > 100 в списке; если не найдено — вывести сообщение (подсказка: for...else).

Итоги

Вы узнали, как правильно выбирать между for и while, использовать range, enumerate и zip, а также управлять циклом с помощью break/continue и else. Эти техники покрывают 80% сценариев в повседневном Python-коде.

Хотите закрепить всё на практике и пройти полный путь от основ до продвинутых тем с задачами и проверкой? Загляните в курс «Прокачай Python от нуля до гуру на реальных проектах» — там вы отточите навыки циклов и не только.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (https://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: https://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: https://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

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

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.