diff --git a/__pycache__/circle.cpython-311.pyc b/__pycache__/circle.cpython-311.pyc
new file mode 100644
index 0000000000..ec0251a7b1
Binary files /dev/null and b/__pycache__/circle.cpython-311.pyc differ
diff --git a/__pycache__/rectangle.cpython-311.pyc b/__pycache__/rectangle.cpython-311.pyc
new file mode 100644
index 0000000000..8e4c9be69f
Binary files /dev/null and b/__pycache__/rectangle.cpython-311.pyc differ
diff --git a/__pycache__/square.cpython-311.pyc b/__pycache__/square.cpython-311.pyc
new file mode 100644
index 0000000000..0d4a604e4e
Binary files /dev/null and b/__pycache__/square.cpython-311.pyc differ
diff --git a/__pycache__/triangle.cpython-311.pyc b/__pycache__/triangle.cpython-311.pyc
new file mode 100644
index 0000000000..7607570f69
Binary files /dev/null and b/__pycache__/triangle.cpython-311.pyc differ
diff --git a/circle.py b/circle.py
index c3eb8647c9..f6c7ec4857 100644
--- a/circle.py
+++ b/circle.py
@@ -1,10 +1,22 @@
import math
-
+'''импортирует библеотеку math '''
+from tests.circle_test import circ_tests
def area(r):
+ '''
+ принимает число r , возвращает площадь
+
+ При входных: 4
+ Output: 50.26548245743669
+ '''
return math.pi * r * r
def perimeter(r):
+ '''
+ принимает r, возвращает периметр круга
+ При входных: 4
+ Output: 16
+ '''
return 2 * math.pi * r
diff --git a/docs/README.md b/docs/README.md
index 63f8727939..a678c566b7 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -3,8 +3,213 @@
- Circle: S = πR²
- Rectangle: S = ab
- Square: S = a²
+- Triangle: S = (a*h)/2
## Perimeter
- Circle: P = 2πR
- Rectangle: P = 2a + 2b
-- Square: P = 4a
\ No newline at end of file
+- Square: P = 4a
+- Triangle: P= a + b + c
+
+# Описание решения
+
+**Функция area во всех файлах позволяет найти площадь(по формулам, приведенных выше) таких фигур как:**
+- Треугольник
+- Круг
+- Квадрат
+- Прямоугольник
+### Примеры вызова функций
+Пример вызова функции area в файле **square**:
+```python
+def area(a):
+ return a * a
+x=4
+print(area(x))
+```
+
+*OUTPUT: 16*
+
+***Принимает х, выводит площадь квадрата***
+
+Пример вызова функции area **circle**:
+```python
+import math
+def area(r):
+ return math.pi * r * r
+x=4
+print(area(x))
+```
+*OUTPUT: 50.26548245743669*
+
+***Принимает х, выводит площадь круга***
+
+### Пример вызова функции area **rectangle**:
+```python
+import math
+def area(a, b):
+ return a*b
+x=4
+y = 2
+print(area(x))
+```
+*OUTPUT: 8*
+
+***Принимает х, выводит площадь прямоугольника***
+
+### Пример вызова функции area **triangle**:
+```python
+import math
+def area(a, h):
+ return (a*h) / 2
+x=4
+y = 2
+print(area(x,y))
+```
+*OUTPUT: 4.0*
+
+***Принимает х и y, выводит площадь треугольника***
+
+**Также в файлах присутствует функция perimeter, которая считает периметр соответствующих фигур, т.е:**
+- Треугольника
+- Круга
+- Квадрата
+- Прямоугольника
+Пример вызова функции perimeter в файле **square**:
+```python
+
+def area(a):
+ return a * a
+x=4
+print(area(x))
+```
+
+*OUTPUT: 16*
+
+***Принимает х, выводит площадь квадрата***
+
+Пример вызова функции perimeter в файле **circle**:
+```python
+def perimeter(r):
+ return 2 * math.pi * r
+x=4
+print(area(x))
+```
+
+*OUTPUT: 16*
+
+***Принимает х, выводит площадь квадрата***
+
+Пример вызова функции perimeter в файле **rectangle**:
+```python
+def perimeter(a,b):
+ return a+b
+x=4
+y=2
+print(area(x))
+```
+
+*OUTPUT: 6*
+
+***Принимает х,y, выводит площадь прямоугольника***
+
+Пример вызова функции perimeter в файле **triangle**:
+```python
+def perimeter(r):
+ return a+b+c
+x=4
+y=2
+z=3
+print(perimeter(x,y,z))
+```
+
+*OUTPUT: 9*
+
+***Принимает x,y,z, выводит их сумму***
+## Тесты
+### Circle Tests
+**Предоставлено несколько тестов для проверки работоспособности функций circle**
+```python
+def test_circle_area_float_numb(self):
+ res = circle.area(3.35)
+ self.assertEqual(res, 35.25652355491146)
+
+ def test_circle_zero_area(self):
+ res = circle.area(0)
+ self.assertEqual(res, 0)
+'''
+Проверка ожидаемого результата с дробными значениями и проверка с нулевым значением
+'''
+
+```
+### Rectangle Tests
+**Предоставлено несколько тестов для проверки работоспособности функций rectangle**
+```python
+def test_rectangle_perimeter_real_numbers(self): # Тестирование периметра с вещественными числами
+ res = rectangle.perimeter(4.25, 7.36) # Вычисление периметра с длиной 4.25 и шириной 7.36
+ self.assertEqual(res, 23.22) # Проверка на равенство ожидаемому значению
+
+ def test_rectangle_perimeter_zero(self): # Тестирование периметра с одной стороной равной нулю
+ res = rectangle.perimeter(4, 0) # Вычисление периметра при ширине 0
+ self.assertEqual(res, 8) # Проверка результата
+```
+### Square Tests
+**Предоставлено несколько тестов для проверки работоспособности функций square**
+```python
+def test_square_area_ex(self): # Тестирование корректного расчета площади квадрата
+ rst = square.area(5) # Вычисление площади квадрата со стороной 5
+ self.assertEqual(rst, 25) # Проверка, что результат равен ожидаемому значению 25
+
+ def test_square_area_neg(self): # Тестирование поведения при отрицательной стороне квадрата
+ res = square.area(-5) # Вычисление площади квадрата со стороной -5
+ self.assertEqual(res, 25) # Проверка, что результат (некорректное поведение) равен 25
+```
+### Triangle Tests
+**Предоставлено несколько тестов для проверки работоспособности функций triangle**
+```python
+def test_triangle_perimeter_no(self): # Тестирование поведения при отрицательной стороне
+ res = triangle.perimeter(2, -8, 11) # Вычисление периметра с одной отрицательной стороной
+ self.assertEqual(res, 5) # Проверка, что периметр равен 5
+
+ def test_triangle_perimeter_real_numbers(self): # Тестирование периметра с вещественными числами
+ res = triangle.perimeter(2.75, 8.6, 11) # Вычисление периметра с длинами 2.75, 8.6, 11
+ self.assertEqual(res, 22.35) # Проверка на соответствие результату
+```
+
+## История изменений
+```bash
+commit cb4afe54e378a2123e4be98cfc9c71b89d665e53 (newfeature-465352)
+Author: Nikitka
+Date: Fri Sep 27 11:02:16 2024 +0300
+
+ test
+
+commit e184c7c345427b38a311db1e714d96e32af9605a (origin/newfeature-465352, newfeature-465352-megatest)
+Author: Nikitka
+Date: Fri Sep 20 11:16:51 2024 +0300
+
+ Fixed bug in rectangle.py
+
+commit 822ae1281b01a363d169e4f94b3e7ba00c2e6500
+Author: Nikitka
+Date: Fri Sep 20 11:15:21 2024 +0300
+
+ Added triangle.py file
+
+commit f6edfd2d9b6922df44ff332f69415982182702cc
+Author: Nikitka
+Date: Fri Sep 20 11:14:20 2024 +0300
+
+ Added new file: rectangle.py
+
+commit d078c8d9ee6155f3cb0e577d28d337b791de28e2 (HEAD -> documentation, origin/main, origin/HEAD, main)
+Author: smartiqa
+Date: Thu Mar 4 14:55:29 2021 +0300
+
+ L-03: Docs added
+
+commit 8ba9aeb3cea847b63a91ac378a2a6db758682460
+Author: smartiqa
+Date: Thu Mar 4 14:54:08 2021 +0300
+
+ L-03: Circle and square added
+```
diff --git a/rectangle.py b/rectangle.py
new file mode 100644
index 0000000000..6de1d1209e
--- /dev/null
+++ b/rectangle.py
@@ -0,0 +1,20 @@
+from tests.rectangle_test import rect_tests
+
+def area(a,b):
+ '''
+ принимает два числа и перемножает их
+ При входных: 4 и 2
+ Output: 8
+ '''
+ return a*b
+
+def perimeter(a, b):
+ '''
+ метод принимает два числа: а (длину) и b (ширину). Находит их удвоенную сумму (периметр прямоугольника).
+ пример работы:
+ perimeter(5, 3)
+ 16
+ '''
+
+ return (a + b) * 2
+
diff --git a/square.py b/square.py
index 0f98724205..67b21de957 100644
--- a/square.py
+++ b/square.py
@@ -1,7 +1,16 @@
-
+from tests.square_test import squar_tests
def area(a):
return a * a
-
+'''
+ принимает число, возвращает квадрат числа
+ При входных: 4
+ OUTPUT: 16
+ '''
def perimeter(a):
+ '''
+ принимает число, возвращает число, большее в четыре раза
+ При входных: 4
+ OUTPUT: 16
+ '''
return 4 * a
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/__pycache__/__init__.cpython-311.pyc b/tests/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000000..049eadd03e
Binary files /dev/null and b/tests/__pycache__/__init__.cpython-311.pyc differ
diff --git a/tests/__pycache__/circle_test.cpython-311.pyc b/tests/__pycache__/circle_test.cpython-311.pyc
new file mode 100644
index 0000000000..10412e9316
Binary files /dev/null and b/tests/__pycache__/circle_test.cpython-311.pyc differ
diff --git a/tests/__pycache__/rectangle_test.cpython-311.pyc b/tests/__pycache__/rectangle_test.cpython-311.pyc
new file mode 100644
index 0000000000..e5fd3246ec
Binary files /dev/null and b/tests/__pycache__/rectangle_test.cpython-311.pyc differ
diff --git a/tests/__pycache__/square_test.cpython-311.pyc b/tests/__pycache__/square_test.cpython-311.pyc
new file mode 100644
index 0000000000..cca43b1bb7
Binary files /dev/null and b/tests/__pycache__/square_test.cpython-311.pyc differ
diff --git a/tests/__pycache__/triangle_test.cpython-311.pyc b/tests/__pycache__/triangle_test.cpython-311.pyc
new file mode 100644
index 0000000000..0109eb9f85
Binary files /dev/null and b/tests/__pycache__/triangle_test.cpython-311.pyc differ
diff --git a/tests/circle_test.py b/tests/circle_test.py
new file mode 100644
index 0000000000..22985adfb9
--- /dev/null
+++ b/tests/circle_test.py
@@ -0,0 +1,40 @@
+import unittest # Импортирование модуля для юнит-тестирования
+import circle # Импортирование модуля с функциями для вычисления площади и периметра круга
+
+class CircleTestCase(unittest.TestCase): # Определение класса тестов для кругов, наследующего от TestCase
+
+ def test_circle_area_yes(self): # Тестирование корректности вычисления площади круга
+ rst = circle.area(3) # Вычисление площади круга радиусом 3
+ self.assertEqual(rst, 28.274333882308138) # Проверка, соответствует ли результат ожидаемому значению
+
+ def test_circle_neg_area(self): # Тестирование обработки отрицательного радиуса
+ res = circle.area(-5) # Вычисление площади для отрицательного радиуса
+ self.assertEqual(res, 78.53981633974483) # Проверка ожидаемого значения (некорректное поведение)
+
+ def test_circle_area_float_numb(self): # Тестирование вычисления площади для вещественного числа
+ res = circle.area(3.35) # Вычисление площади с радиусом 3.35
+ self.assertEqual(res, 35.25652355491146) # Проверка соответствия результата
+
+ def test_circle_zero_area(self): # Тестирование обработки радиуса 0
+ res = circle.area(0) # Вычисление площади для радиуса 0
+ self.assertEqual(res, 0) # Проверка, что площадь равна 0
+
+ def test_circle_perimeter_yes(self): # Тестирование корректности вычисления периметра круга
+ res = circle.perimeter(5) # Вычисление периметра круга радиусом 5
+ self.assertEqual(res, 31.41592653589793) # Проверка результата
+
+ def test_circle_perimeter_no(self): # Тестирование обработки отрицательного радиуса для периметра
+ res = circle.perimeter(-3) # Вычисление периметра для отрицательного радиуса
+ self.assertEqual(res, -18.84955592153876) # Проверка на отрицательное значение (некорректное поведение)
+
+ def test_circle_perimeter_float_num(self): # Тестирование периметра для вещественного числа
+ res = circle.perimeter(3.35) # Вычисление периметра с радиусом 3.35
+ self.assertEqual(res, 21.048670779051616) # Проверка результата
+
+ def test_circle_perimeter_zero(self): # Тестирование обработки радиуса 0 для периметра
+ res = circle.perimeter(0) # Вычисление периметра для радиуса 0
+ self.assertEqual(res, 0) # Проверка, что периметр равен 0
+
+if __name__ == "__main__": # Проверка, что скрипт запущен напрямую
+ unittest.main() # Запуск всех тестов
+circ_tests = CircleTestCase # Создание экземпляра тестов (необязательно, так как тесты уже запускаются выше)
\ No newline at end of file
diff --git a/tests/rectangle_test.py b/tests/rectangle_test.py
new file mode 100644
index 0000000000..2177cd3b0e
--- /dev/null
+++ b/tests/rectangle_test.py
@@ -0,0 +1,40 @@
+import unittest # Импортирование модуля для юнит-тестирования
+import rectangle # Импортирование модуля с функциями для вычисления площади и периметра прямоугольника
+
+class RectangleTestCase(unittest.TestCase): # Определение класса тестирования для прямоугольников
+
+ def test_rectangle_area_yes(self): # Тестирование корректного расчета площади прямоугольника
+ res = rectangle.area(4, 7) # Вычисление площади с длиной 4 и шириной 7
+ self.assertEqual(res, 28) # Проверка на равенство с ожидаемым значением
+
+ def test_rectangle_area_no(self): # Тестирование поведения при отрицательном значении ширины
+ res = rectangle.area(4, -7) # Вычисление площади с отрицательной шириной
+ self.assertEqual(res, -28) # Проверка, что результат соответствует ожидаемому (некорректное поведение)
+
+ def test_rectangle_area_real_numbers(self): # Тестирование площади с вещественными числами
+ res = rectangle.area(4.25, 7.36) # Вычисление площади с длиной 4.25 и шириной 7.36
+ self.assertEqual(res, 31.28) # Проверка на соответствие результата
+
+ def test_rectangle_area_zero(self): # Тестирование площади с одной стороной равной нулю
+ res = rectangle.area(4, 0) # Вычисление площади при ширине 0
+ self.assertEqual(res, 0) # Проверка, что площадь равна 0
+
+ def test_rectangle_perimeter_yes(self): # Тестирование корректного расчета периметра прямоугольника
+ res = rectangle.perimeter(4, 7) # Вычисление периметра с длиной 4 и шириной 7
+ self.assertEqual(res, 22) # Проверка результата
+
+ def test_rectangle_perimeter_no(self): # Тестирование поведения при отрицательной ширине
+ res = rectangle.perimeter(4, -7) # Вычисление периметра с отрицательной шириной
+ self.assertEqual(res, -6) # Проверка, что результат соответствует ожидаемому (некорректное поведение)
+
+ def test_rectangle_perimeter_real_numbers(self): # Тестирование периметра с вещественными числами
+ res = rectangle.perimeter(4.25, 7.36) # Вычисление периметра с длиной 4.25 и шириной 7.36
+ self.assertEqual(res, 23.22) # Проверка на равенство ожидаемому значению
+
+ def test_rectangle_perimeter_zero(self): # Тестирование периметра с одной стороной равной нулю
+ res = rectangle.perimeter(4, 0) # Вычисление периметра при ширине 0
+ self.assertEqual(res, 8) # Проверка результата
+
+if __name__ == "__main__": # Проверка, что скрипт запущен напрямую
+ unittest.main() # Запуск всех тестов
+rect_tests = RectangleTestCase # Создание экземпляра тестов для импортирования в файл с функцией
\ No newline at end of file
diff --git a/tests/square_test.py b/tests/square_test.py
new file mode 100644
index 0000000000..65c3b4b3d4
--- /dev/null
+++ b/tests/square_test.py
@@ -0,0 +1,40 @@
+import unittest # Импортирование модуля для юнит-тестирования
+import square # Импортирование модуля с функциями для вычисления площади и периметра квадрата
+
+class SquareTestCase(unittest.TestCase): # Определение класса для тестирования квадрата
+
+ def test_square_area_ex(self): # Тестирование корректного расчета площади квадрата
+ rst = square.area(5) # Вычисление площади квадрата со стороной 5
+ self.assertEqual(rst, 25) # Проверка, что результат равен ожидаемому значению 25
+
+ def test_square_area_neg(self): # Тестирование поведения при отрицательной стороне квадрата
+ res = square.area(-5) # Вычисление площади квадрата со стороной -5
+ self.assertEqual(res, 25) # Проверка, что результат (некорректное поведение) равен 25
+
+ def test_square_area_float_num(self): # Тестирование площади с вещественным числом
+ res = square.area(2.56) # Вычисление площади квадрата со стороной 2.56
+ self.assertEqual(res, 6.5536) # Проверка на соответствие с ожидаемым результатом
+
+ def test_square_area_zero(self): # Тестирование площади с нулевой стороной
+ res = square.area(0) # Вычисление площади квадрата со стороной 0
+ self.assertEqual(res, 0) # Проверка, что площадь равна 0
+
+ def test_square_perimeter_ex(self): # Тестирование корректного расчета периметра квадрата
+ res = square.perimeter(4) # Вычисление периметра квадрата со стороной 4
+ self.assertEqual(res, 16) # Проверка результата
+
+ def test_square_perimeter_no(self): # Тестирование поведения при отрицательной стороне квадрата
+ res = square.perimeter(-3) # Вычисление периметра квадрата со стороной -3
+ self.assertEqual(res, -12) # Проверка, что результат (некорректное поведение) равен -12
+
+ def test_square_perimeter_float_num(self): # Тестирование периметра с вещественным числом
+ res = square.perimeter(4.12) # Вычисление периметра квадрата со стороной 4.12
+ self.assertEqual(res, 16.48) # Проверка на соответствие результату
+
+ def test_square_perimeter_zero(self): # Тестирование периметра с нулевой стороной
+ res = square.perimeter(0) # Вычисление периметра квадрата со стороной 0
+ self.assertEqual(res, 0) # Проверка, что периметр равен 0
+
+if __name__ == '__main__': # Проверка, что скрипт запущен напрямую
+ unittest.main() # Запуск всех тестов
+squar_tests = SquareTestCase # Создание экземпляра тестов
\ No newline at end of file
diff --git a/tests/triangle_test.py b/tests/triangle_test.py
new file mode 100644
index 0000000000..b9d09b8f22
--- /dev/null
+++ b/tests/triangle_test.py
@@ -0,0 +1,40 @@
+import unittest # Импортирование модуля для юнит-тестирования
+import triangle # Импортирование модуля с функциями для вычисления площади и периметра треугольника
+
+class TriangleTestCase(unittest.TestCase): # Определение класса для тестирования треугольника
+
+ def test_triangle_area_yes(self): # Тестирование корректного расчета площади треугольника
+ res = triangle.area(2, 8) # Вычисление площади с основаниями 2 и высотой 8
+ self.assertEqual(res, 8) # Проверка, что результат равен 8
+
+ def test_triangle_area_no(self): # Тестирование поведения при отрицательной высоте
+ res = triangle.area(2, -8) # Вычисление площади с основаниями 2 и высотой -8
+ self.assertEqual(res, -8.0) # Проверка, что результат равен -8.0
+
+ def test_triangle_area_real_numbers(self): # Тестирование площади с вещественными числами
+ res = triangle.area(2.75, 8.6) # Вычисление площади с основаниями 2.75 и высотой 8.6
+ self.assertEqual(res, 11.825) # Проверка на соответствие результату
+
+ def test_triangle_area_zero(self): # Тестирование площади с нулевой высотой
+ res = triangle.area(2, 0) # Вычисление площади с основаниями 2 и высотой 0
+ self.assertEqual(res, 0) # Проверка, что площадь равна 0
+
+ def test_triangle_perimeter_yes(self): # Тестирование корректного расчета периметра треугольника
+ res = triangle.perimeter(2, 8, 11) # Вычисление периметра с длинами сторон 2, 8, 11
+ self.assertEqual(res, 21) # Проверка, что результат равен 21
+
+ def test_triangle_perimeter_no(self): # Тестирование поведения при отрицательной стороне
+ res = triangle.perimeter(2, -8, 11) # Вычисление периметра с одной отрицательной стороной
+ self.assertEqual(res, 5) # Проверка, что периметр равен 5
+
+ def test_triangle_perimeter_real_numbers(self): # Тестирование периметра с вещественными числами
+ res = triangle.perimeter(2.75, 8.6, 11) # Вычисление периметра с длинами 2.75, 8.6, 11
+ self.assertEqual(res, 22.35) # Проверка на соответствие результату
+
+ def test_triangle_perimeter_zero(self): # Тестирование периметра с нулевой стороной
+ res = triangle.perimeter(2, 0, 8.59) # Вычисление периметра с одной стороной 0
+ self.assertEqual(res, 10.59) # Проверка, что периметр равен 10.59
+
+if __name__ == '__main__': # Проверка, что скрипт запущен напрямую
+ unittest.main() # Запуск всех тестов
+triang_test = TriangleTestCase # Создание экземпляра тестов (необязательно)
\ No newline at end of file
diff --git a/triangle.py b/triangle.py
new file mode 100644
index 0000000000..6c48c0c6ad
--- /dev/null
+++ b/triangle.py
@@ -0,0 +1,12 @@
+from tests.triangle_test import triang_test
+def area(a,h):
+ '''передаются два аргумента, выводится произведение, поделенное на два
+ При входных: 4 и 2
+ Output: 3'''
+ return (a*h) / 2
+
+def perimeter(a, b, c):
+ '''принимаются три аргумента, выводится их сумма
+ При входных: 2, 4, 3
+ Output: 9'''
+ return a+b+c
\ No newline at end of file