From 8f4a7dd8b959ebff7b402e683390fc08c7e0c65f Mon Sep 17 00:00:00 2001 From: tokyoboy0701x Date: Tue, 24 Sep 2024 19:35:06 +0300 Subject: [PATCH 01/17] added rectangle function --- rectangle.py | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 rectangle.py diff --git a/rectangle.py b/rectangle.py new file mode 100644 index 0000000000..771a133ffb --- /dev/null +++ b/rectangle.py @@ -0,0 +1,5 @@ +def area(a, b): + return a * b + +def perimeter(a, b): + return a + b \ No newline at end of file From d3dfeaa4a9e2b6ece28dbc2da97ee90793f45031 Mon Sep 17 00:00:00 2001 From: tokyoboy0701x Date: Tue, 24 Sep 2024 19:39:34 +0300 Subject: [PATCH 02/17] fixed rectangle function --- triangle.py | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 triangle.py diff --git a/triangle.py b/triangle.py new file mode 100644 index 0000000000..e1e4295c09 --- /dev/null +++ b/triangle.py @@ -0,0 +1,5 @@ +def area(a, h): + return a * h / 2 + +def perimeter(a, b, c): + return a + b + c \ No newline at end of file From 115d7774d2677ff2d02fbaaf043f2dabb8293e16 Mon Sep 17 00:00:00 2001 From: tokyoboy0701x Date: Wed, 16 Oct 2024 10:27:33 +0300 Subject: [PATCH 03/17] 'updated' --- circle.py | 16 ++++++++ docs/README.md | 107 ++++++++++++++++++++++++++++++++++++++++++++++++- rectangle.py | 18 ++++++++- square.py | 16 ++++++++ triangle.py | 19 +++++++++ 5 files changed, 174 insertions(+), 2 deletions(-) diff --git a/circle.py b/circle.py index c3eb8647c9..b0fc94d442 100644 --- a/circle.py +++ b/circle.py @@ -2,9 +2,25 @@ def area(r): + '''Возвращает площадь круга с радиусом r. + Параметры: + r (int): радиус круга + Возвращаемое значение: + pi * r * r (float): площадь круга с радиусом r + Пример вызова area(3): + Входные данные: 3 + Вывод: 28.2743338823''' return math.pi * r * r def perimeter(r): + '''Возвращает периметр круга с радиусом r. + Параметры: + r (int): радиус круга + Возвращаемое значение: + 2 * pi * r (float): периметр круга с радиусом r + Пример вызова perimetr(3): + Входные данные: 3 + Вывод: 18.8495559215''' return 2 * math.pi * r diff --git a/docs/README.md b/docs/README.md index 63f8727939..b0de249978 100644 --- a/docs/README.md +++ b/docs/README.md @@ -7,4 +7,109 @@ ## Perimeter - Circle: P = 2πR - Rectangle: P = 2a + 2b -- Square: P = 4a \ No newline at end of file +- Square: P = 4a + +# Документация +## Общее описание решения +Этот проект предоставляет набор модулей для вычисления площади и периметра различных геометрических фигур: круга, прямоугольника, квадрата и треугольника. Каждый модуль реализует функции для работы с соответствующей фигурой. +### Структура проекта +- circle.py: Модуль для работы с кругами. +- rectangle.py: Модуль для работы с прямоугольниками. +- square.py: Модуль для работы с квадратами. +- triangle.py: Модуль для работы с треугольниками. +## Использование +### circle.py +Модуль `circle.py` предоставляет функции для вычисления площади и периметра круга. +#### Функции +- `area(r)` + Возвращает площадь круга с радиусом `r` + **Параметры:** + `r`: радиус круга + **Возвращаемое значение:** + `pi * r * r`: площадь круга с радиусом r + **Пример вызова `area(3)`:** + Входные данные: `3` + Вывод: `28.2743338823` +- `perimeter(r)` + Возвращает периметр круга с радиусом `r` + **Параметры:** + `r`: радиус круга + **Возвращаемое значение:** + `2 * pi * r`: периметр круга с радиусом r + **Пример вызова `perimetr(3)`:** + Входные данные: `3` + Вывод: `18.8495559215` + +### rectangle.py +Модуль `rectangle.py` предоставляет функции для вычисления площади и периметра прямоугольника. +#### Функции +- `area(a, b)` + Возвращает площадь прямоугольника со сторонами `a` и `b` + **Параметры:** + `a`, `b`: стороны прямоугольника + **Возвращаемое значение:** + `a * b`: площадь прямоугольника + **Пример вызова `area(3, 2)`:** + Входные данные: `3 2` + Вывод: `6` +- `perimeter(a, b)` + Возвращает периметр прямоугольника со сторонами `a` и `b` + **Параметры:** + `a`, `b`: стороны прямоугольника + **Возвращаемое значение:** + `(a + b) * 2`: периметр прямоугольника + **Пример вызова `perimetr(3, 2)`:** + Входные данные: `3 2` + Вывод: `10` + +### square.py +Модуль `square.py` предоставляет функции для вычисления площади и периметра квадрата. +#### Функции +- `area(a)` + Возвращает площадь квадрата со стороной `a` + **Параметры:** + `a`: сторона квадрата + **Возвращаемое значение:** + `a * a`: площадь квадрата + **Пример вызова `area(3)`:** + Входные данные: `3` + Вывод: `9` +- `perimeter(a)` + Возвращает периметр квадрата со стороной `a` + **Параметры:** + `a`: сторона квадрата + **Возвращаемое значение:** + `a * 4`: периметр квадрата + **Пример вызова `perimetr(3)`:** + Входные данные: `3` + Вывод: `12` + +### triangle.py +Модуль `triangle.py` предоставляет функции для вычисления площади и периметра треугольника. +#### Функции +- `area(a, h)` + Возвращает площадь треугольника со стороной `a` и высотой `h` + **Параметры:** + `a`: сторона треугольника + `h`: высота треугольника + **Возвращаемое значение:** + `a * a`: площадь треугольника + **Пример вызова `area(3, 2)`:** + Входные данные: `3 2` + Вывод: `3` +- `perimeter(a, b, c)` + Возвращает периметр треугольника со сторонами `a`, `b` и `c` + **Параметры:** + `a`, `b`, `c`: стороны треугольника + `h`: высота треугольника + **Возвращаемое значение:** + `a + b + c`: периметр треугольника + **Пример вызова `perimetr(3, 2, 1)`:** + Входные данные: `3 2 1` + Вывод: `6` + +# Изменения +- `8ba9aeb3cea847b63a91ac378a2a6db758682460` Circle and square added +- `d078c8d9ee6155f3cb0e577d28d337b791de28e2` Docs added +- `8f4a7dd8b959ebff7b402e683390fc08c7e0c65f` added rectangle function +- `d3dfeaa4a9e2b6ece28dbc2da97ee90793f45031` fixed rectangle function \ No newline at end of file diff --git a/rectangle.py b/rectangle.py index 771a133ffb..c8e8d56228 100644 --- a/rectangle.py +++ b/rectangle.py @@ -1,5 +1,21 @@ def area(a, b): + '''Возвращает площадь прямоугольника со сторонами a и b + Параметры: + a, b: стороны прямоугольника + Возвращаемое значение: + a * b: площадь прямоугольника + Пример вызова area(3, 2): + Входные данные: 3 2 + Вывод: 6''' return a * b def perimeter(a, b): - return a + b \ No newline at end of file + '''Возвращает периметр прямоугольника со сторонами a и b + Параметры: + a, b: стороны прямоугольника + Возвращаемое значение: + (a + b) * 2: периметр прямоугольника + Пример вызова perimetr(3, 2)`: + Входные данные: 3 2 + Вывод: 10''' + return (a + b) * 2 \ No newline at end of file diff --git a/square.py b/square.py index 0f98724205..71db22ed44 100644 --- a/square.py +++ b/square.py @@ -1,7 +1,23 @@ def area(a): + '''Возвращает площадь квадрата со стороной a + Параметры: + a: сторона квадрата + Возвращаемое значение: + a * a: площадь квадрата + Пример вызова area(3): + Входные данные: 3 + Вывод: 9''' return a * a def perimeter(a): + '''Возвращает периметр квадрата со стороной a + Параметры: + a: сторона квадрата + Возвращаемое значение: + a * 4: периметр квадрата + Пример вызова perimetr(3): + Входные данные: 3 + Вывод: 12''' return 4 * a diff --git a/triangle.py b/triangle.py index e1e4295c09..b80234b6df 100644 --- a/triangle.py +++ b/triangle.py @@ -1,5 +1,24 @@ def area(a, h): + '''Возвращает площадь треугольника со стороной a и высотой h + Параметры: + a: сторона треугольника + h: высота треугольника + Возвращаемое значение: + a * a: площадь треугольника + Пример вызова area(3, 2): + Входные данные: 3, 2 + Вывод: 3''' return a * h / 2 + def perimeter(a, b, c): + '''Возвращает периметр треугольника со сторонами a, b и c + Параметры: + a, b, c: стороны треугольника + h: высота треугольника + Возвращаемое значение: + a + b + c: периметр треугольника + Пример вызова perimetr(3, 2, 1): + Входные данные: 3 2 1 + Вывод: 6''' return a + b + c \ No newline at end of file From 0d0cd4eb4d4dcdd9b666f1e6d34cee313ac93e4e Mon Sep 17 00:00:00 2001 From: Ivan Sotnikov <100781733+tokyoboy0701x@users.noreply.github.com> Date: Wed, 18 Dec 2024 01:26:07 +0300 Subject: [PATCH 04/17] Update README.md --- docs/README.md | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/README.md b/docs/README.md index b0de249978..35aee2b53c 100644 --- a/docs/README.md +++ b/docs/README.md @@ -23,20 +23,20 @@ #### Функции - `area(r)` Возвращает площадь круга с радиусом `r` - **Параметры:** + - **Параметры:** `r`: радиус круга - **Возвращаемое значение:** + - **Возвращаемое значение:** `pi * r * r`: площадь круга с радиусом r - **Пример вызова `area(3)`:** + - **Пример вызова `area(3)`:** Входные данные: `3` Вывод: `28.2743338823` - `perimeter(r)` Возвращает периметр круга с радиусом `r` - **Параметры:** + - **Параметры:** `r`: радиус круга - **Возвращаемое значение:** + - **Возвращаемое значение:** `2 * pi * r`: периметр круга с радиусом r - **Пример вызова `perimetr(3)`:** + - **Пример вызова `perimetr(3)`:** Входные данные: `3` Вывод: `18.8495559215` @@ -45,20 +45,20 @@ #### Функции - `area(a, b)` Возвращает площадь прямоугольника со сторонами `a` и `b` - **Параметры:** + - **Параметры:** `a`, `b`: стороны прямоугольника - **Возвращаемое значение:** + - **Возвращаемое значение:** `a * b`: площадь прямоугольника - **Пример вызова `area(3, 2)`:** + - **Пример вызова `area(3, 2)`:** Входные данные: `3 2` Вывод: `6` - `perimeter(a, b)` Возвращает периметр прямоугольника со сторонами `a` и `b` - **Параметры:** + - **Параметры:** `a`, `b`: стороны прямоугольника - **Возвращаемое значение:** + - **Возвращаемое значение:** `(a + b) * 2`: периметр прямоугольника - **Пример вызова `perimetr(3, 2)`:** + - **Пример вызова `perimetr(3, 2)`:** Входные данные: `3 2` Вывод: `10` @@ -67,20 +67,20 @@ #### Функции - `area(a)` Возвращает площадь квадрата со стороной `a` - **Параметры:** + - **Параметры:** `a`: сторона квадрата - **Возвращаемое значение:** + - **Возвращаемое значение:** `a * a`: площадь квадрата - **Пример вызова `area(3)`:** + - **Пример вызова `area(3)`:** Входные данные: `3` Вывод: `9` - `perimeter(a)` Возвращает периметр квадрата со стороной `a` - **Параметры:** + - **Параметры:** `a`: сторона квадрата - **Возвращаемое значение:** + - **Возвращаемое значение:** `a * 4`: периметр квадрата - **Пример вызова `perimetr(3)`:** + - **Пример вызова `perimetr(3)`:** Входные данные: `3` Вывод: `12` @@ -89,22 +89,22 @@ #### Функции - `area(a, h)` Возвращает площадь треугольника со стороной `a` и высотой `h` - **Параметры:** + - **Параметры:** `a`: сторона треугольника `h`: высота треугольника - **Возвращаемое значение:** + - **Возвращаемое значение:** `a * a`: площадь треугольника - **Пример вызова `area(3, 2)`:** + - **Пример вызова `area(3, 2)`:** Входные данные: `3 2` Вывод: `3` - `perimeter(a, b, c)` Возвращает периметр треугольника со сторонами `a`, `b` и `c` - **Параметры:** + - **Параметры:** `a`, `b`, `c`: стороны треугольника `h`: высота треугольника - **Возвращаемое значение:** + - **Возвращаемое значение:** `a + b + c`: периметр треугольника - **Пример вызова `perimetr(3, 2, 1)`:** + - **Пример вызова `perimetr(3, 2, 1)`:** Входные данные: `3 2 1` Вывод: `6` @@ -112,4 +112,4 @@ - `8ba9aeb3cea847b63a91ac378a2a6db758682460` Circle and square added - `d078c8d9ee6155f3cb0e577d28d337b791de28e2` Docs added - `8f4a7dd8b959ebff7b402e683390fc08c7e0c65f` added rectangle function -- `d3dfeaa4a9e2b6ece28dbc2da97ee90793f45031` fixed rectangle function \ No newline at end of file +- `d3dfeaa4a9e2b6ece28dbc2da97ee90793f45031` fixed rectangle function From 41c85681c1a235f58d91bcd0bbd75a6d33497450 Mon Sep 17 00:00:00 2001 From: Ivan Sotnikov <100781733+tokyoboy0701x@users.noreply.github.com> Date: Wed, 18 Dec 2024 01:27:05 +0300 Subject: [PATCH 05/17] Update README.md --- docs/README.md | 51 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/docs/README.md b/docs/README.md index 35aee2b53c..23e8537cb5 100644 --- a/docs/README.md +++ b/docs/README.md @@ -23,20 +23,20 @@ #### Функции - `area(r)` Возвращает площадь круга с радиусом `r` - - **Параметры:** + - ** Параметры:** `r`: радиус круга - - **Возвращаемое значение:** + - ** Возвращаемое значение:** `pi * r * r`: площадь круга с радиусом r - - **Пример вызова `area(3)`:** + - ** Пример вызова `area(3)`:** Входные данные: `3` Вывод: `28.2743338823` - `perimeter(r)` Возвращает периметр круга с радиусом `r` - - **Параметры:** + - ** Параметры:** `r`: радиус круга - - **Возвращаемое значение:** + - ** Возвращаемое значение:** `2 * pi * r`: периметр круга с радиусом r - - **Пример вызова `perimetr(3)`:** + - ** Пример вызова `perimeter(3)`:** Входные данные: `3` Вывод: `18.8495559215` @@ -45,20 +45,20 @@ #### Функции - `area(a, b)` Возвращает площадь прямоугольника со сторонами `a` и `b` - - **Параметры:** + - ** Параметры:** `a`, `b`: стороны прямоугольника - - **Возвращаемое значение:** + - ** Возвращаемое значение:** `a * b`: площадь прямоугольника - - **Пример вызова `area(3, 2)`:** + - ** Пример вызова `area(3, 2)`:** Входные данные: `3 2` Вывод: `6` - `perimeter(a, b)` Возвращает периметр прямоугольника со сторонами `a` и `b` - - **Параметры:** + - ** Параметры:** `a`, `b`: стороны прямоугольника - - **Возвращаемое значение:** + - ** Возвращаемое значение:** `(a + b) * 2`: периметр прямоугольника - - **Пример вызова `perimetr(3, 2)`:** + - ** Пример вызова `perimeter(3, 2)`:** Входные данные: `3 2` Вывод: `10` @@ -67,20 +67,20 @@ #### Функции - `area(a)` Возвращает площадь квадрата со стороной `a` - - **Параметры:** + - ** Параметры:** `a`: сторона квадрата - - **Возвращаемое значение:** + - ** Возвращаемое значение:** `a * a`: площадь квадрата - - **Пример вызова `area(3)`:** + - ** Пример вызова `area(3)`:** Входные данные: `3` Вывод: `9` - `perimeter(a)` Возвращает периметр квадрата со стороной `a` - - **Параметры:** + - ** Параметры:** `a`: сторона квадрата - - **Возвращаемое значение:** + - ** Возвращаемое значение:** `a * 4`: периметр квадрата - - **Пример вызова `perimetr(3)`:** + - ** Пример вызова `perimeter(3)`:** Входные данные: `3` Вывод: `12` @@ -89,22 +89,21 @@ #### Функции - `area(a, h)` Возвращает площадь треугольника со стороной `a` и высотой `h` - - **Параметры:** + - ** Параметры:** `a`: сторона треугольника `h`: высота треугольника - - **Возвращаемое значение:** - `a * a`: площадь треугольника - - **Пример вызова `area(3, 2)`:** + - ** Возвращаемое значение:** + `0.5 * a * h`: площадь треугольника + - ** Пример вызова `area(3, 2)`:** Входные данные: `3 2` Вывод: `3` - `perimeter(a, b, c)` Возвращает периметр треугольника со сторонами `a`, `b` и `c` - - **Параметры:** + - ** Параметры:** `a`, `b`, `c`: стороны треугольника - `h`: высота треугольника - - **Возвращаемое значение:** + - ** Возвращаемое значение:** `a + b + c`: периметр треугольника - - **Пример вызова `perimetr(3, 2, 1)`:** + - ** Пример вызова `perimeter(3, 2, 1)`:** Входные данные: `3 2 1` Вывод: `6` From ee80c26d45ad4ef921ac093ffaf0fa7eef0f724c Mon Sep 17 00:00:00 2001 From: Ivan Sotnikov <100781733+tokyoboy0701x@users.noreply.github.com> Date: Wed, 18 Dec 2024 01:48:30 +0300 Subject: [PATCH 06/17] Update README.md --- docs/README.md | 136 ++++++++++++++++++++++++------------------------- 1 file changed, 68 insertions(+), 68 deletions(-) diff --git a/docs/README.md b/docs/README.md index 23e8537cb5..fb4e8b9dd3 100644 --- a/docs/README.md +++ b/docs/README.md @@ -18,94 +18,94 @@ - square.py: Модуль для работы с квадратами. - triangle.py: Модуль для работы с треугольниками. ## Использование -### circle.py +### [circle.py](https://github.com/tokyoboy0701x/geometric_lib/blob/new_features_467568/circle.py) Модуль `circle.py` предоставляет функции для вычисления площади и периметра круга. #### Функции - `area(r)` - Возвращает площадь круга с радиусом `r` - - ** Параметры:** - `r`: радиус круга - - ** Возвращаемое значение:** - `pi * r * r`: площадь круга с радиусом r - - ** Пример вызова `area(3)`:** - Входные данные: `3` - Вывод: `28.2743338823` + Возвращает площадь круга с радиусом `r` + **Параметры:** + `r`: радиус круга + **Возвращаемое значение:** + `pi * r * r`: площадь круга с радиусом r + **Пример вызова `area(3)`:** + Входные данные: `3` + Вывод: `28.2743338823` - `perimeter(r)` - Возвращает периметр круга с радиусом `r` - - ** Параметры:** - `r`: радиус круга - - ** Возвращаемое значение:** - `2 * pi * r`: периметр круга с радиусом r - - ** Пример вызова `perimeter(3)`:** - Входные данные: `3` + Возвращает периметр круга с радиусом `r` + **Параметры:** + `r`: радиус круга + **Возвращаемое значение:** + `2 * pi * r`: периметр круга с радиусом r + **Пример вызова `perimeter(3)`:** + Входные данные: `3` Вывод: `18.8495559215` -### rectangle.py +### [rectangle.py](https://github.com/tokyoboy0701x/geometric_lib/blob/new_features_467568/rectangle.py) Модуль `rectangle.py` предоставляет функции для вычисления площади и периметра прямоугольника. #### Функции - `area(a, b)` - Возвращает площадь прямоугольника со сторонами `a` и `b` - - ** Параметры:** - `a`, `b`: стороны прямоугольника - - ** Возвращаемое значение:** - `a * b`: площадь прямоугольника - - ** Пример вызова `area(3, 2)`:** - Входные данные: `3 2` - Вывод: `6` + Возвращает площадь прямоугольника со сторонами `a` и `b` + **Параметры:** + `a`, `b`: стороны прямоугольника + **Возвращаемое значение:** + `a * b`: площадь прямоугольника + **Пример вызова `area(3, 2)`:** + Входные данные: `3 2` + Вывод: `6` - `perimeter(a, b)` - Возвращает периметр прямоугольника со сторонами `a` и `b` - - ** Параметры:** - `a`, `b`: стороны прямоугольника - - ** Возвращаемое значение:** - `(a + b) * 2`: периметр прямоугольника - - ** Пример вызова `perimeter(3, 2)`:** - Входные данные: `3 2` - Вывод: `10` + Возвращает периметр прямоугольника со сторонами `a` и `b` + **Параметры:** + `a`, `b`: стороны прямоугольника + **Возвращаемое значение:** + `(a + b) * 2`: периметр прямоугольника + **Пример вызова `perimeter(3, 2)`:** + Входные данные: `3 2` + Вывод: `10` -### square.py +### [square.py](https://github.com/tokyoboy0701x/geometric_lib/blob/new_features_467568/square.py) Модуль `square.py` предоставляет функции для вычисления площади и периметра квадрата. #### Функции - `area(a)` - Возвращает площадь квадрата со стороной `a` - - ** Параметры:** - `a`: сторона квадрата - - ** Возвращаемое значение:** - `a * a`: площадь квадрата - - ** Пример вызова `area(3)`:** - Входные данные: `3` - Вывод: `9` + Возвращает площадь квадрата со стороной `a` + **Параметры:** + `a`: сторона квадрата + **Возвращаемое значение:** + `a * a`: площадь квадрата + **Пример вызова `area(3)`:** + Входные данные: `3` + Вывод: `9` - `perimeter(a)` - Возвращает периметр квадрата со стороной `a` - - ** Параметры:** - `a`: сторона квадрата - - ** Возвращаемое значение:** - `a * 4`: периметр квадрата - - ** Пример вызова `perimeter(3)`:** - Входные данные: `3` - Вывод: `12` + Возвращает периметр квадрата со стороной `a` + **Параметры:** + `a`: сторона квадрата + **Возвращаемое значение:** + `a * 4`: периметр квадрата + **Пример вызова `perimeter(3)`:** + Входные данные: `3` + Вывод: `12` -### triangle.py +### [triangle.py](https://github.com/tokyoboy0701x/geometric_lib/blob/new_features_467568/triangle.py) Модуль `triangle.py` предоставляет функции для вычисления площади и периметра треугольника. #### Функции - `area(a, h)` - Возвращает площадь треугольника со стороной `a` и высотой `h` - - ** Параметры:** - `a`: сторона треугольника - `h`: высота треугольника - - ** Возвращаемое значение:** - `0.5 * a * h`: площадь треугольника - - ** Пример вызова `area(3, 2)`:** - Входные данные: `3 2` - Вывод: `3` + Возвращает площадь треугольника со стороной `a` и высотой `h` + **Параметры:** + `a`: сторона треугольника + `h`: высота треугольника + **Возвращаемое значение:** + `0.5 * a * h`: площадь треугольника + **Пример вызова `area(3, 2)`:** + Входные данные: `3 2` + Вывод: `3` - `perimeter(a, b, c)` - Возвращает периметр треугольника со сторонами `a`, `b` и `c` - - ** Параметры:** - `a`, `b`, `c`: стороны треугольника - - ** Возвращаемое значение:** - `a + b + c`: периметр треугольника - - ** Пример вызова `perimeter(3, 2, 1)`:** - Входные данные: `3 2 1` - Вывод: `6` + Возвращает периметр треугольника со сторонами `a`, `b` и `c` + **Параметры:** + `a`, `b`, `c`: стороны треугольника + **Возвращаемое значение:** + `a + b + c`: периметр треугольника + **Пример вызова `perimeter(3, 2, 1)`:** + Входные данные: `3 2 1` + Вывод: `6` # Изменения - `8ba9aeb3cea847b63a91ac378a2a6db758682460` Circle and square added From 8d9d356d274f750c361e3d431affa4602fbd8f3a Mon Sep 17 00:00:00 2001 From: Ivan Sotnikov <100781733+tokyoboy0701x@users.noreply.github.com> Date: Sat, 21 Dec 2024 20:19:30 +0300 Subject: [PATCH 07/17] Update README.md --- docs/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/README.md b/docs/README.md index fb4e8b9dd3..89fd7ecb8b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -18,7 +18,7 @@ - square.py: Модуль для работы с квадратами. - triangle.py: Модуль для работы с треугольниками. ## Использование -### [circle.py](https://github.com/tokyoboy0701x/geometric_lib/blob/new_features_467568/circle.py) +### [circle.py](../blob/new_features_467568/circle.py) Модуль `circle.py` предоставляет функции для вычисления площади и периметра круга. #### Функции - `area(r)` @@ -40,7 +40,7 @@ Входные данные: `3` Вывод: `18.8495559215` -### [rectangle.py](https://github.com/tokyoboy0701x/geometric_lib/blob/new_features_467568/rectangle.py) +### [rectangle.py](../blob/new_features_467568/rectangle.py) Модуль `rectangle.py` предоставляет функции для вычисления площади и периметра прямоугольника. #### Функции - `area(a, b)` @@ -62,7 +62,7 @@ Входные данные: `3 2` Вывод: `10` -### [square.py](https://github.com/tokyoboy0701x/geometric_lib/blob/new_features_467568/square.py) +### [square.py](../blob/new_features_467568/square.py) Модуль `square.py` предоставляет функции для вычисления площади и периметра квадрата. #### Функции - `area(a)` @@ -84,7 +84,7 @@ Входные данные: `3` Вывод: `12` -### [triangle.py](https://github.com/tokyoboy0701x/geometric_lib/blob/new_features_467568/triangle.py) +### [triangle.py](../blob/new_features_467568/triangle.py) Модуль `triangle.py` предоставляет функции для вычисления площади и периметра треугольника. #### Функции - `area(a, h)` From a777b8362a90344ffe134b0325476b4ed778f4d0 Mon Sep 17 00:00:00 2001 From: tokyoboy0701x Date: Wed, 25 Dec 2024 02:28:12 +0300 Subject: [PATCH 08/17] unittests added --- .idea/.gitignore | 3 + .idea/.name | 1 + .idea/geometric_lib.iml | 12 ++++ .../inspectionProfiles/profiles_settings.xml | 6 ++ .idea/misc.xml | 7 ++ .idea/modules.xml | 8 +++ .idea/vcs.xml | 6 ++ __pycache__/circle.cpython-312.pyc | Bin 0 -> 4658 bytes __pycache__/rectangle.cpython-312.pyc | Bin 0 -> 5354 bytes __pycache__/square.cpython-312.pyc | Bin 0 -> 4301 bytes __pycache__/triangle.cpython-312.pyc | Bin 0 -> 5713 bytes circle.py | 49 +++++++++++++- rectangle.py | 55 +++++++++++++++- square.py | 46 +++++++++++++ triangle.py | 61 +++++++++++++++++- 15 files changed, 249 insertions(+), 5 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/.name create mode 100644 .idea/geometric_lib.iml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 __pycache__/circle.cpython-312.pyc create mode 100644 __pycache__/rectangle.cpython-312.pyc create mode 100644 __pycache__/square.cpython-312.pyc create mode 100644 __pycache__/triangle.cpython-312.pyc diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000000..26d33521af --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000000..1805227d44 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +circle.py \ No newline at end of file diff --git a/.idea/geometric_lib.iml b/.idea/geometric_lib.iml new file mode 100644 index 0000000000..8b8c395472 --- /dev/null +++ b/.idea/geometric_lib.iml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000000..105ce2da2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000000..db8786c06e --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000000..5c0675083d --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000000..35eb1ddfbb --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/__pycache__/circle.cpython-312.pyc b/__pycache__/circle.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f69a022875a45755754af707660363d6ae0e6f6c GIT binary patch literal 4658 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 St$bK}i0!=2{lUO5D*q205Wp?~ literal 0 HcmV?d00001 diff --git a/__pycache__/square.cpython-312.pyc b/__pycache__/square.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a74698fc50e7a6397ec03fa066c0510d42499120 GIT binary patch literal 4301 zcmdT{T}&KR6uz@RFzhbaHYltuIBlU}wk-%OwMA2lZKDr{L|cs#lF4*ux{lo+dS@2H zhKH5Z*rq--eW?je$^#EW>S+TJ{TTM4Ad81^qf1(!2ST6{v>)6 zzCE+|oO|xK=brBlKiAj$2#lWwE=B+33Hco#)`z!XtoDF$izr0lVkFKDaU4-xSICe{ zaRa(t&EBi1hCgUDI@c~v(~%eorj>}iG`Ky+W70JudAXKtJr zF6IF+Td?%KMe`WThBNOsYS+J0xY@#56Wlm#_0r3PP`^><%)2+wkCQYIJx4@ODh^@h zO>@co#=M)$m~**n=A5~Zn-I(&&F{@6_BfyWN-)1O@50PH^O-Q`gxu%m5cy^jujA$Gv=iu;`MxAi$;}|16`&1 zu%0v$+Hh1&##MuA5hO1h&EuxYkPC@1R2|$*1eP zaJEH=fgWsZh_>Qd7j=$|5z#%kj84la-&vRCmvv}b<18eOv95%k_ULNt;^tpQFyO+G zuyLi&G~*Kqgh7p}R8pW;30+Gj(p|+n@7yUsgzP&0!Wr@_ANYlD&hgE+8^4w(o2K^X z`8N9}-%Rk?(f_EWE@a#YP$+RQ#|LkV)8}V;@_gqrw^H!ekdY)WuVGAM2((@ZEsbyNF$pW{I?d!PV*|!z1fv2cp zH5x^Oka-!4mvzy7NDn2sjAJ|F=;-!V>J+ZTcc-Z1kg%*{gHzp;`=)4~4?SsBt75+& zau?*O?G){LsF+?x})!NzCh&Y4=XH&NMzn(RUOo+6IZmLf0~ds#x&@m1q|W zPrADb*2N(wk#xCMeLUyN^Sw`6=?avKwTgB?+9IKmvQ1odS;TXaR1ni!y{l>^%Drpmbi-5J((fbNnadF=El^V_) zLg+$x)v*pcRv4|mRRFslY?(pPYw@XsW?&ys6chV)V<(3t!~dvQ{n!T9_&01`Cn;7O lU#av~fWO=v$NffHRy@17-7ALx9=Ek{;Ts?QP2hvY{|kq$o!$Td literal 0 HcmV?d00001 diff --git a/__pycache__/triangle.cpython-312.pyc b/__pycache__/triangle.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..10d35f773d6bcd6d28465ee0ae3a550ec15e7da7 GIT binary patch literal 5713 zcmchbUu+vi9>-_acCvB)Tmz-V{l`L4uTIiXCnRmt9!**mkdPu3LJ?8L-p0E)3y#yy zu6x9aPPtHYRN*1&OMzA*4}Ead7mI5|_>=I$0}}VJCW-E}0;!0HQ{JkkNT|}O_xsJ- zW}RIV^QX6xznQd31XJoT`!c3EoJp+%dcWRlU()G$9_jyy~p0DH*1UURO$6XU#92;g!=k+ zLX6M^bxN$>tShw)xLZ!p45UmAW+0I-kZ35~0i6#^a9NkECF>*W!~CR`%U`r|)_i_S zvOc#ywU+qpjr==OehO;m^KV-JfVQ9J-?0|01?v+lC*}WUErH~xpz$QsEyCwxNs+7t z3Enu3)mR75Mz}L{SiGzcz#%xbK0}xJ$^3M$rwz7Mddoe4*9zV7H6Q79cjXrtdlLga zU9#pS$krls{qNR1&%=C$ZcDA$^(r&z>ALj+Kcgi_T52gmxZZm}Rhq*3X6Pux{un!&Fjn%?`i|><~A%>juZqY9|>R zV|Mtol1w}0s9;mYrXvPgOVZtaCwkAkXlTqhV~m+8{Y*j|8`Vsv$K|9xdmCawc^|TQ|D)zXOv6ZzG-T)B2O+ibz5Th&H9G7&t2@E ziCsKw1-Gt)3lc9-2Fs*`k)5z;e=|n<$}oWm;a3qeWf-ES2P0(|5;nn*;I-crL*XKZ z07ya=K!V;+2pLcSQZW4;q{zGE92U)&)&i{jip$@JMhKS$Nokjc5lL~WG_f~>51O<~ z@pAO!rz`p{y%^WhFGh|x?y69uNNo^U8+H>gQ(clu9jy$Qvl`QJQE|w$OR)`{`FXxb zol>mi1C!wfOAo_+o0EdoU`Ygt23Qk(*>u>ZaRZkRSg|emsIJfzjj?TTAAyhY9tbSt zZPhO174xsR2$}Qq^Ofzh zr&h&3Iz!?P`L`q_P)rR^NO0gk;2EwTk0qSKmcGIhv5)P5M{E~}J0Fj42#ario@{h) zmJMIC1L(_}i}-BUmEG9~SH=DJHy7+t@V|!p4tos6H~#G#;vd!D&{Wxkz2C^RZ5Fkw zaaW~SV^?<08mnU4uZ^{|ul}?HCP;!@FYKo{?sIe?8n7Fj>HoZ<8=AoyFk(Dyct(83 zhKTjlc_pbkF=yI03)$Ve2V+JM7Up^+FGj9LuMK89vusuD{2e3a5O75dOMmUZ_wL=} z>whl5q8Ml+if_m}H-wzh5(=IH`8?0;-z?^`=7;@)ZoQ^vkLT$94;s1Q>{kdH&)9C9 z%^8i26^XX#Y<4w9GY%O$iobx>U>U_i0}RQ*$CknG zNwS87oDxAw6o{qpgMUp^d0JJ~o;RW@7}$Nh8Bl?`NHSdPSUU8~~3 z|4S~Mxp5GqK7>+z{4QE&s*B%cak5hUG~2Ztc_IhfS@*AvzXIX`@`b;Z5b|sv^Z?GL z9Ce)TzAHiU8+kXhGqI|M-fi+M#_rn33!HyBC*+PV2&>|e-!X6`J&?f_cr-Y`+Hs_j zF?{sPfbW|HUmlb&j!U3Q9+cTU=a+}pYkKa1+^GeCfA4+I1I`qVL?;;tC=UyF`ON^% zb{=;}Rl{FuKTs*==3IXc_JYGa=7H!RY*Cg|%BUvGc3752$JBHZ%MG%O=W(ZoJ%SzH zgR&Q;6{Q0uhSH6K`zt$w@+Xu&6ok(l;hy*pF@}?o3r-9J_nZslwm?JsZr9LI2TD6i zS4ldtbO7ZLN)O6Wlq2gP&cN{(4n#w?m`>>?W|85R<{T;bG~;fc#%K7uig)F%c+`pY rDTd1g_h(}_$gKdS^jos)cJM*^(CzkS`p})dduZ>>8$S^E;`aXoUq}%6 literal 0 HcmV?d00001 diff --git a/circle.py b/circle.py index b0fc94d442..7f84114928 100644 --- a/circle.py +++ b/circle.py @@ -1,5 +1,5 @@ import math - +from unittest import TestCase def area(r): '''Возвращает площадь круга с радиусом r. @@ -10,6 +10,13 @@ def area(r): Пример вызова area(3): Входные данные: 3 Вывод: 28.2743338823''' + + if not (isinstance(r, int) or isinstance(r, float)): + raise TypeError("Argument must be int or float") + + if r <= 0: + raise ValueError("Argument must be positive") + return math.pi * r * r @@ -22,5 +29,45 @@ def perimeter(r): Пример вызова perimetr(3): Входные данные: 3 Вывод: 18.8495559215''' + + if not (isinstance(r, int) or isinstance(r, float)): + raise TypeError("Argument must be int or float") + + if r <= 0: + raise ValueError("Argument must be positive") + return 2 * math.pi * r + + + +class CircleTestCase(TestCase): + def test_area_with_integer_radius(self): + self.assertEqual(area(5), 78.53981633974483) + + def test_area_with_float_radius(self): + self.assertEqual(area(2.5), 19.634954084936208) + + def test_area_with_incorrect_type_radius(self): + self.assertRaises(TypeError, area, []) + + def test_area_with_negative_radius(self): + self.assertRaises(ValueError, area, -1) + + def test_area_with_zero_radius(self): + self.assertRaises(ValueError, area, 0) + + def test_perimeter_with_integer_radius(self): + self.assertEqual(perimeter(4), 25.132741228718345) + + def test_perimeter_with_float_radius(self): + self.assertEqual(perimeter(3.5), 21.991148575128552) + + def test_perimeter_with_incorrect_type_radius(self): + self.assertRaises(TypeError, perimeter, []) + + def test_perimeter_with_negative_radius(self): + self.assertRaises(ValueError, perimeter, -2) + + def test_perimeter_with_zero_radius(self): + self.assertRaises(ValueError, perimeter, 0) \ No newline at end of file diff --git a/rectangle.py b/rectangle.py index c8e8d56228..2c6ebe957c 100644 --- a/rectangle.py +++ b/rectangle.py @@ -1,3 +1,5 @@ +from unittest import TestCase + def area(a, b): '''Возвращает площадь прямоугольника со сторонами a и b Параметры: @@ -7,6 +9,13 @@ def area(a, b): Пример вызова area(3, 2): Входные данные: 3 2 Вывод: 6''' + + if not (isinstance(a, int) or isinstance(a, float)) or not (isinstance(b, int) or isinstance(b, float)): + raise TypeError("Argument must be int or float") + + if a <= 0 or b <= 0: + raise ValueError("Argument must be positive") + return a * b def perimeter(a, b): @@ -18,4 +27,48 @@ def perimeter(a, b): Пример вызова perimetr(3, 2)`: Входные данные: 3 2 Вывод: 10''' - return (a + b) * 2 \ No newline at end of file + + if not (isinstance(a, int) or isinstance(a, float)) or not (isinstance(b, int) or isinstance(b, float)): + raise TypeError("Argument must be int or float") + + if a <= 0 or b <= 0: + raise ValueError("Argument must be positive") + + return (a + b) * 2 + +class RectangleTestCase(TestCase): + def test_area_with_integer_dimensions(self): + self.assertEqual(area(3, 4), 12) + + def test_area_with_float_dimensions(self): + self.assertEqual(area(2.5, 1.5), 3.75) + + def test_area_with_mixed_types(self): + self.assertEqual(area(2, 2.0), 4.0) + + def test_area_with_incorrect_type(self): + self.assertRaises(TypeError, area, [], 1) + + def test_area_with_negative_value(self): + self.assertRaises(ValueError, area, 2, -3) + + def test_area_with_zero_value(self): + self.assertRaises(ValueError, area, 0, 1) + + def test_perimeter_with_integer_dimensions(self): + self.assertEqual(perimeter(3, 4), 14) + + def test_perimeter_with_float_dimensions(self): + self.assertEqual(perimeter(2.5, 1.5), 8.0) + + def test_perimeter_with_mixed_types(self): + self.assertEqual(perimeter(2.0, 3), 10) + + def test_perimeter_with_incorrect_type(self): + self.assertRaises(TypeError, perimeter, [], []) + + def test_perimeter_with_negative_value(self): + self.assertRaises(ValueError, perimeter, -2, 3) + + def test_perimeter_with_zero_value(self): + self.assertRaises(ValueError, perimeter, 1, 0) \ No newline at end of file diff --git a/square.py b/square.py index 71db22ed44..a20291712e 100644 --- a/square.py +++ b/square.py @@ -1,3 +1,4 @@ +from unittest import TestCase def area(a): '''Возвращает площадь квадрата со стороной a @@ -8,6 +9,13 @@ def area(a): Пример вызова area(3): Входные данные: 3 Вывод: 9''' + + if not (isinstance(a, int) or isinstance(a, float)): + raise TypeError("Argument must be int or float") + + if a <= 0: + raise ValueError("Argument must be positive") + return a * a @@ -20,4 +28,42 @@ def perimeter(a): Пример вызова perimetr(3): Входные данные: 3 Вывод: 12''' + + if not (isinstance(a, int) or isinstance(a, float)): + raise TypeError("Argument must be int or float") + + if a <= 0: + raise ValueError("Argument must be positive") + return 4 * a + +class SquareTestCase(TestCase): + def test_area_with_integer_dimension(self): + self.assertEqual(area(3), 9) + + def test_area_with_float_dimension(self): + self.assertEqual(area(2.5), 6.25) + + def test_area_with_incorrect_type(self): + self.assertRaises(TypeError, area, []) + + def test_area_with_negative_value(self): + self.assertRaises(ValueError, area, -1) + + def test_area_with_zero_value(self): + self.assertRaises(ValueError, area, 0) + + def test_perimeter_with_integer_dimension(self): + self.assertEqual(perimeter(3), 12) + + def test_perimeter_with_float_dimension(self): + self.assertEqual(perimeter(2.5), 10.0) + + def test_perimeter_with_incorrect_type(self): + self.assertRaises(TypeError, perimeter, []) + + def test_perimeter_with_negative_value(self): + self.assertRaises(ValueError, perimeter, -1) + + def test_perimeter_with_zero_value(self): + self.assertRaises(ValueError, perimeter, 0) diff --git a/triangle.py b/triangle.py index b80234b6df..d66efd2abc 100644 --- a/triangle.py +++ b/triangle.py @@ -1,5 +1,8 @@ +from unittest import TestCase + def area(a, h): - '''Возвращает площадь треугольника со стороной a и высотой h + ''' + Возвращает площадь треугольника со стороной a и высотой h Параметры: a: сторона треугольника h: высота треугольника @@ -7,7 +10,15 @@ def area(a, h): a * a: площадь треугольника Пример вызова area(3, 2): Входные данные: 3, 2 - Вывод: 3''' + Вывод: 3 + ''' + + if not (isinstance(a, int) or isinstance(a, float)) or not (isinstance(h, int) or isinstance(h, float)): + raise TypeError("Argument must be int or float") + + if a <= 0 or h <= 0: + raise ValueError("Argument must be positive") + return a * h / 2 @@ -21,4 +32,48 @@ def perimeter(a, b, c): Пример вызова perimetr(3, 2, 1): Входные данные: 3 2 1 Вывод: 6''' - return a + b + c \ No newline at end of file + + if not (isinstance(a, int) or isinstance(a, float)) or not (isinstance(b, int) or isinstance(b, float)) or not (isinstance(c, int) or isinstance(c, float)): + raise TypeError("Argument must be int or float") + + if a <= 0 or b <= 0 or c <= 0: + raise ValueError("Argument must be positive") + + return a + b + c + +class TriangleTestCase(TestCase): + def test_area_with_integer_base_and_height(self): + self.assertEqual(area(2, 3), 3) + + def test_area_with_float_base_and_height(self): + self.assertEqual(area(1.5, 4.0), 3.0) + + def test_area_with_mixed_types(self): + self.assertEqual(area(1.5, 4), 3.0) + + def test_area_with_invalid_type(self): + self.assertRaises(TypeError, area, [], []) + + def test_area_with_negative_base(self): + self.assertRaises(ValueError, area, -3, 2) + + def test_area_with_zero_height(self): + self.assertRaises(ValueError, area, 1, 0) + + def test_perimeter_with_integer_sides(self): + self.assertEqual(perimeter(1, 2, 3), 6) + + def test_perimeter_with_float_sides(self): + self.assertEqual(perimeter(1.5, 1.0, 2.5), 5.0) + + def test_perimeter_with_mixed_types(self): + self.assertEqual(perimeter(1.5, 1, 2.5), 5.0) + + def test_perimeter_with_invalid_type(self): + self.assertRaises(TypeError, perimeter, [], [], []) + + def test_perimeter_with_negative_side(self): + self.assertRaises(ValueError, perimeter, -3, 2, 1) + + def test_perimeter_with_zero_side(self): + self.assertRaises(ValueError, perimeter, 0, 3, 2) \ No newline at end of file From 0e086677c609da2d40e54eb5c408124f635c2348 Mon Sep 17 00:00:00 2001 From: tokyoboy0701x Date: Wed, 25 Dec 2024 02:34:47 +0300 Subject: [PATCH 09/17] added unittests --- __pycache__/circle.cpython-312.pyc | Bin 4658 -> 0 bytes __pycache__/rectangle.cpython-312.pyc | Bin 5354 -> 0 bytes __pycache__/square.cpython-312.pyc | Bin 4301 -> 0 bytes __pycache__/triangle.cpython-312.pyc | Bin 5713 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 __pycache__/circle.cpython-312.pyc delete mode 100644 __pycache__/rectangle.cpython-312.pyc delete mode 100644 __pycache__/square.cpython-312.pyc delete mode 100644 __pycache__/triangle.cpython-312.pyc diff --git a/__pycache__/circle.cpython-312.pyc b/__pycache__/circle.cpython-312.pyc deleted file mode 100644 index f69a022875a45755754af707660363d6ae0e6f6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4658 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 St$bK}i0!=2{lUO5D*q205Wp?~ diff --git a/__pycache__/square.cpython-312.pyc b/__pycache__/square.cpython-312.pyc deleted file mode 100644 index a74698fc50e7a6397ec03fa066c0510d42499120..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4301 zcmdT{T}&KR6uz@RFzhbaHYltuIBlU}wk-%OwMA2lZKDr{L|cs#lF4*ux{lo+dS@2H zhKH5Z*rq--eW?je$^#EW>S+TJ{TTM4Ad81^qf1(!2ST6{v>)6 zzCE+|oO|xK=brBlKiAj$2#lWwE=B+33Hco#)`z!XtoDF$izr0lVkFKDaU4-xSICe{ zaRa(t&EBi1hCgUDI@c~v(~%eorj>}iG`Ky+W70JudAXKtJr zF6IF+Td?%KMe`WThBNOsYS+J0xY@#56Wlm#_0r3PP`^><%)2+wkCQYIJx4@ODh^@h zO>@co#=M)$m~**n=A5~Zn-I(&&F{@6_BfyWN-)1O@50PH^O-Q`gxu%m5cy^jujA$Gv=iu;`MxAi$;}|16`&1 zu%0v$+Hh1&##MuA5hO1h&EuxYkPC@1R2|$*1eP zaJEH=fgWsZh_>Qd7j=$|5z#%kj84la-&vRCmvv}b<18eOv95%k_ULNt;^tpQFyO+G zuyLi&G~*Kqgh7p}R8pW;30+Gj(p|+n@7yUsgzP&0!Wr@_ANYlD&hgE+8^4w(o2K^X z`8N9}-%Rk?(f_EWE@a#YP$+RQ#|LkV)8}V;@_gqrw^H!ekdY)WuVGAM2((@ZEsbyNF$pW{I?d!PV*|!z1fv2cp zH5x^Oka-!4mvzy7NDn2sjAJ|F=;-!V>J+ZTcc-Z1kg%*{gHzp;`=)4~4?SsBt75+& zau?*O?G){LsF+?x})!NzCh&Y4=XH&NMzn(RUOo+6IZmLf0~ds#x&@m1q|W zPrADb*2N(wk#xCMeLUyN^Sw`6=?avKwTgB?+9IKmvQ1odS;TXaR1ni!y{l>^%Drpmbi-5J((fbNnadF=El^V_) zLg+$x)v*pcRv4|mRRFslY?(pPYw@XsW?&ys6chV)V<(3t!~dvQ{n!T9_&01`Cn;7O lU#av~fWO=v$NffHRy@17-7ALx9=Ek{;Ts?QP2hvY{|kq$o!$Td diff --git a/__pycache__/triangle.cpython-312.pyc b/__pycache__/triangle.cpython-312.pyc deleted file mode 100644 index 10d35f773d6bcd6d28465ee0ae3a550ec15e7da7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5713 zcmchbUu+vi9>-_acCvB)Tmz-V{l`L4uTIiXCnRmt9!**mkdPu3LJ?8L-p0E)3y#yy zu6x9aPPtHYRN*1&OMzA*4}Ead7mI5|_>=I$0}}VJCW-E}0;!0HQ{JkkNT|}O_xsJ- zW}RIV^QX6xznQd31XJoT`!c3EoJp+%dcWRlU()G$9_jyy~p0DH*1UURO$6XU#92;g!=k+ zLX6M^bxN$>tShw)xLZ!p45UmAW+0I-kZ35~0i6#^a9NkECF>*W!~CR`%U`r|)_i_S zvOc#ywU+qpjr==OehO;m^KV-JfVQ9J-?0|01?v+lC*}WUErH~xpz$QsEyCwxNs+7t z3Enu3)mR75Mz}L{SiGzcz#%xbK0}xJ$^3M$rwz7Mddoe4*9zV7H6Q79cjXrtdlLga zU9#pS$krls{qNR1&%=C$ZcDA$^(r&z>ALj+Kcgi_T52gmxZZm}Rhq*3X6Pux{un!&Fjn%?`i|><~A%>juZqY9|>R zV|Mtol1w}0s9;mYrXvPgOVZtaCwkAkXlTqhV~m+8{Y*j|8`Vsv$K|9xdmCawc^|TQ|D)zXOv6ZzG-T)B2O+ibz5Th&H9G7&t2@E ziCsKw1-Gt)3lc9-2Fs*`k)5z;e=|n<$}oWm;a3qeWf-ES2P0(|5;nn*;I-crL*XKZ z07ya=K!V;+2pLcSQZW4;q{zGE92U)&)&i{jip$@JMhKS$Nokjc5lL~WG_f~>51O<~ z@pAO!rz`p{y%^WhFGh|x?y69uNNo^U8+H>gQ(clu9jy$Qvl`QJQE|w$OR)`{`FXxb zol>mi1C!wfOAo_+o0EdoU`Ygt23Qk(*>u>ZaRZkRSg|emsIJfzjj?TTAAyhY9tbSt zZPhO174xsR2$}Qq^Ofzh zr&h&3Iz!?P`L`q_P)rR^NO0gk;2EwTk0qSKmcGIhv5)P5M{E~}J0Fj42#ario@{h) zmJMIC1L(_}i}-BUmEG9~SH=DJHy7+t@V|!p4tos6H~#G#;vd!D&{Wxkz2C^RZ5Fkw zaaW~SV^?<08mnU4uZ^{|ul}?HCP;!@FYKo{?sIe?8n7Fj>HoZ<8=AoyFk(Dyct(83 zhKTjlc_pbkF=yI03)$Ve2V+JM7Up^+FGj9LuMK89vusuD{2e3a5O75dOMmUZ_wL=} z>whl5q8Ml+if_m}H-wzh5(=IH`8?0;-z?^`=7;@)ZoQ^vkLT$94;s1Q>{kdH&)9C9 z%^8i26^XX#Y<4w9GY%O$iobx>U>U_i0}RQ*$CknG zNwS87oDxAw6o{qpgMUp^d0JJ~o;RW@7}$Nh8Bl?`NHSdPSUU8~~3 z|4S~Mxp5GqK7>+z{4QE&s*B%cak5hUG~2Ztc_IhfS@*AvzXIX`@`b;Z5b|sv^Z?GL z9Ce)TzAHiU8+kXhGqI|M-fi+M#_rn33!HyBC*+PV2&>|e-!X6`J&?f_cr-Y`+Hs_j zF?{sPfbW|HUmlb&j!U3Q9+cTU=a+}pYkKa1+^GeCfA4+I1I`qVL?;;tC=UyF`ON^% zb{=;}Rl{FuKTs*==3IXc_JYGa=7H!RY*Cg|%BUvGc3752$JBHZ%MG%O=W(ZoJ%SzH zgR&Q;6{Q0uhSH6K`zt$w@+Xu&6ok(l;hy*pF@}?o3r-9J_nZslwm?JsZr9LI2TD6i zS4ldtbO7ZLN)O6Wlq2gP&cN{(4n#w?m`>>?W|85R<{T;bG~;fc#%K7uig)F%c+`pY rDTd1g_h(}_$gKdS^jos)cJM*^(CzkS`p})dduZ>>8$S^E;`aXoUq}%6 From f4c58a772135b0413173b632ff6fa3db49ccbc6f Mon Sep 17 00:00:00 2001 From: Ivan Sotnikov <100781733+tokyoboy0701x@users.noreply.github.com> Date: Wed, 25 Dec 2024 04:03:49 +0300 Subject: [PATCH 10/17] Create main.yml --- .github/workflows/main.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000000..3ba08eeeeb --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,18 @@ +name: test +on: [push] +jobs: + test: + strategy: + matrix: + os: [ubuntu-latest, windows-latest] + version: ["3.13.1"] + files: [rectangle.py, circle.py, square.py, triangle.py] + + runs-on: ${{ matrix.os }} + steps: + - uses: actions/setup_python@v5 + with: + python-version: ${{ matrix.version }} + + - name: Run ${{ matrix.files }} + run: python -m unittest {{ matrix.files }} From d6c660fe6236fd99192dfb20bf45ad1ae64bdd78 Mon Sep 17 00:00:00 2001 From: Ivan Sotnikov <100781733+tokyoboy0701x@users.noreply.github.com> Date: Wed, 25 Dec 2024 04:08:15 +0300 Subject: [PATCH 11/17] Update main.yml --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3ba08eeeeb..e816e87e89 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,6 +10,7 @@ jobs: runs-on: ${{ matrix.os }} steps: + - uses: actions/checkout@v4 - uses: actions/setup_python@v5 with: python-version: ${{ matrix.version }} From 9415e9d863e4f2781f3473c36ac0c4b1977f1828 Mon Sep 17 00:00:00 2001 From: Ivan Sotnikov <100781733+tokyoboy0701x@users.noreply.github.com> Date: Wed, 25 Dec 2024 04:10:03 +0300 Subject: [PATCH 12/17] Update main.yml --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e816e87e89..a993da1c3f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -2,13 +2,13 @@ name: test on: [push] jobs: test: + runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest] version: ["3.13.1"] files: [rectangle.py, circle.py, square.py, triangle.py] - - runs-on: ${{ matrix.os }} + fail-fast: false steps: - uses: actions/checkout@v4 - uses: actions/setup_python@v5 From 47dbf094ceb04cb0c94f7c85e1d178efdbbc8359 Mon Sep 17 00:00:00 2001 From: Ivan Sotnikov <100781733+tokyoboy0701x@users.noreply.github.com> Date: Wed, 25 Dec 2024 10:29:38 +0300 Subject: [PATCH 13/17] Update main.yml --- .github/workflows/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a993da1c3f..969c6ad6c5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -5,9 +5,9 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, windows-latest] - version: ["3.13.1"] - files: [rectangle.py, circle.py, square.py, triangle.py] + runner: [ubuntu-latest, windows-latest] + python-version: ["3.13.1"] + file: [rectangle.py, circle.py, square.py, triangle.py] fail-fast: false steps: - uses: actions/checkout@v4 From afb07a23caccdaf5bdf0b7743669aff513fcccce Mon Sep 17 00:00:00 2001 From: Ivan Sotnikov <100781733+tokyoboy0701x@users.noreply.github.com> Date: Wed, 25 Dec 2024 10:34:37 +0300 Subject: [PATCH 14/17] Update main.yml --- .github/workflows/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 969c6ad6c5..3d49683b0e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -2,7 +2,7 @@ name: test on: [push] jobs: test: - runs-on: ${{ matrix.os }} + runs-on: ${{ matrix.runner }} strategy: matrix: runner: [ubuntu-latest, windows-latest] @@ -13,7 +13,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup_python@v5 with: - python-version: ${{ matrix.version }} + python-version: ${{ matrix.python-version }} - - name: Run ${{ matrix.files }} - run: python -m unittest {{ matrix.files }} + - name: Run ${{ matrix.file }} + run: python -m unittest {{ matrix.file }} From 68fda7051b1e147f25ba28dd6aa0bb9ba9307e93 Mon Sep 17 00:00:00 2001 From: Ivan Sotnikov <100781733+tokyoboy0701x@users.noreply.github.com> Date: Wed, 25 Dec 2024 10:36:32 +0300 Subject: [PATCH 15/17] Update main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3d49683b0e..475e4ff69c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -15,5 +15,5 @@ jobs: with: python-version: ${{ matrix.python-version }} - - name: Run ${{ matrix.file }} + - name: Run ${{ matrix.file }} tests run: python -m unittest {{ matrix.file }} From 5b8144043e0d8d378d1871e3fe603c556428351c Mon Sep 17 00:00:00 2001 From: Ivan Sotnikov <100781733+tokyoboy0701x@users.noreply.github.com> Date: Wed, 25 Dec 2024 10:37:48 +0300 Subject: [PATCH 16/17] Update main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 475e4ff69c..9817d2d904 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,4 +1,4 @@ -name: test +name: Run tests on: [push] jobs: test: From b619004791814481630d60c61484ddf2bd23466f Mon Sep 17 00:00:00 2001 From: Ivan Sotnikov <100781733+tokyoboy0701x@users.noreply.github.com> Date: Wed, 25 Dec 2024 19:19:50 +0300 Subject: [PATCH 17/17] Update main.yml --- .github/workflows/main.yml | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9817d2d904..2f0a9172a5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,19 +1,25 @@ name: Run tests + on: [push] + jobs: - test: - runs-on: ${{ matrix.runner }} - strategy: - matrix: - runner: [ubuntu-latest, windows-latest] - python-version: ["3.13.1"] - file: [rectangle.py, circle.py, square.py, triangle.py] - fail-fast: false - steps: - - uses: actions/checkout@v4 - - uses: actions/setup_python@v5 - with: - python-version: ${{ matrix.python-version }} + test: + runs-on: ${{matrix.runner}} + + strategy: + matrix: + runner: [ubuntu-latest, windows-latest] + file: [circle.py, rectangle.py, square.py, triangle.py] + python-version: ["3.12.6"] + + fail-fast: false + + steps: + - uses: actions/checkout@v4 - - name: Run ${{ matrix.file }} tests - run: python -m unittest {{ matrix.file }} + - uses: actions/setup-python@v5 + with: + python-version: ${{matrix.python-version}} + + - name: Run ${{matrix.file}} tests + run: python -m unittest ${{matrix.file}}