From 83b1514a0981b87a5ae52c2dbd8ca7cf2197201c Mon Sep 17 00:00:00 2001 From: Artemii Date: Wed, 11 Dec 2024 20:52:15 +0300 Subject: [PATCH 01/13] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D1=84=D0=B0=D0=B9=D0=BB=20rectangle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 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 e691bddd3847f58264673bdeaf60d7930a2727b2 Mon Sep 17 00:00:00 2001 From: Artemii Date: Wed, 11 Dec 2024 20:56:31 +0300 Subject: [PATCH 02/13] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rectangle.py | 2 +- triangle.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 triangle.py diff --git a/rectangle.py b/rectangle.py index eb68866750..a52848bf47 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 + b) diff --git a/triangle.py b/triangle.py new file mode 100644 index 0000000000..3b1c1e3ce3 --- /dev/null +++ b/triangle.py @@ -0,0 +1,6 @@ + +def area(a, h): + return a * h / 2 + +def perimeter(a, b, c): + return a + b + c From b8d98a82dcb1e6bca25770def8c32bfb5c2284c4 Mon Sep 17 00:00:00 2001 From: Artemii Date: Thu, 12 Dec 2024 15:32:04 +0300 Subject: [PATCH 03/13] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B0=D1=80=D0=B8=D0=B5=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- circle.py | 17 +++++++++++++++++ rectangle.py | 22 ++++++++++++++++++++-- square.py | 16 ++++++++++++++++ triangle.py | 23 +++++++++++++++++++++-- 4 files changed, 74 insertions(+), 4 deletions(-) diff --git a/circle.py b/circle.py index c3eb8647c9..5dd4222354 100644 --- a/circle.py +++ b/circle.py @@ -2,9 +2,26 @@ def area(r): + """ + На вход поступает число r, возвращает r^2*pi + Пример: + Ввод: + r=2 + Вывод: + area=12.56 + """ return math.pi * r * r + def perimeter(r): + """ + На вход поступает число r, возвращает r*2*pi + Пример: + Ввод: + r=4 + Вывод: + perimeter=25.132 + """ return 2 * math.pi * r diff --git a/rectangle.py b/rectangle.py index a52848bf47..45e9749c5b 100644 --- a/rectangle.py +++ b/rectangle.py @@ -1,5 +1,23 @@ -def area(a, b): +def area(a, b): + """ + На вход поступают числа a и b, возвращает произведение a и b + Пример: + Ввод: + a=2 + b=5 + Вывод: + area=10 + """ return a * b -def perimeter(a, b): +def perimeter(a, b): + """ + На вход поступают числа a и b, возвращает удвоенное произведение a и b + Пример: + Ввод: + a=5 + b=7 + Вывод: + perimeter=24 + """ return 2*(a + b) diff --git a/square.py b/square.py index 0f98724205..6dc110c158 100644 --- a/square.py +++ b/square.py @@ -1,7 +1,23 @@ def area(a): + """ + На вход поступает число a, возвращает a в квадрате + Пример: + Ввод: + a=7 + Вывод: + area=49 + """ return a * a def perimeter(a): + """ + На вход поступает число a, возвращает a умноженное на 4 + Пример: + Ввод: + a=2 + Вывод: + perimeter=8 + """ return 4 * a diff --git a/triangle.py b/triangle.py index 3b1c1e3ce3..0401be5752 100644 --- a/triangle.py +++ b/triangle.py @@ -1,6 +1,25 @@ -def area(a, h): +def area(a, h): + """ + На вход поступают числа a и h, возвращает a умноженное на половину h + Пример: + Ввод: + a=5 + h=4 + Вывод: + area=10 + """ return a * h / 2 -def perimeter(a, b, c): +def perimeter(a, b, c): + """ + На вход поступают числа a, b и c, возвращает сумму этих чисел + Пример: + Ввод: + a=2 + b=3 + c=4 + Вывод: + perimeter=9 + """ return a + b + c From 351eb9b4246a9342d5d8d15a928570cf6fff986a Mon Sep 17 00:00:00 2001 From: Artemii Date: Thu, 12 Dec 2024 15:39:47 +0300 Subject: [PATCH 04/13] =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B1=D0=BD=D1=8B?= =?UTF-8?q?=D0=B9=20=D1=80=D0=B5=D0=B0=D0=B4=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 59 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 55 insertions(+), 4 deletions(-) diff --git a/docs/README.md b/docs/README.md index 63f8727939..32e9f5180c 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,10 +1,61 @@ -# Math formulas -## Area +# **Math formulas** +## **Area** - Circle: S = πR² - Rectangle: S = ab - Square: S = a² +- Triangle: S = ah/2 -## Perimeter +## **Perimeter** - Circle: P = 2πR - Rectangle: P = 2a + 2b -- Square: P = 4a \ No newline at end of file +- Square: P = 4a +- Triangle: P = abc + +## **Area funcion** +- Circle: + +- Rectangle: +> На вход поступают числа a и b, возвращает произведение a и b +> Пример: +> Ввод: +> a=2 +> b=5 +> Вывод: +> area=10 +- Square: +> На вход поступает число a, возвращает a в квадрате +> Пример: +> Ввод: +> a=7 +> Вывод: +> area=49 +- Triangle: +> На вход поступают числа a и h, возвращает a умноженное на половину h +> Пример: +> Ввод: +> a=5 +> h=4 +> Вывод: +> area=10 + +## **Perimeter** +- Circle: + +- Rectangle: + +- Square: +> На вход поступает число a, возвращает a умноженное на 4 +> Пример: +> Ввод: +> a=2 +> Вывод: +> perimeter=8 +- Triangle: +> На вход поступают числа a, b и c, возвращает сумму этих чисел +> Пример: +> Ввод: +> a=2 +> b=3 +> c=4 +> Вывод: +> perimeter=9 \ No newline at end of file From 72f9576458ba8443c1ab7fa27d98cb21ab480c73 Mon Sep 17 00:00:00 2001 From: Artemii Date: Thu, 12 Dec 2024 15:46:33 +0300 Subject: [PATCH 05/13] proba 2 --- docs/README.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/README.md b/docs/README.md index 32e9f5180c..7770ddf968 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,6 +15,7 @@ - Circle: - Rectangle: +``` > На вход поступают числа a и b, возвращает произведение a и b > Пример: > Ввод: @@ -22,14 +23,18 @@ > b=5 > Вывод: > area=10 +``` - Square: +``` > На вход поступает число a, возвращает a в квадрате > Пример: > Ввод: > a=7 > Вывод: > area=49 +``` - Triangle: +``` > На вход поступают числа a и h, возвращает a умноженное на половину h > Пример: > Ввод: @@ -37,20 +42,26 @@ > h=4 > Вывод: > area=10 - +``` ## **Perimeter** - Circle: - Rectangle: +``` + +``` - Square: +``` > На вход поступает число a, возвращает a умноженное на 4 > Пример: > Ввод: > a=2 > Вывод: > perimeter=8 +``` - Triangle: +``` > На вход поступают числа a, b и c, возвращает сумму этих чисел > Пример: > Ввод: @@ -58,4 +69,5 @@ > b=3 > c=4 > Вывод: -> perimeter=9 \ No newline at end of file +> perimeter=9 +``` \ No newline at end of file From 94099d616ee8253a29ceb0e2fed5eef0eab33e71 Mon Sep 17 00:00:00 2001 From: Artemii Date: Thu, 12 Dec 2024 16:08:17 +0300 Subject: [PATCH 06/13] final 1 --- docs/README.md | 117 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 78 insertions(+), 39 deletions(-) diff --git a/docs/README.md b/docs/README.md index 7770ddf968..0e3da978b8 100644 --- a/docs/README.md +++ b/docs/README.md @@ -13,61 +13,100 @@ ## **Area funcion** - Circle: - +``` + На вход поступает число r, возвращает r^2*pi + Пример: + Ввод: + r=2 + Вывод: + area=12.56 +``` - Rectangle: ``` -> На вход поступают числа a и b, возвращает произведение a и b -> Пример: -> Ввод: -> a=2 -> b=5 -> Вывод: -> area=10 + На вход поступают числа a и b, возвращает произведение a и b + Пример: + Ввод: + a=2 + b=5 + Вывод: + area=10 ``` - Square: ``` -> На вход поступает число a, возвращает a в квадрате -> Пример: -> Ввод: -> a=7 -> Вывод: -> area=49 + На вход поступает число a, возвращает a в квадрате + Пример: + Ввод: + a=7 + Вывод: + area=49 ``` - Triangle: ``` -> На вход поступают числа a и h, возвращает a умноженное на половину h -> Пример: -> Ввод: -> a=5 -> h=4 -> Вывод: -> area=10 + На вход поступают числа a и h, возвращает a умноженное на половину h + Пример: + Ввод: + a=5 + h=4 + Вывод: + area=10 ``` + ## **Perimeter** - Circle: - +``` + На вход поступает число r, возвращает r*2*pi + Пример: + Ввод: + r=4 + Вывод: + perimeter=25.132 +``` - Rectangle: ``` - + На вход поступают числа a и b, возвращает удвоенное произведение a и b + Пример: + Ввод: + a=5 + b=7 + Вывод: + perimeter=24 ``` - - Square: ``` -> На вход поступает число a, возвращает a умноженное на 4 -> Пример: -> Ввод: -> a=2 -> Вывод: -> perimeter=8 + На вход поступает число a, возвращает a умноженное на 4 + Пример: + Ввод: + a=2 + Вывод: + perimeter=8 ``` - Triangle: ``` -> На вход поступают числа a, b и c, возвращает сумму этих чисел -> Пример: -> Ввод: -> a=2 -> b=3 -> c=4 -> Вывод: -> perimeter=9 -``` \ No newline at end of file + На вход поступают числа a, b и c, возвращает сумму этих чисел + Пример: + Ввод: + a=2 + b=3 + c=4 + Вывод: + perimeter=9 +``` + +## **История изменения проекта с хешами комитов** +-1 Комиит(8ba9aeb3cea847b63a91ac378a2a6db758682460): *L-03: Circle and square added* +-2 Комиит(d078c8d9ee6155f3cb0e577d28d337b791de28e2): *L-03: Docs added* +-3 Комиит(83b1514a0981b87a5ae52c2dbd8ca7cf2197201c): *добавлен файл rectangle* +-4 Комиит(e691bddd3847f58264673bdeaf60d7930a2727b2): *Ошибка исправлена* +-5 Коммит(b8d98a82dcb1e6bca25770def8c32bfb5c2284c4): *Добавление комментариев* +-6 Коммит(351eb9b4246a9342d5d8d15a928570cf6fff986a): *Пробный пуш readme* +-7 Коммит(72f9576458ba8443c1ab7fa27d98cb21ab480c73): *Прбный пуш readme 2* + +## **Общее решение** +-*Изучил текст лабы* +-*Изучил примечание в телеграм* +-*Изучил [Базовый синтаксис записи и форматирования](https://docs.github.com/ru/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax)* +-*Добавил комментарии в файлы проекта* +-*Изменил файл README.md: добавил формулы для треугольника, расписал функции, добавил историю изменений* + + + From d2c715472ed116c1a38f402272b773d9dcd26bc3 Mon Sep 17 00:00:00 2001 From: Artemii Date: Thu, 12 Dec 2024 16:09:50 +0300 Subject: [PATCH 07/13] final 2 --- docs/README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/README.md b/docs/README.md index 0e3da978b8..b754b8d215 100644 --- a/docs/README.md +++ b/docs/README.md @@ -93,20 +93,20 @@ ``` ## **История изменения проекта с хешами комитов** --1 Комиит(8ba9aeb3cea847b63a91ac378a2a6db758682460): *L-03: Circle and square added* --2 Комиит(d078c8d9ee6155f3cb0e577d28d337b791de28e2): *L-03: Docs added* --3 Комиит(83b1514a0981b87a5ae52c2dbd8ca7cf2197201c): *добавлен файл rectangle* --4 Комиит(e691bddd3847f58264673bdeaf60d7930a2727b2): *Ошибка исправлена* --5 Коммит(b8d98a82dcb1e6bca25770def8c32bfb5c2284c4): *Добавление комментариев* --6 Коммит(351eb9b4246a9342d5d8d15a928570cf6fff986a): *Пробный пуш readme* --7 Коммит(72f9576458ba8443c1ab7fa27d98cb21ab480c73): *Прбный пуш readme 2* +- 1 Комиит(8ba9aeb3cea847b63a91ac378a2a6db758682460): *L-03: Circle and square added* +- 2 Комиит(d078c8d9ee6155f3cb0e577d28d337b791de28e2): *L-03: Docs added* +- 3 Комиит(83b1514a0981b87a5ae52c2dbd8ca7cf2197201c): *добавлен файл rectangle* +- 4 Комиит(e691bddd3847f58264673bdeaf60d7930a2727b2): *Ошибка исправлена* +- 5 Коммит(b8d98a82dcb1e6bca25770def8c32bfb5c2284c4): *Добавление комментариев* +- 6 Коммит(351eb9b4246a9342d5d8d15a928570cf6fff986a): *Пробный пуш readme* +- 7 Коммит(72f9576458ba8443c1ab7fa27d98cb21ab480c73): *Прбный пуш readme 2* ## **Общее решение** --*Изучил текст лабы* --*Изучил примечание в телеграм* --*Изучил [Базовый синтаксис записи и форматирования](https://docs.github.com/ru/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax)* --*Добавил комментарии в файлы проекта* --*Изменил файл README.md: добавил формулы для треугольника, расписал функции, добавил историю изменений* +- *Изучил текст лабы* +- *Изучил примечание в телеграм* +- *Изучил [Базовый синтаксис записи и форматирования](https://docs.github.com/ru/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax)* +- *Добавил комментарии в файлы проекта* +- *Изменил файл README.md: добавил формулы для треугольника, расписал функции, добавил историю изменений* From faedcea10f105d73380d7548795d8fdedd78ab49 Mon Sep 17 00:00:00 2001 From: Artemii Date: Thu, 12 Dec 2024 17:28:36 +0300 Subject: [PATCH 08/13] final 3 --- docs/README.md | 54 +++++++++++++++++++++++++++++++++++++++++++++++++- triangle.py | 12 ++++++++++- 2 files changed, 64 insertions(+), 2 deletions(-) diff --git a/docs/README.md b/docs/README.md index b754b8d215..85ae865da6 100644 --- a/docs/README.md +++ b/docs/README.md @@ -102,11 +102,63 @@ - 7 Коммит(72f9576458ba8443c1ab7fa27d98cb21ab480c73): *Прбный пуш readme 2* ## **Общее решение** -- *Изучил текст лабы* +- *Изучил текст лабы 2* - *Изучил примечание в телеграм* - *Изучил [Базовый синтаксис записи и форматирования](https://docs.github.com/ru/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax)* - *Добавил комментарии в файлы проекта* - *Изменил файл README.md: добавил формулы для треугольника, расписал функции, добавил историю изменений* +## **Лаба 4** +*Добавлен тест для Triangle.py:* +``` +import unittest +from triangle import area, perimeter # Импортируем функции area и perimeter + +class TriangleTestCase(unittest.TestCase): + #корректные значения + def test_area(self): + self.assertEqual(area(5, 4), 10) # Проверяем, area = 10 + self.assertEqual(area(0, 10), 0) # Проверяем, area = 0 + self.assertEqual(area(10, 0), 0) # Проверяем, area = 0 + self.assertEqual(area(3, 6), 9) # Проверяем, area = 9 + + def test_perimeter(self): + self.assertEqual(perimeter(2, 3, 4), 9) # Проверяем, perimeter = 9 + self.assertEqual(perimeter(1, 1, 1), 3) # Проверяем, perimeter = 3 + self.assertEqual(perimeter(5, 5, 5), 15) # Проверяем, perimeter = 15 + self.assertEqual(perimeter(0, 0, 0), 0) # Проверяем, perimeter = 0 + + # Тестируем некорректные входные данные + def test_invalid_area(self): + with self.assertRaises(TypeError): + area("5", 4) # Проверяем, что строка вызывает ошибку + with self.assertRaises(TypeError): + area(5, "4") # Проверяем, что строка вызывает ошибку + with self.assertRaises(ValueError): + area(-5, 4) # Проверяем, что отрицательное основание вызывает ошибку + with self.assertRaises(ValueError): + area(5, -4) # Проверяем, что отрицательная высота вызывает ошибку + with self.assertRaises(ValueError): + area(1e308, 1e308) # Проверяем, что слишком большие числа вызывают ошибку + def test_invalid_perimeter(self): + with self.assertRaises(TypeError): + perimeter("2", 3, 4) # Проверяем, что строка вызывает ошибку + with self.assertRaises(TypeError): + perimeter(2, "3", 4) # Проверяем, что строка вызывает ошибку + with self.assertRaises(TypeError): + perimeter(2, 3, "4") # Проверяем, что строка вызывает ошибку + with self.assertRaises(ValueError): + perimeter(-2, 3, 4) # Проверяем, что отрицательная сторона вызывает ошибку + with self.assertRaises(ValueError): + perimeter(2, -3, 4) # Проверяем, что отрицательная сторона вызывает ошибку + with self.assertRaises(ValueError): + perimeter(2, 3, -4) # Проверяем, что отрицательная сторона вызывает ошибку + with self.assertRaises(ValueError): + perimeter(1e308, 1e308, 1e308) # Проверяем, что слишком большие числа вызывают ошибку + +if __name__ == '__main__': + unittest.main() + +``` diff --git a/triangle.py b/triangle.py index 0401be5752..90df68e6e7 100644 --- a/triangle.py +++ b/triangle.py @@ -9,6 +9,11 @@ def area(a, h): Вывод: area=10 """ + if not isinstance(a, (int, float)) or not isinstance(h, (int, float)): + raise TypeError() + if a < 0 or h < 0 or a > 2147483647 or h > 2147483647: + raise ValueError() + return a * h / 2 def perimeter(a, b, c): @@ -22,4 +27,9 @@ def perimeter(a, b, c): Вывод: perimeter=9 """ - return a + b + c + if not all(isinstance(x, (int, float)) for x in (a, b, c)): + raise TypeError() + if a < 0 or b < 0 or c < 0 or a > 2147483647 or b > 2147483647 or c > 2147483647: + raise ValueError() + + return a + b + c From 9f442006468495fdc8a26a552d6e4eaa550e42fe Mon Sep 17 00:00:00 2001 From: Artemii Date: Thu, 12 Dec 2024 17:30:33 +0300 Subject: [PATCH 09/13] 4 laba --- __pycache__/test_triangle.cpython-311.pyc | Bin 0 -> 5611 bytes __pycache__/triangle.cpython-311.pyc | Bin 0 -> 1843 bytes test_triangle.py | 48 ++++++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 __pycache__/test_triangle.cpython-311.pyc create mode 100644 __pycache__/triangle.cpython-311.pyc create mode 100644 test_triangle.py diff --git a/__pycache__/test_triangle.cpython-311.pyc b/__pycache__/test_triangle.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c65968e6e7b9069d1eec0d9832a1b58460015448 GIT binary patch literal 5611 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 literal 0 HcmV?d00001 diff --git a/test_triangle.py b/test_triangle.py new file mode 100644 index 0000000000..dbcee66c11 --- /dev/null +++ b/test_triangle.py @@ -0,0 +1,48 @@ +import unittest +from triangle import area, perimeter # Импортируем функции area и perimeter + +class TriangleTestCase(unittest.TestCase): + #тестируем корректные значения + def test_area(self): + self.assertEqual(area(5, 4), 10) # Проверяем, area = 10 + self.assertEqual(area(0, 10), 0) # Проверяем, area = 0 + self.assertEqual(area(10, 0), 0) # Проверяем, area = 0 + self.assertEqual(area(3, 6), 9) # Проверяем, area = 9 + + def test_perimeter(self): + self.assertEqual(perimeter(2, 3, 4), 9) # Проверяем, perimeter = 9 + self.assertEqual(perimeter(1, 1, 1), 3) # Проверяем, perimeter = 3 + self.assertEqual(perimeter(5, 5, 5), 15) # Проверяем, perimeter = 15 + self.assertEqual(perimeter(0, 0, 0), 0) # Проверяем, perimeter = 0 + + # Тестируем некорректные входные данные + def test_invalid_area(self): + with self.assertRaises(TypeError): + area("5", 4) # Проверяем, что строка вызывает ошибку + with self.assertRaises(TypeError): + area(5, "4") # Проверяем, что строка вызывает ошибку + with self.assertRaises(ValueError): + area(-5, 4) # Проверяем, что отрицательное основание вызывает ошибку + with self.assertRaises(ValueError): + area(5, -4) # Проверяем, что отрицательная высота вызывает ошибку + with self.assertRaises(ValueError): + area(1e308, 1e308) # Проверяем, что слишком большие числа вызывают ошибку + + def test_invalid_perimeter(self): + with self.assertRaises(TypeError): + perimeter("2", 3, 4) # Проверяем, что строка вызывает ошибку + with self.assertRaises(TypeError): + perimeter(2, "3", 4) # Проверяем, что строка вызывает ошибку + with self.assertRaises(TypeError): + perimeter(2, 3, "4") # Проверяем, что строка вызывает ошибку + with self.assertRaises(ValueError): + perimeter(-2, 3, 4) # Проверяем, что отрицательная сторона вызывает ошибку + with self.assertRaises(ValueError): + perimeter(2, -3, 4) # Проверяем, что отрицательная сторона вызывает ошибку + with self.assertRaises(ValueError): + perimeter(2, 3, -4) # Проверяем, что отрицательная сторона вызывает ошибку + with self.assertRaises(ValueError): + perimeter(1e308, 1e308, 1e308) # Проверяем, что слишком большие числа вызывают ошибку + +if __name__ == '__main__': + unittest.main() From 182262d99a01dc9ff42785255dc297b530a3287f Mon Sep 17 00:00:00 2001 From: Artemii Date: Sat, 21 Dec 2024 17:14:21 +0300 Subject: [PATCH 10/13] =?UTF-8?q?=D0=B4=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0))?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/circle.cpython-311.pyc | Bin 0 -> 1331 bytes __pycache__/rectangle.cpython-311.pyc | Bin 0 -> 1577 bytes __pycache__/square.cpython-311.pyc | Bin 0 -> 1258 bytes __pycache__/test_circle.cpython-311.pyc | Bin 0 -> 3600 bytes __pycache__/test_rectangle.cpython-311.pyc | Bin 0 -> 4807 bytes __pycache__/test_square.cpython-311.pyc | Bin 0 -> 3440 bytes circle.py | 8 ++++ rectangle.py | 8 ++++ square.py | 8 ++++ tests/test_circle.py | 34 ++++++++++++++++ tests/test_rectangle.py | 43 +++++++++++++++++++++ tests/test_square.py | 33 ++++++++++++++++ test_triangle.py => tests/test_triangle.py | 0 13 files changed, 134 insertions(+) create mode 100644 __pycache__/circle.cpython-311.pyc create mode 100644 __pycache__/rectangle.cpython-311.pyc create mode 100644 __pycache__/square.cpython-311.pyc create mode 100644 __pycache__/test_circle.cpython-311.pyc create mode 100644 __pycache__/test_rectangle.cpython-311.pyc create mode 100644 __pycache__/test_square.cpython-311.pyc create mode 100644 tests/test_circle.py create mode 100644 tests/test_rectangle.py create mode 100644 tests/test_square.py rename test_triangle.py => tests/test_triangle.py (100%) diff --git a/__pycache__/circle.cpython-311.pyc b/__pycache__/circle.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..28571b0af3bfd4ece50e13c11a0954517180cd05 GIT binary patch literal 1331 zcmdT@&1(}u6rahaZ9baRO060_1cgG2L=tUCiBbd zK){E}Cl?7dcm|Hsp%OaAHgjF<+B-ax(jU@rlCE@F6)ZJuhR}z?K+t34x z0N?f-fJLP5;&Mpub_Py&19WW0wG7Ov!)igjugf8{4DPBE7H|&cN%C0h1>cqAok&pk zI!V9P==`=ef4{ezmqQO>UK`;)g29gQg~4cru7&A4^C_*-^)UTRYv#OJFdu`rMmNkt z*nCE-<~;pKYhiK%G9m9hK_sz%3mr$qgp<;p56*uq3(?-brT33zcbep8c)7N=!1Zx-kVj9sN4;wt>wTW*(SngT%D8-aAy^JJf`^J~Nu{1p!#_|uQ@&O_yEIt5K;5A>v_$`d$|T{> zI{QgwZsRRn$CkxjsBG*XRCfBWD$B}5fv1*1jpLE%DO-|UYlJ;!8q&nNljIhV>vhAN*Y!;r+( ftxW*51dMSV`SbkK>J8u{E#$y4$J^Os9`E}DZMyWAV@E^JxHKzl2y{I#?I~@lt5$J zQbVN#FNT8jX0=ifNoY#_IrY}VjCha*PwmB?0^+3?`({km{z&OTdg#Euc|YHK^B()n zysoYFAy`YF1_lc*gg$elvT#}1sRLyiMbQ(~kD?ePj!J!~)fJH{P}n{2K?St)1;jKm zE7@Qrk@*ACbc3tB2BcYtEI3ip^iv-G+dM-yt12}Sngw;iG1E8+UB`uO)FrW_*MMJ& zi*Af#;4kY$HmjZFLuw`Q7|hD&x7GpYQ((~u&ZVXpvFq|1JlE&!jveOKk%r*4ksE8b~-wpV$XlW5={-ZUly2cKK=II-rl2mkL`;Yv0=khha;Np ziVd5#XFyM=rd@q!bVR#FNP^hDd#Y~j>+_P0RU3y5{znyMw*$7DU7@>%MvM^6vJ^|h zM9a|q`_Q147}87^^;SkXxaLAypwT+D0ZWY=g$03=s$QS~VLc8^-=2TXlIX`3N znwY<3!{1Uu*wgs-K{2q>_whopm$mh5wDkz*mV7!BpNv!Q+082NM0?swSy`ODG3Cj6 za)Dg`%jR73T>ISEo9?;pE%{7FpVXfM0@(c$d=3X%Vp-BDK(0l#6! zGRNH(A6U@h$T$wyA}{#IxxE5xFB~!L52zjvUi~BOM>G-x5^5yaaYXRC`s@ZcHEpv^!>&Xc?_I9fzE{kYp9todl^qcqk kP$FvSS~qC`oVZMvKqb{whSd?;s_`vH$=8 literal 0 HcmV?d00001 diff --git a/__pycache__/square.cpython-311.pyc b/__pycache__/square.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..88a28b5ce73bf4e8de0393ac03579f3b4bedaf38 GIT binary patch literal 1258 zcmdT^O=uHA6rRbC%}=w^BK{O93qqmb4@yNX#)}A2#EUFj$=M+(DDxc%Q+Ee%M~votI!%k-0CH zLnh?zFVojY2qish5LtJlhGY&6qH6%x-D3ggpn6K2jYEJvDUpdtX3!;}gLiW15%k9U zwKjkkl3~#@t;+N*dq$hICeu%}$(C4wJpojubykqsbJ}1_^doJ`%4uK%Zv*&wT4lvO ziUMw#et=k&)%Hu+;n<*?kSRYcJfdbvq^S)&O7zmcD0^`rPE;j2bwzMm{3o`$ z-R|Rx-wA1kmNrZ!9akN%mNp%KQqL%+6TG{aRc{cIAx`MNqFX&&!46goJ`Z{K9N6pA zv3rI}j2N|9oDr+QWXSWXvy zE2peVG#Ic-qL&4a@aIbS8)|Vw_zNasFg>l12tX(3-Xi>OfbYLhz=%Ct8n?%Pp#X9i zGTxr_2z`kX6(oG3{ExuZ`Aovn)obJk@VJJJGho_YjB(o+!6R+t8rekyA4ekHPi1;? A^8f$< literal 0 HcmV?d00001 diff --git a/__pycache__/test_circle.cpython-311.pyc b/__pycache__/test_circle.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..714c50bdbfdfd7a48ffedb99d809b8876f955f59 GIT binary patch literal 3600 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 IP_WSc0t^_qVgLXD literal 0 HcmV?d00001 diff --git a/circle.py b/circle.py index 5dd4222354..63a8d1ed7e 100644 --- a/circle.py +++ b/circle.py @@ -10,6 +10,10 @@ def area(r): Вывод: area=12.56 """ + if not isinstance(r, (int, float)): + raise TypeError() + if r < 0 or r > 2147483647 : + raise ValueError() return math.pi * r * r @@ -23,5 +27,9 @@ def perimeter(r): Вывод: perimeter=25.132 """ + if not isinstance(r, (int, float)): + raise TypeError() + if r < 0 or r > 2147483647: + raise ValueError() return 2 * math.pi * r diff --git a/rectangle.py b/rectangle.py index 45e9749c5b..61876b3726 100644 --- a/rectangle.py +++ b/rectangle.py @@ -8,6 +8,10 @@ def area(a, b): Вывод: area=10 """ + if not isinstance(a, (int, float)) or not isinstance(b, (int, float)): + raise TypeError() + if a < 0 or b < 0 or a > 2147483647 or b > 2147483647: + raise ValueError() return a * b def perimeter(a, b): @@ -20,4 +24,8 @@ def perimeter(a, b): Вывод: perimeter=24 """ + if not isinstance(a, (int, float)) or not isinstance(b, (int, float)): + raise TypeError() + if a < 0 or b < 0 or a > 2147483647 or b > 2147483647: + raise ValueError() return 2*(a + b) diff --git a/square.py b/square.py index 6dc110c158..fc10686628 100644 --- a/square.py +++ b/square.py @@ -8,6 +8,10 @@ def area(a): Вывод: area=49 """ + if not isinstance(a, (int, float)): + raise TypeError() + if a < 0 or a > 2147483647: + raise ValueError() return a * a @@ -20,4 +24,8 @@ def perimeter(a): Вывод: perimeter=8 """ + if not isinstance(a, (int, float)): + raise TypeError() + if a < 0 or a > 2147483647: + raise ValueError() return 4 * a diff --git a/tests/test_circle.py b/tests/test_circle.py new file mode 100644 index 0000000000..123270941c --- /dev/null +++ b/tests/test_circle.py @@ -0,0 +1,34 @@ +import unittest +import math +from circle import area, perimeter # Импортируем функции area и perimeter + +class TriangleTestCase(unittest.TestCase): + #тестируем корректные значения + def test_area(self): + self.assertEqual(area(4), 16*math.pi) # Проверяем, area + self.assertEqual(area(0), 0) # Проверяем, area = 0 + self.assertEqual(area(1), math.pi) # Проверяем, area = pi + + def test_perimeter(self): + self.assertEqual(perimeter(4), 8*math.pi) # Проверяем, perimeter + self.assertEqual(perimeter(1), 2*math.pi) # Проверяем, perimeter = pi + + # Тестируем некорректные входные данные + def test_invalid_area(self): + with self.assertRaises(TypeError): + area("5") # Проверяем, что строка вызывает ошибку + with self.assertRaises(ValueError): + area(-5) # Проверяем, что отрицательное основание вызывает ошибку + with self.assertRaises(ValueError): + area(1e308) # Проверяем, что слишком большие числа вызывают ошибку + + def test_invalid_perimeter(self): + with self.assertRaises(TypeError): + perimeter("2") # Проверяем, что строка вызывает ошибку + with self.assertRaises(ValueError): + perimeter(-2) # Проверяем, что отрицательная сторона вызывает ошибку + with self.assertRaises(ValueError): + perimeter(1e308) # Проверяем, что слишком большие числа вызывают ошибку + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/test_rectangle.py b/tests/test_rectangle.py new file mode 100644 index 0000000000..15a9a8c2f2 --- /dev/null +++ b/tests/test_rectangle.py @@ -0,0 +1,43 @@ +import unittest +from rectangle import area, perimeter # Импортируем функции area и perimeter + +class TriangleTestCase(unittest.TestCase): + #тестируем корректные значения + def test_area(self): + self.assertEqual(area(5, 4), 20) # Проверяем, area = 20 + self.assertEqual(area(0, 10), 0) # Проверяем, area = 0 + self.assertEqual(area(10, 0), 0) # Проверяем, area = 0 + self.assertEqual(area(3, 6), 18) # Проверяем, area = 18 + + def test_perimeter(self): + self.assertEqual(perimeter(2, 3), 10) # Проверяем, perimeter = 9 + self.assertEqual(perimeter(1, 0), 2) # Проверяем, perimeter = 0 + self.assertEqual(perimeter(0, 0), 0) # Проверяем, perimeter = 0 + + # Тестируем некорректные входные данные + def test_invalid_area(self): + with self.assertRaises(TypeError): + area("5", 4) # Проверяем, что строка вызывает ошибку + with self.assertRaises(TypeError): + area(5, "4") # Проверяем, что строка вызывает ошибку + with self.assertRaises(ValueError): + area(-5, 4) # Проверяем, что отрицательное основание вызывает ошибку + with self.assertRaises(ValueError): + area(5, -4) # Проверяем, что отрицательная высота вызывает ошибку + with self.assertRaises(ValueError): + area(1e308, 1e308) # Проверяем, что слишком большие числа вызывают ошибку + + def test_invalid_perimeter(self): + with self.assertRaises(TypeError): + perimeter("2", 3) # Проверяем, что строка вызывает ошибку + with self.assertRaises(TypeError): + perimeter(2, "3") # Проверяем, что строка вызывает ошибку + with self.assertRaises(ValueError): + perimeter(-2, 3) # Проверяем, что отрицательная сторона вызывает ошибку + with self.assertRaises(ValueError): + perimeter(2, -3) # Проверяем, что отрицательная сторона вызывает ошибку + with self.assertRaises(ValueError): + perimeter(1e308, 1e308) # Проверяем, что слишком большие числа вызывают ошибку + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_square.py b/tests/test_square.py new file mode 100644 index 0000000000..0e1a274ce8 --- /dev/null +++ b/tests/test_square.py @@ -0,0 +1,33 @@ +import unittest +from square import area, perimeter # Импортируем функции area и perimeter + +class TriangleTestCase(unittest.TestCase): + #тестируем корректные значения + def test_area(self): + self.assertEqual(area(5), 25) # Проверяем, area = 25 + self.assertEqual(area(0), 0) # Проверяем, area = 0 + + def test_perimeter(self): + self.assertEqual(perimeter(2), 8) # Проверяем, perimeter = 8 + self.assertEqual(perimeter(1), 4) # Проверяем, perimeter = 4 + self.assertEqual(perimeter(0), 0) # Проверяем, perimeter = 0 + + # Тестируем некорректные входные данные + def test_invalid_area(self): + with self.assertRaises(TypeError): + area("5") # Проверяем, что строка вызывает ошибку + with self.assertRaises(ValueError): + area(-5) # Проверяем, что отрицательное основание вызывает ошибку + with self.assertRaises(ValueError): + area(1e308) # Проверяем, что слишком большие числа вызывают ошибку + + def test_invalid_perimeter(self): + with self.assertRaises(TypeError): + perimeter("2") # Проверяем, что строка вызывает ошибку + with self.assertRaises(ValueError): + perimeter(-2) # Проверяем, что отрицательная сторона вызывает ошибку + with self.assertRaises(ValueError): + perimeter(1e308) # Проверяем, что слишком большие числа вызывают ошибку + +if __name__ == '__main__': + unittest.main() diff --git a/test_triangle.py b/tests/test_triangle.py similarity index 100% rename from test_triangle.py rename to tests/test_triangle.py From 9e13b64105eb0253bb76b268e8c15b9ca601490e Mon Sep 17 00:00:00 2001 From: Artemii Date: Sat, 21 Dec 2024 17:18:33 +0300 Subject: [PATCH 11/13] __init__ --- tests/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/__init__.py diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 From 9138bbad6d8d4905805130897a32fc5123521f28 Mon Sep 17 00:00:00 2001 From: Artemii Date: Sat, 21 Dec 2024 17:23:37 +0300 Subject: [PATCH 12/13] debag --- tests/test_circle.py => test_circle.py | 0 tests/test_rectangle.py => test_rectangle.py | 0 tests/test_square.py => test_square.py | 0 tests/test_triangle.py => test_triangle.py | 0 tests/__init__.py | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename tests/test_circle.py => test_circle.py (100%) rename tests/test_rectangle.py => test_rectangle.py (100%) rename tests/test_square.py => test_square.py (100%) rename tests/test_triangle.py => test_triangle.py (100%) delete mode 100644 tests/__init__.py diff --git a/tests/test_circle.py b/test_circle.py similarity index 100% rename from tests/test_circle.py rename to test_circle.py diff --git a/tests/test_rectangle.py b/test_rectangle.py similarity index 100% rename from tests/test_rectangle.py rename to test_rectangle.py diff --git a/tests/test_square.py b/test_square.py similarity index 100% rename from tests/test_square.py rename to test_square.py diff --git a/tests/test_triangle.py b/test_triangle.py similarity index 100% rename from tests/test_triangle.py rename to test_triangle.py diff --git a/tests/__init__.py b/tests/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 From 9656bbd4dd9fba8a86f136ea10b61b5aeb308393 Mon Sep 17 00:00:00 2001 From: Artemii Date: Sat, 21 Dec 2024 17:38:04 +0300 Subject: [PATCH 13/13] debag --- rectangle.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rectangle.py b/rectangle.py index 61876b3726..bbbef06683 100644 --- a/rectangle.py +++ b/rectangle.py @@ -28,4 +28,4 @@ def perimeter(a, b): raise TypeError() if a < 0 or b < 0 or a > 2147483647 or b > 2147483647: raise ValueError() - return 2*(a + b) + return 2*(a + b)