Обучающий материал: Циклы в Python
Полное руководство с примерами, задачами и тестами
1. Что такое циклы и зачем они нужны?
Циклы — это конструкции, которые позволяют выполнять один и тот же блок кода несколько раз. Они используются, когда нужно повторить какие-то действия без ручного копирования кода.
Основные ситуации для использования циклов:
- Обработка каждого элемента списка, строки или другой последовательности
- Выполнение действий определенное количество раз
- Повторение операций до достижения нужного условия
- Поиск элементов в данных
В Python есть два основных типа циклов:
- Цикл for — когда известно количество повторений
- Цикл while — когда повторения зависят от условия
2. Цикл for
2.1. Базовый синтаксис
Пример:
Вывод:
2.2. Функция range()
range() создает последовательность чисел. Есть три формы:
| Форма | Пример | Результат |
|---|---|---|
| range(stop) | range(5) | 0, 1, 2, 3, 4 |
| range(start, stop) | range(2, 6) | 2, 3, 4, 5 |
| range(start, stop, step) | range(1, 10, 2) | 1, 3, 5, 7, 9 (шаг 2) |
Примеры использования range():
2.3. Итерация по различным последовательностям
По строке:
По списку:
С индексом (функция enumerate()):
Вывод:
3. Цикл while
3.1. Базовый синтаксис
Пример:
Вывод:
3.2. Бесконечные циклы и выход из них
3.3. Когда использовать while вместо for?
- Когда неизвестно заранее, сколько раз нужно повторить
- Когда выход зависит от сложного условия
- При обработке потоков данных (чтение файла до конца)
Пример с условием:
4. Вложенные циклы
4.1. Что это такое?
Вложенные циклы — это циклы внутри других циклов. Они используются для работы с многомерными структурами (таблицами, матрицами).
Пример: Таблица умножения
4.2. Порядок выполнения
Внешний цикл выполняется медленнее, внутренний — быстрее:
4.3. Работа с двумерными списками (матрицами)
Вывод:
5. Управление выполнением циклов
5.1. Оператор break
break полностью завершает выполнение цикла.
Вывод: 1 2 3 4
5.2. Оператор continue
continue пропускает оставшуюся часть текущей итерации и переходит к следующей.
Вывод: 1 2 4 5
5.3. Блок else в циклах
Блок else выполняется после нормального завершения цикла (без break).
Пример с for:
Вывод:
Пример с break – else не выполняется:
Вывод: 0
5.4. Сравнение break и continue
| Ситуация | break |
continue |
|---|---|---|
| i=1 | Выполняем код | Выполняем код |
| i=2 (условие) | Выходим из цикла | Пропускаем оставшийся код и переходим к i=3 |
| i=3 | Не выполняется | Выполняем код |
| i=4 | Не выполняется | Выполняем код |
6. Практические примеры
Пример 1: Сумма чисел
Пример 2: Поиск простых чисел
Пример 3: Обработка пользовательского ввода
Пример 4: Работа со строками
Пример 5: Рисование фигур
Вывод:
7. Частые ошибки и как их избежать
Ошибка 1: Бесконечный цикл while
Ошибка 2: Изменение списка во время итерации
Ошибка 3: Неправильное использование range()
Ошибка 4: Путаница между break и continue
8. Практические задания для самопроверки
Задание 1:
Напишите программу, которая выводит все четные числа от 2 до 20.
Задание 2:
Напишите программу, которая вычисляет факториал числа N.
Задание 3:
Напишите программу, которая запрашивает у пользователя числа до тех пор, пока сумма введенных чисел не превысит 100.
Задание 4:
Напишите программу, которая выводит таблицу умножения для чисел от 1 до 10.
Задание 5:
Напишите программу, которая определяет, является ли введенное слово палиндромом (читается одинаково слева направо и справа налево).
Советы по решению задач:
- Всегда начинайте с простого примера
- Используйте отладку: добавляйте print() для проверки значений переменных
- Разбивайте сложную задачу на более простые подзадачи
- Проверяйте программу на разных входных данных
9. Памятка по циклам
Когда использовать for:
- Известно количество итераций
- Нужно пройти по всем элементам последовательности
- Работа с range() для повторения N раз
Когда использовать while:
- Количество итераций неизвестно заранее
- Зависит от сложного условия
- Чтение данных до определенного признака
Операторы управления:
break— полный выход из циклаcontinue— переход к следующей итерацииelse— выполняется, если цикл завершился без break
Полезные советы:
- Всегда проверяйте, чтобы в цикле
whileбыло изменение переменной условия - Для отладки используйте
print()внутри цикла, чтобы видеть значения переменных - При работе с большими данными избегайте вложенных циклов высокой глубины
- Используйте
enumerate()для получения индекса и элемента одновременно - Для обратного порядка используйте
range(n, -1, -1)илиreversed()