Skip to content

Commit 62d37c7

Browse files
author
Gennadii Kandaurov
committed
add lesson #3 slides, hw
1 parent 65676cb commit 62d37c7

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,15 @@
44
## Лекции и материалы (слайды, домашки, код с занятий)
55
01. [Введение, типы данных, управляющие конструкции, тестирование](lesson-01)
66
02. [Функции](lesson-02)
7+
03. [Классы, ООП](lesson-03)
8+
9+
10+
## Правила оформления домашек на github
11+
* приватный github репозиторий с каким-то связанным с курсом названием (например, deep_python_25a_username);
12+
* сдача ДЗ должна выполняться в основной ветке репозитория **main**;
13+
* каждое ДЗ должно размещаться в каталоге с именем по номеру ДЗ (01, 02, 03 и тд) в корне репозитория: код, тесты и любые другие материалы, например, каталог для первой домашки должен называться "01";
14+
* вспомогательных каталоги внутри каталога решения (01, 02) не должно быть, то есть все файлы и модули одной домашки должны находиться в корневом каталоге этой домашки (01, 02);
15+
* зеленый пайплайн является обязательным.
716

817

918
## FAQ

lesson-03/homework.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Домашнее задание #03 (Классы, ООП)
2+
3+
### 1. Реализовать класс CustomList наследованием от list
4+
5+
При этом:
6+
- `CustomList` должен наследоваться от встроенного списка `list` для получения всех методов последнего (UserList можно, но манипулировать его data напрямую не следует);
7+
- экземпляры `CustomList` можно складывать и вычитать друг с другом, с обычными списками и с числами:
8+
```py
9+
CustomList([5, 1, 3, 7]) + CustomList([1, 2, 7]) # CustomList([6, 3, 10, 7])
10+
CustomList([10]) + [2, 5] # CustomList([12, 5])
11+
[2, 5] + CustomList([10]) # CustomList([12, 5])
12+
CustomList([2, 5]) + 10 # CustomList([12, 15])
13+
10 + CustomList([2, 5]) # CustomList([12, 15])
14+
15+
CustomList([5, 1, 3, 7]) - CustomList([1, 2, 7]) # CustomList([4, -1, -4, 7])
16+
CustomList([10]) - [2, 5] # CustomList([8, -5])
17+
[2, 5] - CustomList([10]) # CustomList([-8, 5])
18+
CustomList([2, 5]) - 10 # CustomList([-8, -5])
19+
10 - CustomList([2, 5]) # CustomList([8, 5])
20+
```
21+
Возвращаться должен новый экземпляр `CustomList`, элементы которого будут результатом поэлементного сложения/вычитания элементов исходных списков.
22+
Сложение/вычитание с числом выполняется как сложение/вычитание каждого элемента списка с данным числом;
23+
- при сложении/вычитании списков разной длины отсутствующие элементы меньшего списка считаются нулями;
24+
- после сложения/вычитания исходные списки не должны изменяться;
25+
- при сравнении (`==`, `!=`, `>`, `>=`, `<`, `<=`) экземмпляров CustomList должна сравниваться сумма элементов списков (сравнение с `list` и `int` не нужно);
26+
- должен быть переопределен `str`, чтобы выводились элементы списка и их сумма;
27+
- можно считать элементы списка `CustomList`, `list` и другие операнды всегда всегда целыми числами.
28+
29+
### 2. Тесты CustomList в отдельном модуле
30+
Тесты должны обязательно охватывать переопределенные методы.
31+
32+
### 3. Зеленый пайплайн в репе
33+
Обязательно: тесты, покрытие, flake8, pylint.
34+
Опционально можно добавить другие инструменты, например, mypy и black.
35+
Покрытие тестов должно составлять не менее 90%.

lesson-03/lesson-03.pdf

690 KB
Binary file not shown.

0 commit comments

Comments
 (0)