Files
2025-09-22 02:37:58 +03:00
..
2025-09-22 02:37:58 +03:00
2025-09-22 02:37:58 +03:00
2025-09-22 02:37:58 +03:00
2025-09-22 02:37:58 +03:00
2025-09-22 02:37:58 +03:00
2025-09-22 02:37:58 +03:00
2025-09-22 02:37:58 +03:00
2025-09-22 02:37:58 +03:00
2025-09-22 02:37:58 +03:00

Цели домашнего задания

Уметь:

  • описывать list comprehensions и преимущества его использования;
  • использовать list comprehensions (с условной логикой и без неё) для генерации списков;
  • использовать срезы списков для создания копии, получения части списка и изменения объектов внутри списка;
  • работать с индексами и срезами строк для решения задач.

Что входит в задание

  • Задача 1. Гласные буквы.
  • Задача 2. Генерация.
  • Задача 3. Случайные соревнования.
  • Задача 4. Тренируемся со срезами.
  • Задача 5. Разворот.
  • Задача 6. Двумерный список.
  • Задача 7. Список списков.
  • Задача 8. Шифр Цезаря.

Во всех задачах для генерации списков используйте list comprehensions.

Задача 1. Гласные буквы

Что нужно сделать

Команде лингвистов понравилось качество ваших программ, и они решили заказать у вас функцию для анализатора текста, которая создавала бы список гласных букв текста, а заодно считала бы их количество.

Напишите программу, которая запрашивает у пользователя текст и генерирует список из гласных букв этого текста (сама строка вводится на русском языке). Выведите в консоль сам список и его длину.

Пример:

Введите текст: Нужно отнести кольцо в Мордор!

Список гласных букв: ['у', 'о', 'о', 'е', 'и', 'о', 'о', 'о', 'о']
Длина списка: 9

Что оценивается

  • Результат вычислений корректен.
  • Input содержит корректные приглашения для ввода.
  • Формат вывода соответствует примеру.
  • Переменные и функции имеют значащие имена, не только a, b, c, d (подробнее об этом в видео 2.3).

Задача 2. Генерация

Что нужно сделать

Пользователь вводит целое число N. Напишите программу, которая генерирует список из N чисел, на чётных местах в нём стоят единицы, а на нечётных — числа, равные остатку от деления своего номера на 5.

Пример:

Введите длину списка: 10
Результат: [1, 1, 1, 3, 1, 0, 1, 2, 1, 4]

Что оценивается

  • Результат вычислений корректен.
  • Input содержит корректные приглашения для ввода.
  • Формат вывода соответствует указанному в задаче.
  • Переменные и функции имеют значащие имена, не только a, b, c, d (подробнее об этом в видео 2.3).

Задача 3. Случайные соревнования

Что нужно сделать

Мы хотим протестировать работу электронной таблицы для участников некоторых соревнований. Есть два списка (то есть две команды) по 20 участников в каждом. В этих списках хранятся очки каждого участника (это вещественные числа с двумя знаками после точки, например 4.03). Участник одной команды соревнуется с участником другой команды под таким же номером. То есть первый соревнуется с первым, второй — со вторым и так далее.

Напишите программу, которая генерирует два списка участников (по 20 элементов) из случайных вещественных чисел (от 5 до 10). Для этого найдите подходящую функцию из модуля random. Затем сгенерируйте третий список, в котором окажутся только победители из каждой пары.

Пример:

Первая команда: [7.86, 6.76, 9.97, 9.08, 5.45, 6.9, 8.65, 5.17, 8.17, 5.06, 7.56, 7.1, 7.18, 8.25, 5.53, 7.95, 8.91, 7.11, 8.29, 9.52]
Вторая команда: [7.13, 5.7, 8.89, 5.36, 5.62, 9.46, 5.82, 8.67, 8.41, 7.0, 5.31, 7.8, 9.93, 7.76, 7.4, 8.26, 7.94, 5.71, 7.89, 7.77]
Победители тура: [7.86, 6.76, 9.97, 9.08, 5.62, 9.46, 8.65, 8.67, 8.41, 7.0, 7.56, 7.8, 9.93, 8.25, 7.4, 8.26, 8.91, 7.11, 8.29, 9.52]

Что оценивается

  • Результат вычислений корректен.
  • Формат вывода соответствует примеру.
  • Переменные и функции имеют значащие имена, не только a, b, c, d (подробнее об этом в видео 2.3).

Задача 4. Тренируемся со срезами

Что нужно сделать

Дана строка, в которой хранятся первые семь букв английского алфавита.

alphabet = 'abcdefg'

Напишите программу, которая выводит на экран десять вот таких результатов:

  1. Копию строки.
  2. Элементы строки в обратном порядке.
  3. Каждый второй элемент строки (включая самый первый).
  4. Каждый второй элемент строки после первого.
  5. Все элементы до второго.
  6. Все элементы начиная с конца до предпоследнего.
  7. Все элементы в диапазоне индексов от 3 до 4 (не включая 4).
  8. Последние три элемента строки.
  9. Все элементы в диапазоне индексов от 3 до 4.
  10. То же, что и в предыдущем пункте, но в обратном порядке.

Для получения и вывода результатов используйте только команду print и срезы.

Результаты работы программы:

1: abcdefg
2: gfedcba
3: aceg
4: bdf
5: a
6: g
7: d
8: efg
9: de
10: ed

Что оценивается

  • Результат вычислений корректен.
  • Формат вывода соответствует примеру.
  • Для получения результата используются только print и срезы переменной alphabet.

Задача 5. Разворот

Что нужно сделать

На вход в программу подаётся строка, в которой буква h встречается как минимум два раза. Реализуйте код, который разворачивает последовательность символов, заключённую между первым и последним появлением буквы h, в противоположном порядке.

Пример 1:

Введите строку: hqwehrty
Развёрнутая последовательность между первым и последним h: ewq.

Пример 2:

Введите строку: hh
Развёрнутая последовательность между первым и последним h: 

Пример 3:

Введите строку: hhqwerh
Развёрнутая последовательность между первым и последним h: rewqh.

Что оценивается

  • Результат вычислений корректен.
  • input содержит корректные приглашения для ввода.
  • Формат вывода соответствует примеру.
  • Переменные и функции имеют значащие имена, не только a, b, c, d (подробнее об этом в видео 2.3).

Задача 6. Двумерный список

Что нужно сделать

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

[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

Напишите программу, которая генерирует такой список и выводит его на экран. Используйте только list comprehensions.

Что оценивается

  • Результат вычислений корректен.
  • Формат вывода соответствует примеру: без текста, просто двумерный список с числами.
  • Переменные и функции имеют значащие имена, не только a, b, c, d (подробнее об этом в видео 2.3).

Задача 7. Список списков

Что нужно сделать

Дан вот такой (уже многомерный!) список:

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]

Что оценивается

  • Результат вычислений корректен.
  • Формат вывода соответствует ответу.
  • Переменные и функции имеют значащие имена, не только a, b, c, d (подробнее об этом в видео 2.3).

Задача 8. Шифр Цезаря

Что нужно сделать

Юлий Цезарь использовал свой способ шифрования текста. Каждая буква заменялась на следующую по алфавиту через K позиций по кругу. Если взять русский алфавит и K = 3, то в слове, которое мы хотим зашифровать, буква А станет буквой Г, Б станет Д и так далее.

Пользователь вводит сообщение, а также значение сдвига. Напишите программу, которая зашифрует это сообщение при помощи шифра Цезаря.

Пример:

Введите сообщение: это питон.
Введите сдвиг: 3
Зашифрованное сообщение: ахс тлхср.

Что оценивается

  • Результат вычислений корректен.
  • input содержит корректные приглашения для ввода.
  • Формат вывода соответствует примеру.
  • Алгоритм шифрования вынесен в отдельную функцию.
  • Переменные и функции имеют значащие имена, не только a, b, c, d (подробнее об этом в видео 2.3).

Что оценивается в домашнем задании

  • Практическая работа сдана через GitLab.
  • Структура папок и файлов репозитория соответствует репозиторию python_basic.
  • Все задачи выполнены в соответствующих папках и файлах main.py.
  • Описания коммитов осмысленны и понятны: 111, done, «я сделалъ» — неверно; added m15 homework, 14.3 fix: variables naming — верно.
  • Использованы именованные индексы, не просто i (подробнее в видео 7.2).
  • Использованы правильные числа, без дополнительных действий со стороны пользователя, без +1 (подробнее об этом в видео 7.4).
  • Правильно оформлен input, без пустого приветствия для ввода (подробнее об этом в видео 2.3).
  • Переменные и функции имеют значащие имена, не только a, b, c, d (подробнее об этом в видео 2.3).
  • Есть пробелы после запятых и при бинарных операциях.
  • Нет пробелов после имён функций и перед скобками: print (), input () — неверно; print() — верно.
  • Правильно оформлены блоки if-elif-else, циклы и функции; отступы одинаковы во всех блоках одного уровня.
  • Во всех задачах для генерации списков использованы list comprehensions.

Советы и рекомендации

  • Арифметические операции PEP8 остаются в приоритете. Необходимо вводить and, or.
  • Руководство по стилю Python PEP8 на английском языке.
  • Руководство по стилю Python PEP8 на русском языке.
  • Список встроенных функций.

Как отправить задание на проверку

Чтобы выполнить домашнее задание, обновите репозиторий python_basic на своём компьютере при помощи IDE PyCharm. Задачи находятся в папке Module17.

Сдайте домашние работы этого модуля через систему контроля версий Git сервиса Skillbox GitLab. В уроке с домашним заданием напишите «Сделано» и прикрепите ссылку на репозиторий. Ссылки на реплит оставлять не нужно.