Вложенные циклы — это мощный инструмент в Python, позволяющий выполнять один цикл внутри другого. Это открывает возможности для работы с двумерными структурами данных, такими как таблицы или матрицы, а также для создания сложных узоров и перебора комбинаций.
В этом тренажере мы начнем с самых основ: поймем, как внутренний цикл полностью выполняется на каждой итерации внешнего. Затем мы перейдем к более сложным задачам: научимся генерировать числовые и символьные узоры, обрабатывать вложенные списки (матрицы) и даже управлять поведением циклов с помощью операторов `break`. После прохождения этих заданий вы будете уверенно использовать вложенные циклы для решения широкого круга задач.
- Модуль 1: Основы синтаксиса Python
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Арифметические операторы (+, -, *, /).
- Целочисленное деление и остаток (// и %).
- Возведение в степень (**).
- Операторы сравнения.
- Логические операторы (and, or, not).
- Операторы присваивания (=, +=, -=).
- Операторы принадлежности (in, not in).
- Операторы идентичности (is, is not).
- Битовые операторы.
- Тернарный оператор.
- Модуль 4: Ввод и вывод данных
- Модуль 5: Условные конструкции
- Модуль 6: Циклы
- Модуль 7: Строки
- Модуль 8: Списки
- Модуль 9: Кортежи
- Модуль 10: Словари
- Модуль 11: Множества
- Модуль 12: Функции
- Модуль 13: Встроенные функции
- Модуль 14: Работа с файлами
- Модуль 15: Обработка исключений
- Модуль 16: Модули и пакеты
- Модуль 17: ООП - Основы
- Модуль 18: ООП - Продвинутый уровень
- Модуль 19: Декораторы
- Модуль 20: Генераторы и итераторы
- Модуль 21: Регулярные выражения
- Модуль 22: Дата и время
- Модуль 23: Математические операции
- Модуль 24: Работа с сетью
- Модуль 25: Асинхронное программирование
- Модуль 26: Многопоточность
- Модуль 27: Тестирование
- Модуль 28: Базы данных
- Модуль 29: Алгоритмы и структуры данных
- Модуль 30: Продвинутые возможности
Основы вложенных циклов
Давайте создадим наш первый вложенный цикл. Внешний цикл уже написан и перебирает числа от 0 до 1. Ваша задача — дописать внутренний цикл, который также будет перебирать числа от 0 до 1. В результате для каждой итерации внешнего цикла, внутренний должен выполниться полностью.
for i in range(2):
for j in input1S(input2S):
print(f"Внешний: {i}, Внутренний: {j}")Подсчет итераций
Проанализируйте код. В нем есть счетчик `count`, который увеличивается на каждой итерации внутреннего цикла. Какое итоговое значение будет у переменной `count` после выполнения всех циклов? Введите только число.
count = 0
for i in range(3):
for j in range(4):
count += 1
print(count)Ошибка в отступе
В этом коде допущена распространенная ошибка, связанная с отступами во вложенных циклах. Найдите строку с неверным отступом и исправьте ее, чтобы `print` выполнялся внутри самого глубокого цикла.
for i in range(2): for j in range(2): print(f"i={i}, j={j}")Что выведет код с условием?
Внимательно проследите за выполнением этого вложенного цикла. Обратите внимание на условие `if i == j`. Какие пары координат будут выведены на экран? Выберите правильный вариант вывода.
for i in range(3):
for j in range(3):
if i == j:
print(f"({i}, {j})")Соберите код для печати прямоугольника
Соберите из фрагментов код, который нарисует прямоугольник размером 3x5 из символов '#'. Внешний цикл отвечает за строки, внутренний — за символы в строке. Одна из строк лишняя и не нужна для решения задачи.
print('#', end='')for i in range(3):print(i) print() for j in range(5):Обработка вложенного списка (матрицы)
Расставьте строки кода в правильном порядке. Цель — перебрать все элементы во вложенном списке `matrix` и напечатать каждый из них на отдельной строке.
for item in row:matrix = [[1, 2, 3], [4, 5, 6]] print(item)for row in matrix:Рисуем треугольник из банка токенов
Используя элементы из "банка", соберите код, который нарисует прямоугольный треугольник из звездочек. Количество звездочек в каждой строке должно быть равно номеру строки (начиная с 1).
for i in range(5):
for j in range(input1S):
print(input2S, end='')
print()Вложенный цикл с `break`
Этот код использует оператор `break` внутри вложенного цикла. `break` прерывает выполнение только того цикла, в котором он находится (в данном случае — внутреннего). Проанализируйте код и определите, какое итоговое значение будет у переменной `total`.
total = 0
for i in range(3):
for j in range(3):
if j == 1:
break
total += 1
print(total)Создание таблицы умножения
Завершим наш тренажер созданием фрагмента таблицы умножения. Заполните пропуски в коде так, чтобы он корректно выводил таблицу умножения для чисел от 1 до 3. Вам нужно правильно указать переменные и результат их умножения.
for i in range(1, 4):
for j in range(1, 4):
print(f"{input1S} * {input2S} = {input3S}")
print("-----") # Разделитель для наглядности