Различия между версиями 10 и 11
Версия 10 от 2022-09-27 11:37:11
Размер: 5095
Редактор: hbd
Комментарий: ещё TODO по транспонировочной упражненьке
Версия 11 от 2022-09-27 12:30:53
Размер: 5061
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 47: Строка 47:
  * Для много знающих: Задачу_2 нужно запрограммировать "вручную", без использования функции `sort()`/`sorted()`   * Задачу_2 нужно запрограммировать "вручную", без использования функции `sort()`/`sorted()`

09.27 Последовательности и цикл for

Списки

  • {i} ввести список, найти в нём с помощью in 13 или сообщить, что его нет

  • Секционирование
    • {i} замена секции списка на другую, взятую из другого списка:

      • создать список, содержащий целые числа с 5 до 15 (в порядке возрастания), и список, содержащий буквы с 'a' до 'k' (в алфавитном порядке)
      • заменить в первом списке секцию с 4-го по 7-й элемент (включительно) на секцию второго списка из его 5 последних элементов.
  • Хитрое секционирование
    • {i} В списке чётное количество элементов. Получить элементы второй половины списка, стоящие на нечётных местах, задом наперёд.

Цикл for

  • {i} ввести список чисел, найти и вывести первое нечётное число в нём, или вывести последнее число (for … else)

  • Имитация многомерных структур данных
    • списки списков: проблема внутренних размеров
  • {i} Вложенные for и списки списков: транспонирование

    • ввести построчно списки целых чисел; признак конца - ввод пустой строки; корректность ввода (т.е. что вводятся именно списки чисел) проверять не нужно
    • каждый вводимый список должен становиться новым элементом списка списков
    • проверить, что введенные списки одинаковой длины, и что число введенных списков равно числу элементов в каждом списке (значит, построчно введена квадратная матрица)
    • транспонировать матрицу "на месте", т.е. не создавая новый список списков
    • вывести транспонированную матрицу построчно
    • // FIXME (на потом): размер матрицы = длина первого списка, прекращаем ввод когда вводится последняя (исходя из этого размера) строка, одинаковость длин строк гарантируется (проверять не надо)
    • // UPD: возможно, ввод оставить как есть, но ввод + проверку на квадратность выделить в отдельное упражнение (с использованием all() и циклической сборки)

Циклические сборки

  • Простой пример, пример с if

  • {i} всё нечётные числа в данном диапазоне, в десятичной записи которых нет '3' с помощью '3' in str(n)

  • <!> Задача_1: (простые числа в заданном диапазоне) (input() + однострочник!)

    • Ввести натуральные M и N, вывести список простых чисел в диапазоне от M до N
    • подсказка: в однострочнике допустимо проверять деление на любые числа и использовать all()

    Input:

    3, 11

    Output:

    [3, 5, 7]
  • <!> Задача_2:

    • Ввести и отсортировать любой устойчивой сортировкой (например, пузырём) по возрастанию ключей числовой список.

    • В качестве ключа сравнения использовать остаток от деления x2 на 100

    • Задачу_2 нужно запрограммировать "вручную", без использования функции sort()/sorted()

    Input:

    12,41,51

    Output:

    [51, 12, 41]
  • <!> Задача_3: (на вложенные циклы)

    • Ввести построчно две квадратные матрицы с размерностью 100 ⩾ N ⩾ 2. Рассчитать и вывести произведение матриц (вывод строго через запятую без пробелов)

    Input:

    2,1,2
    5,7,2
    9,1,3
    1,2,3
    2,3,4
    2,4,6

    Output:

    8,15,22
    23,39,55
    17,33,49

LecturesCMC/PythonIntro2022/Prac/03_SequencesFor (последним исправлял пользователь FrBrGeorge 2022-09-27 12:30:53)