09.27 Последовательности и цикл for
Списки
ввести список, найти в нём с помощью in 13 или сообщить, что его нет
- Секционирование
замена секции списка на другую, взятую из другого списка:
- создать список, содержащий целые числа с 5 до 15 (в порядке возрастания), и список, содержащий буквы с 'a' до 'k' (в алфавитном порядке)
- заменить в первом списке секцию с 4-го по 7-й элемент (включительно) на секцию второго списка из его 5 последних элементов.
- Хитрое секционирование
В списке чётное количество элементов. Получить элементы второй половины списка, стоящие на нечётных местах, задом наперёд.
Цикл for
ввести список чисел, найти и вывести первое нечётное число в нём, или вывести последнее число (for … else)
- Имитация многомерных структур данных
- списки списков: проблема внутренних размеров
Вложенные for и списки списков: транспонирование
- ввести построчно списки целых чисел; признак конца - ввод пустой строки; корректность ввода (т.е. что вводятся именно списки чисел) проверять не нужно
- каждый вводимый список должен становиться новым элементом списка списков
- проверить, что введенные списки одинаковой длины, и что число введенных списков равно числу элементов в каждом списке (значит, построчно введена квадратная матрица)
- транспонировать матрицу "на месте", т.е. не создавая новый список списков
- вывести транспонированную матрицу построчно
- // FIXME (на потом): размер матрицы = длина первого списка, прекращаем ввод когда вводится последняя (исходя из этого размера) строка, одинаковость длин строк гарантируется (проверять не надо)
- // UPD: возможно, ввод оставить как есть, но ввод + проверку на квадратность выделить в отдельное упражнение (с использованием all() и циклической сборки)
Циклические сборки
Простой пример, пример с if
всё нечётные числа в данном диапазоне, в десятичной записи которых нет '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