Задача 1. Гласные буквы
Команде лингвистов понравилось качество ваших программ, и они решили заказать у вас функцию для анализатора текста, которая создавала бы список гласных букв текста, а заодно считала бы их количество.
Напишите программу, которая запрашивает у пользователя текст и генерирует список из гласных букв этого текста (сама строка вводится на русском языке). Выведите в консоль сам список и его длину.
Задача 2. Генерация
Пользователь вводит целое число N. Напишите программу, которая генерирует список из N чисел, на чётных местах в нём стоят единицы, а на нечётных — числа, равные остатку от деления своего номера на 5.
Задача 3. Случайные соревнования
Мы хотим протестировать работу электронной таблицы для участников некоторых соревнований. Есть два списка (то есть две команды) по 20 участников в каждом. В этих списках хранятся очки каждого участника (это вещественные числа с двумя знаками после точки, например 4.03). Участник одной команды соревнуется с участником другой команды под таким же номером. То есть первый соревнуется с первым, второй — со вторым и так далее.
Напишите программу, которая генерирует два списка участников (по 20 элементов) из случайных вещественных чисел (от 5 до 10). Для этого найдите подходящую функцию из модуля random. Затем сгенерируйте третий список, в котором окажутся только победители из каждой пары.
Задача 4. Тренируемся со срезами
Дана строка, в которой хранятся первые семь букв английского алфавита.
alphabet = 'abcdefg'
Напишите программу, которая выводит на экран десять вот таких результатов:
- Копию строки.
- Элементы строки в обратном порядке.
- Каждый второй элемент строки (включая самый первый).
- Каждый второй элемент строки после первого.
- Все элементы до второго.
- Все элементы начиная с конца до предпоследнего.
- Все элементы в диапазоне индексов от 3 до 4 (не включая 4).
- Последние три элемента строки.
- Все элементы в диапазоне индексов от 3 до 4.
- То же, что и в предыдущем пункте, но в обратном порядке.
Для получения и вывода результатов используйте только команду print и срезы.
Задача 5. Разворот
На вход в программу подаётся строка, в которой буква h встречается как минимум два раза. Реализуйте код, который разворачивает последовательность символов, заключённую между первым и последним появлением буквы h, в противоположном порядке.
Задача 6. Сжатие списка
Дан список из N целых случайных чисел (число от 0 до 2). Напишите программу, которая выполняет «сжатие списка» — переставляет все нулевые элементы в конец массива. При этом все ненулевые элементы располагаются в начале массива в том же порядке. Затем все нули из списка удаляются.
Задача 7. Двумерный список
Как мы говорили ранее, в программировании часто приходится писать код исходя из результата, который требует заказчик. В этот раз заказчику нужно получить вот такой двумерный список:
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
Напишите программу, которая генерирует такой список и выводит его на экран. Используйте только list comprehensions.
Задача 8. Развлечение
N палочек выставили в один ряд, пронумеровав их слева направо числами от 1 до N. Затем по этому ряду бросили K камней, при этом i-й камень сбил все палки с номерами от L_i до R_i включительно. Определите, какие палки остались стоять на месте.
Напишите программу, которая получает на вход количество палок N и количество бросков K. Далее идёт K пар чисел Left_i, Right_i, при этом 1 ≤ Left_i ≤ Right_i ≤ N.
Программа должна вывести последовательность из N символов, где j-й символ есть “I”, если j-я палка осталась стоять, или “.”, если j-я палка была сбита.
Задача 9. Список списков
Дан вот такой (уже многомерный!) список:
nice_list = [[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[10, 11, 12], [13, 14, 15], [16, 17, 18]]]
Напишите код, который «раскрывает» все вложенные списки, то есть оставляет только внешний список. Для решения используйте только list comprehensions.
Ответ: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
Задача 10. Шифр Цезаря
Юлий Цезарь использовал свой способ шифрования текста. Каждая буква заменялась на следующую по алфавиту через K позиций по кругу. Если взять русский алфавит и K = 3, то в слове, которое мы хотим зашифровать, буква А станет буквой Г, Б станет Д и так далее.
Пользователь вводит сообщение, а также значение сдвига. Напишите программу, которая зашифрует это сообщение при помощи шифра Цезаря.