Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added __pycache__/circle.cpython-311.pyc
Binary file not shown.
Binary file added __pycache__/rectangle.cpython-311.pyc
Binary file not shown.
Binary file added __pycache__/square.cpython-311.pyc
Binary file not shown.
Binary file added __pycache__/triangle.cpython-311.pyc
Binary file not shown.
14 changes: 13 additions & 1 deletion circle.py
Original file line number Diff line number Diff line change
@@ -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

207 changes: 206 additions & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
- Square: P = 4a
- Triangle: P= a + b + c

# Описание решения

**Функция area во всех файлах позволяет найти площадь(по формулам, приведенных выше) таких фигур как:**
- Треугольник
- Круг
- Квадрат
- Прямоугольник
### Примеры вызова функций
<u>Пример вызова функции area в файле **square**:</u>
```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, которая считает периметр соответствующих фигур, т.е:**
- Треугольника
- Круга
- Квадрата
- Прямоугольника
<u>Пример вызова функции perimeter в файле **square**:</u>
```python

def area(a):
return a * a
x=4
print(area(x))
```

*OUTPUT: 16*

***Принимает х, выводит площадь квадрата***

<u>Пример вызова функции perimeter в файле **circle**:</u>
```python
def perimeter(r):
return 2 * math.pi * r
x=4
print(area(x))
```

*OUTPUT: 16*

***Принимает х, выводит площадь квадрата***

<u>Пример вызова функции perimeter в файле **rectangle**:</u>
```python
def perimeter(a,b):
return a+b
x=4
y=2
print(area(x))
```

*OUTPUT: 6*

***Принимает х,y, выводит площадь прямоугольника***

<u>Пример вызова функции perimeter в файле **triangle**:</u>
```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 <redzernonikita@gmail.com>
Date: Fri Sep 27 11:02:16 2024 +0300

test

commit e184c7c345427b38a311db1e714d96e32af9605a (origin/newfeature-465352, newfeature-465352-megatest)
Author: Nikitka <redzernonikita@gmail.com>
Date: Fri Sep 20 11:16:51 2024 +0300

Fixed bug in rectangle.py

commit 822ae1281b01a363d169e4f94b3e7ba00c2e6500
Author: Nikitka <redzernonikita@gmail.com>
Date: Fri Sep 20 11:15:21 2024 +0300

Added triangle.py file

commit f6edfd2d9b6922df44ff332f69415982182702cc
Author: Nikitka <redzernonikita@gmail.com>
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 <info@smartiqa.ru>
Date: Thu Mar 4 14:55:29 2021 +0300

L-03: Docs added

commit 8ba9aeb3cea847b63a91ac378a2a6db758682460
Author: smartiqa <info@smartiqa.ru>
Date: Thu Mar 4 14:54:08 2021 +0300

L-03: Circle and square added
```
20 changes: 20 additions & 0 deletions rectangle.py
Original file line number Diff line number Diff line change
@@ -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

13 changes: 11 additions & 2 deletions square.py
Original file line number Diff line number Diff line change
@@ -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
Empty file added tests/__init__.py
Empty file.
Binary file added tests/__pycache__/__init__.cpython-311.pyc
Binary file not shown.
Binary file added tests/__pycache__/circle_test.cpython-311.pyc
Binary file not shown.
Binary file added tests/__pycache__/rectangle_test.cpython-311.pyc
Binary file not shown.
Binary file added tests/__pycache__/square_test.cpython-311.pyc
Binary file not shown.
Binary file added tests/__pycache__/triangle_test.cpython-311.pyc
Binary file not shown.
40 changes: 40 additions & 0 deletions tests/circle_test.py
Original file line number Diff line number Diff line change
@@ -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 # Создание экземпляра тестов (необязательно, так как тесты уже запускаются выше)
40 changes: 40 additions & 0 deletions tests/rectangle_test.py
Original file line number Diff line number Diff line change
@@ -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 # Создание экземпляра тестов для импортирования в файл с функцией
Loading