From 2ce8dbedaa1845b15701bf06976204690dbc2b8b Mon Sep 17 00:00:00 2001 From: Grigorij Date: Tue, 5 Nov 2024 20:34:18 +0300 Subject: [PATCH 1/8] add new file rectangle.py --- 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..eb68866750 --- /dev/null +++ b/rectangle.py @@ -0,0 +1,5 @@ +def area(a, b): + return a * b + +def perimeter(a, b): + return a + b From 58a4c92af4a8106db1e6db0b317bd14c44d14ee9 Mon Sep 17 00:00:00 2001 From: Grigorij Date: Tue, 5 Nov 2024 20:36:36 +0300 Subject: [PATCH 2/8] fixed bug in rect --- rectangle.py | 2 +- triangle.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 triangle.py diff --git a/rectangle.py b/rectangle.py index eb68866750..69e6225ead 100644 --- a/rectangle.py +++ b/rectangle.py @@ -2,4 +2,4 @@ def area(a, b): return a * b def perimeter(a, b): - return a + b + return 2*a + 2*b diff --git a/triangle.py b/triangle.py new file mode 100644 index 0000000000..64c153da16 --- /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 From 69604b0fe915f37f61be02df413568dd78f156e9 Mon Sep 17 00:00:00 2001 From: Grigorij Date: Tue, 5 Nov 2024 21:49:51 +0300 Subject: [PATCH 3/8] add documentation of functions --- circle.py | 20 ++++++++++++++++++++ rectangle.py | 22 ++++++++++++++++++++++ square.py | 20 ++++++++++++++++++++ triangle.py | 23 +++++++++++++++++++++++ 4 files changed, 85 insertions(+) diff --git a/circle.py b/circle.py index c3eb8647c9..8d9fcbc11e 100644 --- a/circle.py +++ b/circle.py @@ -2,9 +2,29 @@ def area(r): + ''' + Возвращает площадь круга с радиусом r. + Параметры: + r (int или float): радиус окружности + Возвращаемое значение: + float: площадь окружности с радиусом r. + + >>> area(2) + 12,57 + ''' return math.pi * r * r def perimeter(r): + ''' + Возвращает периметр круга с радиусом r. + Параметры: + r (int или float): радиус окружности. + Возвращаемое значение: + float: площадь окружности с радиусом r. + + >>> area(2) + 12,57 + ''' return 2 * math.pi * r diff --git a/rectangle.py b/rectangle.py index 69e6225ead..0834b1ffec 100644 --- a/rectangle.py +++ b/rectangle.py @@ -1,5 +1,27 @@ def area(a, b): + ''' + Возвращает площадь прямоугольника со сторонами a, b. + Параметры: + a (int или float): одна сторона прямоугольника. + b (int или float): другая стороная прямоугольника. + Возвращаемое значение: + int или float: площадь прямоугольника со сторонами a, b. + + >>> area(4, 3) + 12 + ''' return a * b def perimeter(a, b): + ''' + Возвращает периметр прямоугольника со сторонами a, b. + Параметры: + a (int или float): одна сторона прямоугольника. + b (int или float): другая стороная прямоугольника. + Возвращаемое значение: + int или float: периметр прямоугольника со сторонами a, b. + + >>> area(7, 3) + 20 + ''' return 2*a + 2*b diff --git a/square.py b/square.py index 0f98724205..3829dd61d2 100644 --- a/square.py +++ b/square.py @@ -1,7 +1,27 @@ def area(a): + ''' + Возвращает площадь квадрата со стороной a. + Параметры: + a (int или float): сторона квадрата. + Возвращаемое значение: + int или float: площадь квадрата со стороной a. + + >>> area(2) + 4 + ''' return a * a def perimeter(a): + ''' + Возвращает периметр квадрата со стороной a. + Параметры: + a (int или float): сторона квадрата. + Возвращаемое значение: + int или float: периметр квадрата со стороной a. + + >>> area(1) + 4 + ''' return 4 * a diff --git a/triangle.py b/triangle.py index 64c153da16..074b5e1c86 100644 --- a/triangle.py +++ b/triangle.py @@ -1,5 +1,28 @@ def area(a, h): + ''' + Возвращает площадь треугольника по стороне и высоте, проведенной к высоте. + Параметры: + a (int или float): сторона треугольника. + h (int или float): высота, проведенная к данной стороне. + Возвращаемое значение: + int или float: площадь треугольника со стороной a и высотой h, проведенной к стороне. + + >>> area(3, 2) + 3 + ''' return a * h / 2 def perimeter(a, b, c): + ''' + Возвращает периметр треугольника со сторонами a, b, c. + Параметры: + a (int или float): первая сторона треугольника. + b (int или float): вторая сторона треугольника. + c (int или float): третья сторона треугольника. + Возвращаемое значение: + int или float: периметр треугольника со сторонами a, b, c. + + >>> area(3, 3, 3) + 9 + ''' return a + b + c From 21c01b5675f278f9ab7675786a5a11ace88ec15f Mon Sep 17 00:00:00 2001 From: Grigorij Date: Tue, 5 Nov 2024 21:52:58 +0300 Subject: [PATCH 4/8] add documentation with MarkDown in README.md --- docs/README.md | 89 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 79 insertions(+), 10 deletions(-) diff --git a/docs/README.md b/docs/README.md index 63f8727939..492aafcd59 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,10 +1,79 @@ -# Math formulas -## Area -- Circle: S = πR² -- Rectangle: S = ab -- Square: S = a² - -## Perimeter -- Circle: P = 2πR -- Rectangle: P = 2a + 2b -- Square: P = 4a \ No newline at end of file +# Математические формулы + +## Площадь +- **Круг:** Площадь \( S \) вычисляется по формуле \( S = \pi * R^2 \), где \( R \) — радиус круга. +- **Прямоугольник:** Площадь \( S \) вычисляется по формуле \( S = a*b \), где \( a \) и \( b \) — длины сторон прямоугольника. +- **Квадрат:** Площадь \( S \) вычисляется по формуле \( S = a^2 \), где \( a \) — длина стороны квадрата. + +## Периметр +- **Круг:** Длина окружности (периметр) \( C \) вычисляется по формуле \( C = 2 \pi * R \), где \( R \) — радиус. +- **Прямоугольник:** Периметр \( P \) вычисляется по формуле \( P = 2*(a + b) \), где \( a \) и \( b \) — длины сторон прямоугольника. +- **Квадрат:** Периметр \( P \) вычисляется по формуле \( P = 4*a \), где \( a \) — длина стороны квадрата. + +# Библиотека Geometric + +Эта библиотека для языка Python позволяет вычислять площадь и периметр базовых геометрических фигур, включая круги, прямоугольники, квадраты и треугольники. + +## Круг + +### Используемые формулы +- **Площадь**: \( S = \pi * R^2 \), где \( R \) — радиус. +- **Периметр (длина окружности)**: \( C = 2 * pi * R \), где \( R \) — радиус. + +### Функции +- `area(r)` — Принимает радиус \( r \) (int или float) и возвращает площадь (float). + - Пример: + - **Вход**: 3 + - **Выход**: 28.274333882308138 +- `perimeter(r)` — Принимает радиус \( r \) (int или float) и возвращает длину окружности (float). + - Пример: + - **Вход**: 3 + - **Выход**: 18.84955592153876 + +## Прямоугольник + +### Используемые формулы +- **Площадь**: \( S = a*b \), где \( a \) и \( b \) — длины сторон. +- **Периметр**: \( P = 2*(a + b) \), где \( a \) и \( b \) — длины сторон. + +### Функции +- `area(a, b)` — Принимает длины сторон \( a \) и \( b \) (int или float) и возвращает площадь (float). + - Пример: + - **Вход**: 2, 3 + - **Выход**: 6 +- `perimeter(a, b)` — Принимает длины сторон \( a \) и \( b \) (int или float) и возвращает периметр (float). + - Пример: + - **Вход**: 2, 3 + - **Выход**: 10 + +## Квадрат + +### Используемые формулы +- **Площадь**: \( S = a^2 \), где \( a \) — длина стороны. +- **Периметр**: \( P = 4*a \), где \( a \) — длина стороны. + +### Функции +- `area(a)` — Принимает длину стороны \( a \) (int или float) и возвращает площадь (float). + - Пример: + - **Вход**: 3 + - **Выход**: 9 +- `perimeter(a)` — Принимает длину стороны \( a \) (int или float) и возвращает периметр (float). + - Пример: + - **Вход**: 3 + - **Выход**: 12 + +## Треугольник + +### Используемые формулы +- **Площадь**: \( S = (a*h)/2 \), где \( a \) — основание, а \( h \) — высота, опущенная на него. +- **Периметр**: \( P = a + b + c \), где \( a \), \( b \) и \( c \) — длины сторон. + +### Функции +- `area(a, h)` — Принимает основание \( a \) и высоту \( h \) (int или float) и возвращает площадь (float). + - Пример: + - **Вход**: 3, 2 + - **Выход**: 3 +- `perimeter(a, b, c)` — Принимает длины сторон \( a \), \( b \) и \( c \) (int или float) и возвращает периметр (float). + - Пример: + - **Вход**: 1, 2, 3 + - **Выход**: 6 From d2c7bb8a02b022f87e2b2ffc34e5f2fe33414314 Mon Sep 17 00:00:00 2001 From: Grigorij Date: Tue, 5 Nov 2024 22:13:55 +0300 Subject: [PATCH 5/8] Last Commit --- docs/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/README.md b/docs/README.md index 492aafcd59..8549943d6b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -77,3 +77,8 @@ - Пример: - **Вход**: 1, 2, 3 - **Выход**: 6 +## История изменения проекта +- (**21c01b5**) add documentation with MarkDown in README.md - Добавлена общая документация проекта в README.md с общим описанием решения, описанием каждой функции, примерами вызова и историей изменения проекта с хэшами коммитов. + - (**69604b0**) add documentation of functions - Комментирование декларирования функции в файлах проекта с примерами вызова. + - (**58a4c92**) fixed bug in rect - Исправление ошибки в файле rectangle.py + - (**2ce8dbe**) add new file rectangle.py - Добавление файла rectangle.py \ No newline at end of file From 1bb3d117b1dab1828d0716e0ad3aa196ee3713bc Mon Sep 17 00:00:00 2001 From: Grigorij Date: Tue, 24 Dec 2024 19:43:42 +0300 Subject: [PATCH 6/8] Adding UnitTests --- test_example.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 test_example.py diff --git a/test_example.py b/test_example.py new file mode 100644 index 0000000000..cc16c37e6f --- /dev/null +++ b/test_example.py @@ -0,0 +1,61 @@ +import unittest +import math +from triangle import area as triangle_area +from triangle import perimeter as triangle_perimeter +from circle import area as circle_area +from circle import perimeter as circle_perimeter + +class TriangleTestCase(unittest.TestCase): + + def test_area_positive_numbers(self): + res = triangle_area(2, 3) + self.assertEqual(res, 3) + + def test_area_negative_numbers(self): + res = triangle_area(-1, -1) + self.assertEqual(res, 0.5) + + def test_area_zero(self): + res = triangle_area(0, 0) + self.assertEqual(res, 1) + + def test_perimeter_positive_numbers(self): + res = triangle_perimeter(2, 3, 4) + self.assertEqual(res, 9) + + def test_perimeter_negative_numbers(self): + res = triangle_perimeter(-2, -3, -6) + self.assertEqual(res, -11) + + def test_perimeter_zero(self): + res = triangle_perimeter(0, 0, 0) + self.assertEqual(res, 0) + +class CircleTestCase(unittest.TestCase): + + def test_area_positive_numbers(self): + res = circle_area(2) + self.assertAlmostEqual(res, math.pi * (2 ** 2)) + + def test_area_negative_numbers(self): + res = circle_area(-1) + self.assertEqual(res, math.pi) + + def test_area_zero(self): + res = circle_area(0) + self.assertEqual(res, 0) + + def test_perimeter_positive_numbers(self): + res = circle_perimeter(2) + self.assertEqual(res, 4*math.pi) + + def test_perimeter_negative_numbers(self): + res = circle_perimeter(-2) + self.assertEqual(res, 4*math.pi) + + def test_perimeter_zero(self): + res = circle_perimeter(0) + self.assertEqual(res, 0) + +if __name__ == '__main__': + unittest.main() From 0be8197a928f78082ce331c4f36dc2ada455358c Mon Sep 17 00:00:00 2001 From: Grigorij Date: Tue, 24 Dec 2024 19:44:47 +0300 Subject: [PATCH 7/8] Modified README.md --- docs/README.md | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/README.md b/docs/README.md index 8549943d6b..2fbebabe61 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,14 +1,14 @@ # Математические формулы ## Площадь -- **Круг:** Площадь \( S \) вычисляется по формуле \( S = \pi * R^2 \), где \( R \) — радиус круга. -- **Прямоугольник:** Площадь \( S \) вычисляется по формуле \( S = a*b \), где \( a \) и \( b \) — длины сторон прямоугольника. -- **Квадрат:** Площадь \( S \) вычисляется по формуле \( S = a^2 \), где \( a \) — длина стороны квадрата. +- **Круг:** Площадь S вычисляется по формуле S = \pi * R^2 , где R — радиус круга. +- **Прямоугольник:** Площадь S вычисляется по формуле S = a*b , где a и b — длины сторон прямоугольника. +- **Квадрат:** Площадь S вычисляется по формуле S = a^2 , где a — длина стороны квадрата. ## Периметр -- **Круг:** Длина окружности (периметр) \( C \) вычисляется по формуле \( C = 2 \pi * R \), где \( R \) — радиус. -- **Прямоугольник:** Периметр \( P \) вычисляется по формуле \( P = 2*(a + b) \), где \( a \) и \( b \) — длины сторон прямоугольника. -- **Квадрат:** Периметр \( P \) вычисляется по формуле \( P = 4*a \), где \( a \) — длина стороны квадрата. +- **Круг:** Длина окружности (периметр) C вычисляется по формуле C = 2 \pi * R , где R — радиус. +- **Прямоугольник:** Периметр P вычисляется по формуле P = 2*(a + b) , где a и b — длины сторон прямоугольника. +- **Квадрат:** Периметр P вычисляется по формуле P = 4*a, где a — длина стороны квадрата. # Библиотека Geometric @@ -17,15 +17,15 @@ ## Круг ### Используемые формулы -- **Площадь**: \( S = \pi * R^2 \), где \( R \) — радиус. -- **Периметр (длина окружности)**: \( C = 2 * pi * R \), где \( R \) — радиус. +- **Площадь**: S = \pi * R^2 , где R — радиус. +- **Периметр (длина окружности)**: C = 2 * pi * R , где R — радиус. ### Функции -- `area(r)` — Принимает радиус \( r \) (int или float) и возвращает площадь (float). +- `area(r)` — Принимает радиус r (int или float) и возвращает площадь (float). - Пример: - **Вход**: 3 - **Выход**: 28.274333882308138 -- `perimeter(r)` — Принимает радиус \( r \) (int или float) и возвращает длину окружности (float). +- `perimeter(r)` — Принимает радиус r (int или float) и возвращает длину окружности (float). - Пример: - **Вход**: 3 - **Выход**: 18.84955592153876 @@ -33,15 +33,15 @@ ## Прямоугольник ### Используемые формулы -- **Площадь**: \( S = a*b \), где \( a \) и \( b \) — длины сторон. -- **Периметр**: \( P = 2*(a + b) \), где \( a \) и \( b \) — длины сторон. +- **Площадь**: S = a*b , где a и b — длины сторон. +- **Периметр**: P = 2*(a + b) , где a и b — длины сторон. ### Функции -- `area(a, b)` — Принимает длины сторон \( a \) и \( b \) (int или float) и возвращает площадь (float). +- `area(a, b)` — Принимает длины сторон a и b (int или float) и возвращает площадь (float). - Пример: - **Вход**: 2, 3 - **Выход**: 6 -- `perimeter(a, b)` — Принимает длины сторон \( a \) и \( b \) (int или float) и возвращает периметр (float). +- `perimeter(a, b)` — Принимает длины сторон a и b (int или float) и возвращает периметр (float). - Пример: - **Вход**: 2, 3 - **Выход**: 10 @@ -49,15 +49,15 @@ ## Квадрат ### Используемые формулы -- **Площадь**: \( S = a^2 \), где \( a \) — длина стороны. -- **Периметр**: \( P = 4*a \), где \( a \) — длина стороны. +- **Площадь**: S = a^2 , где a — длина стороны. +- **Периметр**: P = 4*a , где a — длина стороны. ### Функции -- `area(a)` — Принимает длину стороны \( a \) (int или float) и возвращает площадь (float). +- `area(a)` — Принимает длину стороны a (int или float) и возвращает площадь (float). - Пример: - **Вход**: 3 - **Выход**: 9 -- `perimeter(a)` — Принимает длину стороны \( a \) (int или float) и возвращает периметр (float). +- `perimeter(a)` — Принимает длину стороны a (int или float) и возвращает периметр (float). - Пример: - **Вход**: 3 - **Выход**: 12 @@ -65,20 +65,20 @@ ## Треугольник ### Используемые формулы -- **Площадь**: \( S = (a*h)/2 \), где \( a \) — основание, а \( h \) — высота, опущенная на него. -- **Периметр**: \( P = a + b + c \), где \( a \), \( b \) и \( c \) — длины сторон. +- **Площадь**: S = (a*h)/2 , где a — основание, а h — высота, опущенная на него. +- **Периметр**: P = a + b + c , где a , b и c — длины сторон. ### Функции -- `area(a, h)` — Принимает основание \( a \) и высоту \( h \) (int или float) и возвращает площадь (float). +- `area(a, h)` — Принимает основание a и высоту h (int или float) и возвращает площадь (float). - Пример: - **Вход**: 3, 2 - **Выход**: 3 -- `perimeter(a, b, c)` — Принимает длины сторон \( a \), \( b \) и \( c \) (int или float) и возвращает периметр (float). +- `perimeter(a, b, c)` — Принимает длины сторон a , b и c (int или float) и возвращает периметр (float). - Пример: - **Вход**: 1, 2, 3 - **Выход**: 6 ## История изменения проекта - (**21c01b5**) add documentation with MarkDown in README.md - Добавлена общая документация проекта в README.md с общим описанием решения, описанием каждой функции, примерами вызова и историей изменения проекта с хэшами коммитов. - - (**69604b0**) add documentation of functions - Комментирование декларирования функции в файлах проекта с примерами вызова. - - (**58a4c92**) fixed bug in rect - Исправление ошибки в файле rectangle.py - - (**2ce8dbe**) add new file rectangle.py - Добавление файла rectangle.py \ No newline at end of file +- (**69604b0**) add documentation of functions - Комментирование декларирования функции в файлах проекта с примерами вызова. +- (**58a4c92**) fixed bug in rect - Исправление ошибки в файле rectangle.py +- (**2ce8dbe**) add new file rectangle.py - Добавление файла rectangle.py \ No newline at end of file From 37ec5df78395a0009a96b870c819ef111295c2af Mon Sep 17 00:00:00 2001 From: Grigorij Date: Tue, 24 Dec 2024 20:03:12 +0300 Subject: [PATCH 8/8] FineOf4thLab --- docs/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/README.md b/docs/README.md index 2fbebabe61..5f1160685b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -78,6 +78,9 @@ - **Вход**: 1, 2, 3 - **Выход**: 6 ## История изменения проекта +- (**0be8197**) add documentation with MarkDown in README.md В историю документа добавлен коммит с Unit тестами. +- (**1bb3d11**) Добавлен файл test_example.py с Unit тестами, проверяющими работу функций Triangle.py и Circle.py +- (**d2c7bb8**) Пустой коммит - (**21c01b5**) add documentation with MarkDown in README.md - Добавлена общая документация проекта в README.md с общим описанием решения, описанием каждой функции, примерами вызова и историей изменения проекта с хэшами коммитов. - (**69604b0**) add documentation of functions - Комментирование декларирования функции в файлах проекта с примерами вызова. - (**58a4c92**) fixed bug in rect - Исправление ошибки в файле rectangle.py