Skip to content

Latest commit

 

History

History
205 lines (143 loc) · 10.1 KB

File metadata and controls

205 lines (143 loc) · 10.1 KB

Урок 22. Вложенные циклы

22.1 Вложенные циклы for и while

В Python можно использовать вложенные циклы, такие как цикл for вложенный в while, цикл while вложенный в for и цикл for вложенный в for.

22.2 Цикл for, вложенный в while

Рассмотрим, как for-цикл может быть вложен в while для выполнения повторяющихся действий с условием.

Печать последовательности чисел с вложением for в while.

counter = 1
while counter <= 3:
    print(f"Внешний цикл, итерация {counter}")
    for i in range(1, 4):
        print(f"Внутренний цикл, значение {i}")
    counter += 1

Пояснение:

  • while counter <= 3 запускает основной цикл, пока переменная counter не станет больше 3.
  • На каждой итерации внешнего цикла for проходит по значениям от 1 до 3, что выводит номера итераций внутреннего цикла.
  • Так мы получаем три повторяющихся цикла с внутренним диапазоном 1–3.

Применение:

Подобная структура удобна при выполнении повторяющихся действий с ограниченным количеством итераций. Например, можно использовать для повторного выполнения запросов, где while отслеживает успех/ошибку, а for повторяет действия с изменяемыми данными.

22.3 Цикл while, вложенный в for

Пример использования while внутри for, когда требуется выполнение до достижения условия на каждом шаге for.

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

for num in range(1, 4):
    print(f"Число {num}")
    divisor = 1
    while divisor <= num:
        if num % divisor == 0:
            print(f"{num} делится на {divisor}")
        divisor += 1

Пояснение:

  • Внешний цикл for проходит по диапазону чисел.
  • Внутренний цикл while проверяет делимость каждого числа на divisor.
  • На каждом шаге цикла while divisor увеличивается, пока не достигнет значения num.

Применение:

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

22.4 Цикл for, вложенный в for

Вложенные циклы for позволяют работать с многомерными структурами данных, например, с матрицами.

Создание таблицы умножения.

for i in range(1, 4):
    for j in range(1, 4):
        print(f"{i} * {j} = {i * j}")
    print("------")

Пояснение:

  • Внешний for цикл проходит по числам от 1 до 3.
  • Внутренний for умножает каждое значение внешнего цикла на текущий элемент.
  • Результат — таблица умножения от 1 до 3, разделенная на группы.

Применение:

Вложенные for циклы часто используют для обработки двумерных массивов или создания таблиц.

22.5 Использование вложенных циклов:

  1. Чтобы вывести все элементы двумерного списка lst = [[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6]], вы можете использовать вложенные циклы.

    lst = [[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6]]
    
    for sublist in lst:
        for element in sublist:
            print(element, end=' ')
  2. Для выполнения сложения значений из двух двумерных списков lst1 и lst2.

    lst1 = [[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6]]
    lst2 = [[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]]
    
    r_lst = []
    for i in range(len(lst1)):
        sublist = []
        for j in range(len(lst2[i])):
            sublist.append(lst1[i][j] + lst2[i][j])
        r_lst.append(sublist)
    print(r_lst)
  3. Для удаления повторяющихся символов.

    lst = [ "Я   помню  чудное    мгновенье",
    "Передо  мной    явилась   ты",
    "Как    мимолетное   виденье",
    "Как     гений   чистой  красоты"]
    
    for index, line in enumerate(lst):
        while lst[index].count("  "):
            lst[index] = lst[index].replace("  ", " ")
    
    print(lst)
  4. Для формирования вложенного списка размерами MxN, заполненного нулями с помощью цикла for, а затем замены всех элементов на единицы с использованием вложенных циклов.

    M = int(input("Введите количество строк: "))
    N = int(input("Введите количество столбцов: "))
    
    nested_list = []
    for i in range(M):
        sublist = []
        for j in range(N):
            sublist.append(0)
        nested_list.append(sublist)
    
    for i in range(M):
        for j in range(N):
            nested_list[i][j] = 1
  5. Для замены строк на столбцы и получить новое представление списка. В математике это называется транспонированием матрицы.

    lst = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
    
    for i in range(len(lst)):
        for j in range(i + 1, len(lst)):
            lst[i][j], lst[j][i] = lst[j][i], lst[i][j]
    
    for row in lst:
        for number in row:
            print(number, end='\t')
        print()

Задачи

  1. На вход программе подаются два натуральных числа: n - высота и m - ширина прямоугольника. С помощью вложенных циклов создайте прямоугольник из символов * по заданной высоте и ширине. Вывести этот список на экран.

  2. На вход программе подается натуральное число n - высота треугольника. С помощью вложенных циклов создайте треугольник чисел. Вывести этот треугольник на экран. Пример треугольника для высоты 5:

    1
    12
    123
    1234
    12345
    
  3. Напишите программу, которая определяет сколько элементов совпадают в двух списках lst1 и lst2. lst1 = [1, 2, 3, 4, 5] и lst2 = [4, 5, 6, 7, 8]. Вывести этот список с общими элементами на экран.

  4. С помощью вложенных циклов создайте таблицу умножения для чисел от 1 до 10. Вывести таблицу умножения на экран.

  5. Даны два двумерных списка list1 = [[1, 2, 3], [4, 5, 6]] и list2 = [[4, 5, 6], [7, 8, 9]]. Найдите и выведите все элементы, которые присутствуют и в одном, и в другом.

  6. Дана матрица matrix = [[1, 2, 3], [4, 5, 6]]. Транспонируйте её, то есть поменяйте строки на столбцы. Вывести матрицу на экран.

  7. Дана матрица matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]. Найдите сумму всех элементов этой матрицы. Вывести сумму на экран.

  8. Выведите шахматную доску размером 8x8 с чередующимися символами # и 0. Пример шахматной доски:

    #0#0#0#0
    0#0#0#0#
    #0#0#0#0
    0#0#0#0#
    #0#0#0#0
    0#0#0#0#
    #0#0#0#0
    0#0#0#0#
    
  9. Даны две матрицы matrix1 = [[1, 2], [3, 4]] и matrix2 = [[5, 6], [7, 8]]. Создайте новую матрицу, где каждый элемент — это сумма элементов из двух матриц. Вывести матрицу на экран.

  10. Создайте двумерный список 3х3 [[1, 2, 3], [4, 5, 6], [7, 8, 9]], где каждый элемент — это его индекс. Вывести список на экран.

  11. Постройте матрицу 3x3 из чисел в обратном порядке [[9, 8, 7], [6, 5, 4], [3, 2, 1]]. Вывести матрицу на экран.

  12. На вход программе подается натуральное число n. Требуется создать двумерный список размером n x n элементов, состоящий из всех единиц, а затем, в последний столбец записать пятерки. Вывести список на экран.


Предыдущий урок | Следующий урок