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