Add lesson
This commit is contained in:
20
Module17/01_vowels/README.md
Normal file
20
Module17/01_vowels/README.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
## Задача 1. Гласные буквы
|
||||||
|
### Что нужно сделать
|
||||||
|
Команде лингвистов понравилось качество ваших программ, и они решили заказать у вас функцию для анализатора текста, которая создавала бы список гласных букв текста, а заодно считала бы их количество.
|
||||||
|
|
||||||
|
Напишите программу, которая запрашивает у пользователя текст и генерирует список из гласных букв этого текста (сама строка вводится на русском языке). Выведите в консоль сам список и его длину.
|
||||||
|
|
||||||
|
Пример:
|
||||||
|
|
||||||
|
```
|
||||||
|
Введите текст: Нужно отнести кольцо в Мордор!
|
||||||
|
|
||||||
|
Список гласных букв: ['у', 'о', 'о', 'е', 'и', 'о', 'о', 'о', 'о']
|
||||||
|
Длина списка: 9
|
||||||
|
```
|
||||||
|
### Что оценивается
|
||||||
|
- Результат вычислений корректен.
|
||||||
|
- Input содержит корректные приглашения для ввода.
|
||||||
|
- Формат вывода соответствует примеру.
|
||||||
|
- Переменные и функции имеют значащие имена, не только a, b, c, d (подробнее об этом в видео 2.3).
|
||||||
|
|
||||||
1
Module17/01_vowels/main.py
Normal file
1
Module17/01_vowels/main.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
# TODO здесь писать код
|
||||||
30
Module17/02_generation/README.md
Normal file
30
Module17/02_generation/README.md
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
## Задача 2. Генерация
|
||||||
|
### Что нужно сделать
|
||||||
|
Пользователь вводит целое число N. Вам необходимо написать программу, которая генерирует список из чисел от 0 до N (не включая N).
|
||||||
|
Например, если N — это 5, то нужно работать со списком 0, 1, 2, 3, 4.
|
||||||
|
|
||||||
|
Также есть дополнительное условие. При заполнении списка нужно выполнить одно из двух действий с каждым числом:
|
||||||
|
- Если индекс числа чётный (или 0), то вместо числа необходимо взять 1;
|
||||||
|
- Если индекс числа нечётный, то вместо числа необходимо взять остаток от деления этого числа на 5 (число % 5).
|
||||||
|
|
||||||
|
Таким образом нужен следующий алгоритм:
|
||||||
|
```
|
||||||
|
цикл по числам
|
||||||
|
если текущий индекс чётный
|
||||||
|
то в список добавляется 1
|
||||||
|
если текущий индекс нечётный
|
||||||
|
то в список добавляется (число % 5)
|
||||||
|
```
|
||||||
|
Алгоритм нужно реализовать при помощи генератора списка (в одну строку).
|
||||||
|
|
||||||
|
Пример:
|
||||||
|
```
|
||||||
|
Введите длину списка: 10
|
||||||
|
Результат: [1, 1, 1, 3, 1, 0, 1, 2, 1, 4]
|
||||||
|
```
|
||||||
|
### Что оценивается
|
||||||
|
- Результат вычислений корректен.
|
||||||
|
- Input содержит корректные приглашения для ввода.
|
||||||
|
- Формат вывода соответствует указанному в задаче.
|
||||||
|
- Переменные и функции имеют значащие имена, не только a, b, c, d (подробнее об этом в видео 2.3).
|
||||||
|
|
||||||
1
Module17/02_generation/main.py
Normal file
1
Module17/02_generation/main.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
# TODO здесь писать код
|
||||||
18
Module17/03_random_competition/README.md
Normal file
18
Module17/03_random_competition/README.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
## Задача 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).
|
||||||
|
|
||||||
1
Module17/03_random_competition/main.py
Normal file
1
Module17/03_random_competition/main.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
# TODO здесь писать код
|
||||||
40
Module17/04_slices/README.md
Normal file
40
Module17/04_slices/README.md
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
## Задача 4. Тренируемся со срезами
|
||||||
|
### Что нужно сделать
|
||||||
|
Дана строка, в которой хранятся первые семь букв английского алфавита.
|
||||||
|
|
||||||
|
`alphabet = 'abcdefg'`
|
||||||
|
|
||||||
|
Напишите программу, которая выводит на экран десять вот таких результатов:
|
||||||
|
|
||||||
|
1. Копию строки.
|
||||||
|
1. Элементы строки в обратном порядке.
|
||||||
|
1. Каждый второй элемент строки (включая самый первый).
|
||||||
|
1. Каждый второй элемент строки после первого.
|
||||||
|
1. Все элементы до второго.
|
||||||
|
1. Все элементы начиная с конца до предпоследнего.
|
||||||
|
1. Все элементы в диапазоне индексов от 3 до 4 (не включая 4).
|
||||||
|
1. Последние три элемента строки.
|
||||||
|
1. Все элементы в диапазоне индексов от 3 до 4.
|
||||||
|
1. То же, что и в предыдущем пункте, но в обратном порядке.
|
||||||
|
|
||||||
|
Для получения и вывода результатов используйте только команду print и срезы.
|
||||||
|
|
||||||
|
Результаты работы программы:
|
||||||
|
|
||||||
|
```
|
||||||
|
1: abcdefg
|
||||||
|
2: gfedcba
|
||||||
|
3: aceg
|
||||||
|
4: bdf
|
||||||
|
5: a
|
||||||
|
6: g
|
||||||
|
7: d
|
||||||
|
8: efg
|
||||||
|
9: de
|
||||||
|
10: ed
|
||||||
|
```
|
||||||
|
### Что оценивается
|
||||||
|
- Результат вычислений корректен.
|
||||||
|
- Формат вывода соответствует примеру.
|
||||||
|
- Для получения результата используются только print и срезы переменной alphabet.
|
||||||
|
|
||||||
3
Module17/04_slices/main.py
Normal file
3
Module17/04_slices/main.py
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
alphabet = 'abcdefg'
|
||||||
|
|
||||||
|
# TODO здесь писать код
|
||||||
33
Module17/05_reversal/README.md
Normal file
33
Module17/05_reversal/README.md
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
## Задача 5. Разворот
|
||||||
|
### Что нужно сделать
|
||||||
|
На вход в программу подаётся строка, в которой буква h встречается как минимум два раза. Реализуйте код, который разворачивает последовательность символов, заключённую между первым и последним появлением буквы h, в противоположном порядке.
|
||||||
|
|
||||||
|
Пример 1:
|
||||||
|
|
||||||
|
```
|
||||||
|
Введите строку: hqwehrty
|
||||||
|
Развёрнутая последовательность между первым и последним h: ewq.
|
||||||
|
```
|
||||||
|
|
||||||
|
Пример 2:
|
||||||
|
|
||||||
|
```
|
||||||
|
Введите строку: hh
|
||||||
|
Развёрнутая последовательность между первым и последним h:
|
||||||
|
```
|
||||||
|
|
||||||
|
Пример 3:
|
||||||
|
|
||||||
|
```
|
||||||
|
Введите строку: hhqwerh
|
||||||
|
Развёрнутая последовательность между первым и последним h: rewqh.
|
||||||
|
```
|
||||||
|
### Что оценивается
|
||||||
|
- Результат вычислений корректен.
|
||||||
|
- input содержит корректные приглашения для ввода.
|
||||||
|
- Формат вывода соответствует примеру.
|
||||||
|
- Переменные и функции имеют значащие имена, не только a, b, c, d (подробнее об этом в видео 2.3).
|
||||||
|
|
||||||
|
### Советы и рекомендации
|
||||||
|
- Индекс нужного элемента можно искать как вручную, так и при помощи готовых методов списка.
|
||||||
|
- У метода `index` есть «брат» — метод `rindex`. В отличие от первого второй метод начинает поиск с правой стороны (с конца). Подробнее о нём вы можете узнать [в этой статье](https://www.w3schools.com/python/ref_string_rindex.asp).
|
||||||
1
Module17/05_reversal/main.py
Normal file
1
Module17/05_reversal/main.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
# TODO здесь писать код
|
||||||
11
Module17/06_two_dimensional_list/README.md
Normal file
11
Module17/06_two_dimensional_list/README.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
## Задача 6. Двумерный список
|
||||||
|
### Что нужно сделать
|
||||||
|
Как мы говорили ранее, в программировании часто приходится писать код исходя из результата, который требует заказчик. В этот раз заказчику нужно получить вот такой двумерный список:
|
||||||
|
|
||||||
|
`[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]`
|
||||||
|
|
||||||
|
Напишите программу, которая генерирует такой список и выводит его на экран. Используйте только list comprehensions.
|
||||||
|
### Что оценивается
|
||||||
|
- Результат вычислений корректен.
|
||||||
|
- Формат вывода соответствует примеру: без текста, просто двумерный список с числами.
|
||||||
|
- Переменные и функции имеют значащие имена, не только a, b, c, d (подробнее об этом в видео 2.3).
|
||||||
1
Module17/06_two_dimensional_list/main.py
Normal file
1
Module17/06_two_dimensional_list/main.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
# TODO здесь писать код
|
||||||
15
Module17/07_list_of_lists_2/README.md
Normal file
15
Module17/07_list_of_lists_2/README.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
## Задача 7. Список списков
|
||||||
|
### Что нужно сделать
|
||||||
|
Дан многомерный список:
|
||||||
|
|
||||||
|
```python
|
||||||
|
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).
|
||||||
|
|
||||||
4
Module17/07_list_of_lists_2/main.py
Normal file
4
Module17/07_list_of_lists_2/main.py
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
nice_list = [[[1, 2, 3], [4, 5, 6], [7, 8, 9]],
|
||||||
|
[[10, 11, 12], [13, 14, 15], [16, 17, 18]]]
|
||||||
|
|
||||||
|
# TODO здесь писать код
|
||||||
19
Module17/08_caesar_cipher/README.md
Normal file
19
Module17/08_caesar_cipher/README.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
## Задача 8. Шифр Цезаря
|
||||||
|
### Что нужно сделать
|
||||||
|
Юлий Цезарь использовал свой способ шифрования текста. Каждая буква заменялась на следующую по алфавиту через K позиций по кругу. Если взять русский алфавит и K = 3, то в слове, которое мы хотим зашифровать, буква А станет буквой Г, Б станет Д и так далее.
|
||||||
|
|
||||||
|
Пользователь вводит сообщение, а также значение сдвига. Напишите программу, которая зашифрует это сообщение при помощи шифра Цезаря.
|
||||||
|
|
||||||
|
Пример:
|
||||||
|
|
||||||
|
```
|
||||||
|
Введите сообщение: это питон.
|
||||||
|
Введите сдвиг: 3
|
||||||
|
Зашифрованное сообщение: ахс тлхср.
|
||||||
|
```
|
||||||
|
### Что оценивается
|
||||||
|
- Результат вычислений корректен.
|
||||||
|
- input содержит корректные приглашения для ввода.
|
||||||
|
- Формат вывода соответствует примеру.
|
||||||
|
- Алгоритм шифрования вынесен в отдельную функцию.
|
||||||
|
- Переменные и функции имеют значащие имена, не только a, b, c, d (подробнее об этом в видео 2.3).
|
||||||
1
Module17/08_caesar_cipher/main.py
Normal file
1
Module17/08_caesar_cipher/main.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
# TODO здесь писать код
|
||||||
212
Module17/README.md
Normal file
212
Module17/README.md
Normal file
@@ -0,0 +1,212 @@
|
|||||||
|
## Цели домашнего задания
|
||||||
|
Уметь:
|
||||||
|
|
||||||
|
- описывать 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. Копию строки.
|
||||||
|
1. Элементы строки в обратном порядке.
|
||||||
|
1. Каждый второй элемент строки (включая самый первый).
|
||||||
|
1. Каждый второй элемент строки после первого.
|
||||||
|
1. Все элементы до второго.
|
||||||
|
1. Все элементы начиная с конца до предпоследнего.
|
||||||
|
1. Все элементы в диапазоне индексов от 3 до 4 (не включая 4).
|
||||||
|
1. Последние три элемента строки.
|
||||||
|
1. Все элементы в диапазоне индексов от 3 до 4.
|
||||||
|
1. То же, что и в предыдущем пункте, но в обратном порядке.
|
||||||
|
|
||||||
|
Для получения и вывода результатов используйте только команду 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. Список списков
|
||||||
|
### Что нужно сделать
|
||||||
|
Дан вот такой (уже многомерный!) список:
|
||||||
|
|
||||||
|
```python
|
||||||
|
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](https://docs.python.org/3.7/reference/expressions.html#operator-precedence) остаются в приоритете. Необходимо вводить and, or.
|
||||||
|
- Руководство по стилю Python [PEP8](https://www.python.org/dev/peps/pep-0008/) на английском языке.
|
||||||
|
- Руководство по стилю Python [PEP8](https://pep8.ru/doc/pep8/) на русском языке.
|
||||||
|
- [Список встроенных функций](https://docs.python.org/3.7/library/functions.html).
|
||||||
|
## Как отправить задание на проверку
|
||||||
|
Чтобы выполнить домашнее задание, обновите репозиторий python_basic на своём компьютере при помощи IDE PyCharm. Задачи находятся в папке Module17.
|
||||||
|
|
||||||
|
Сдайте домашние работы этого модуля через систему контроля версий Git сервиса Skillbox GitLab. В уроке с домашним заданием напишите «Сделано» и прикрепите ссылку на репозиторий. Ссылки на реплит оставлять не нужно.
|
||||||
|
|
||||||
Reference in New Issue
Block a user