From e3db881c2c48f7f52e02b5d80a4be8fb1cfcbf98 Mon Sep 17 00:00:00 2001 From: Hidmund Date: Wed, 2 Oct 2024 00:36:20 +0300 Subject: [PATCH 1/8] new file - rectangle.py --- rectangle.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 rectangle.py diff --git a/rectangle.py b/rectangle.py new file mode 100644 index 0000000000..e69de29bb2 From 9eae82cb57b69572687850567dfe7786ce6909df Mon Sep 17 00:00:00 2001 From: Hidmund Date: Wed, 2 Oct 2024 00:38:52 +0300 Subject: [PATCH 2/8] new file - triangle.py --- triangle.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 triangle.py diff --git a/triangle.py b/triangle.py new file mode 100644 index 0000000000..e69de29bb2 From c4bd0023306e8cac552cf2e898c65c58bd67d9d3 Mon Sep 17 00:00:00 2001 From: Hidmund Date: Wed, 2 Oct 2024 00:45:03 +0300 Subject: [PATCH 3/8] I fix rectangle --- rectangle.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rectangle.py b/rectangle.py index e69de29bb2..4283beec80 100644 --- a/rectangle.py +++ b/rectangle.py @@ -0,0 +1,5 @@ +def area(x, y): + return x * y + +def perinmetr(x, y): + return (x + y) * 2 From a18b161a8823f613870c70ca636c21d9aca71c7c Mon Sep 17 00:00:00 2001 From: Hidmund Date: Mon, 14 Oct 2024 13:35:29 +0300 Subject: [PATCH 4/8] I have added comments --- rectangle.py | 21 +++++++++++++++++++++ triangle.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/rectangle.py b/rectangle.py index 4283beec80..d0d3857963 100644 --- a/rectangle.py +++ b/rectangle.py @@ -1,5 +1,26 @@ def area(x, y): + ''' Принимает два числа(стороны прямугольника) и возвращает их произведение т.е. площадь прямоугольника + Параметры: + x (int): первое натуральное число + y (int): второе натуральное число + + Возвращаемое значение: + произведение x и y (int) + ''' return x * y def perinmetr(x, y): + ''' Принимает два числа(стороны прямугольника) и возвращает их удвоенную сумму т.е. периметр прямоугольника + Параметры: + x (int): первое натуральное число + y (int): второе натуральное число + + Возвращаемое значение: + удвоенная сумма x и y (int) + ''' return (x + y) * 2 + +print(area(5, 9)) +''' Функция area получает на вход два числа(5, 9) и возвращает площадь заданного прямоугольника = 45 ''' +print(perinmetr(8, 4)) +''' Функция perinmetr получает на вход два числа(8, 4) и возвращает периметр заданного прямоугольника = 24 ''' diff --git a/triangle.py b/triangle.py index e69de29bb2..812cff2fc1 100644 --- a/triangle.py +++ b/triangle.py @@ -0,0 +1,29 @@ +def area(a, h): + '''Принимает два числа(сторону треугольника и его высоту проведенную к этой стороне) и возвращает их произведение, деленное на два, т.е. площадь треугольника + Параметры: + a (int): первое натуральное число + h (int): второе натуральное число + + Возвращаемое значение: + разделенное на два произведение a и h (int) + ''' + return a * h / 2 + +def perimeter(a, b, c): + '''Принимает три числа(стороны треугольника) и возвращает их сумму т.е. периметр треугольника + Параметры: + a (int): первое натуральное число + b (int): второе натуральное число + c (int): третье натуральное число + + Возвращаемое значение: + сумма a, b, c (int) + + ''' + return a + b + c + + +print(area(5, 12)) +''' Функция area получает на вход два числа(5, 9) и возвращает площадь заданного треугольника = 30 ''' +print(perimeter(8, 4, 7)) +''' Функция perimeter получает на вход три числа(8, 4, 7) и возвращает периметр заданного треугольника = 24 ''' From 63079e254410c3be3b922b5df0a82a61a447e5e0 Mon Sep 17 00:00:00 2001 From: Hidmund Date: Mon, 14 Oct 2024 15:27:05 +0300 Subject: [PATCH 5/8] I have added comments 2 --- circle.py | 22 +++++++++++++++++++++- docs/README.md | 38 +++++++++++++++++++++++++++++++++++++- rectangle.py | 4 ++-- square.py | 25 +++++++++++++++++++++---- triangle.py | 4 ++-- 5 files changed, 83 insertions(+), 10 deletions(-) diff --git a/circle.py b/circle.py index c3eb8647c9..799b46af30 100644 --- a/circle.py +++ b/circle.py @@ -1,10 +1,30 @@ import math - +''' позволяет получить значение pi''' def area(r): + ''' Принимает одно число (радиус круга) и возвращает его значение возведенное в квадрат и умноженное на pi т.е. площадь круга + Параметры: + x (int): натуральное число + + Возвращаемое значение: + значение числа x возведенное в квадрат и умноженное на pi (float) + + ''' return math.pi * r * r def perimeter(r): + ''' Принимает одно число (радиус круга) и возвращает его значение умноженное на два и умноженное на pi т.е. периметр круга + Параметры: + x (int): натуральное число + + Возвращаемое значение: + удвоенное значение числа x и умноженное на pi (float) + + ''' return 2 * math.pi * r +print(area(5)) +''' Функция area получает на вход число(5) и возвращает площадь заданного круга= 25*pi''' +print(perimeter(5)) +''' Функция perinmetr получает на вход число(5) и возвращает периметр заданного круга = 10*pi ''' diff --git a/docs/README.md b/docs/README.md index 63f8727939..6fe8b4cd20 100644 --- a/docs/README.md +++ b/docs/README.md @@ -3,8 +3,44 @@ - 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 +она получает на вход несколько чилел: +- для прямоугольника - 2, функция возвращает произведение этих двух чисел (его сторон) +- для треугольника - 2, функция возвращает поизведение его стороны на высоту, деленное на два +- для квадрата - 1, функция возвращает квадрат его стороны +- для круго - 1, функция возвращеет квадрат его радиуса, умноженный на pi +### Примеры: +- дан прямоугольник со сторонами 4 и 8, функция выведет их произведение = 32 +- дан треугольник со стороной 4 и высотой 8, функция выведет их произведение, деленное пополам = 16 +- дан квадрат со стороной 5, функция выведет значение равное квадрату его стороны = 25 +- дан круг с радиусом 5, функция выведет знаяение равное квадрату радиуса, умноженное на pi = 25*pi + +## Функция perimeter +она получает на вход 2 или 3 числа: +- для прямоугольника - 2, и возвращает их удвоенную сумму +- для треугольника - 3, и возвращает их сумму +- для квадрата - 1, и возвращает его значение, умноженное на 4 +- для круга - 1, и возвращает его удвоенное значение умноженное на pi +### Примеры: +- дан прямоугольник со сторонами 4 и 8, функция выведет их удвоенную сумму = 24 +- дан треугольник со сторонами 4, 8, 7, функция выведет их сумму = 19 +- дан квадрат со стороной 5, функция выведет значение стороны, умноженное на 4 = 20 +- дан круг с радиусом 5, функция выведет его удвоенное значение умноженное на pi = 10*pi + +## Библиотека math +для выполнения математических и не только операций(в нашем случае для добавления значения pi) + + +# История изменений проекта diff --git a/rectangle.py b/rectangle.py index d0d3857963..54a95ebe87 100644 --- a/rectangle.py +++ b/rectangle.py @@ -9,7 +9,7 @@ def area(x, y): ''' return x * y -def perinmetr(x, y): +def perimeter(x, y): ''' Принимает два числа(стороны прямугольника) и возвращает их удвоенную сумму т.е. периметр прямоугольника Параметры: x (int): первое натуральное число @@ -22,5 +22,5 @@ def perinmetr(x, y): print(area(5, 9)) ''' Функция area получает на вход два числа(5, 9) и возвращает площадь заданного прямоугольника = 45 ''' -print(perinmetr(8, 4)) +print(perimeter(8, 4)) ''' Функция perinmetr получает на вход два числа(8, 4) и возвращает периметр заданного прямоугольника = 24 ''' diff --git a/square.py b/square.py index 0f98724205..64c4b82408 100644 --- a/square.py +++ b/square.py @@ -1,7 +1,24 @@ +def area(x): + ''' Принимает одно число(сторону квадрата) и возвращает его произведение само на себя т.е. площадь квадрата + Параметры: + x (int): натуральное число -def area(a): - return a * a + Возвращаемое значение: + квадрат числа x (int) + ''' + return x * x +def perimeter(x): + ''' Принимает одно число (сторону квадрата) и возвращает его значение умноженное на 4 т.е. периметр квадрата + Параметры: + x (int): натуральное число + + Возвращаемое значение: + значение числа x умноженное на 4 (int) + ''' + return 4 * x -def perimeter(a): - return 4 * a +print(area(5)) +''' Функция area получает на вход число(5) и возвращает площадь заданного квадрата = 25 ''' +print(perimeter(5)) +''' Функция perinmetr получает на вход число(5) и возвращает периметр заданного квадрата = 20 ''' diff --git a/triangle.py b/triangle.py index 812cff2fc1..c140e4b58c 100644 --- a/triangle.py +++ b/triangle.py @@ -24,6 +24,6 @@ def perimeter(a, b, c): print(area(5, 12)) -''' Функция area получает на вход два числа(5, 9) и возвращает площадь заданного треугольника = 30 ''' +''' Функция area получает на вход два числа(5, 12) и возвращает площадь заданного треугольника = 30 ''' print(perimeter(8, 4, 7)) -''' Функция perimeter получает на вход три числа(8, 4, 7) и возвращает периметр заданного треугольника = 24 ''' +''' Функция perimeter получает на вход три числа(8, 4, 7) и возвращает периметр заданного треугольника = 19 ''' From 34450fcd2bfe72145af8a44ffed7a40d422a32a8 Mon Sep 17 00:00:00 2001 From: Hidmund Date: Mon, 14 Oct 2024 15:37:19 +0300 Subject: [PATCH 6/8] =?UTF-8?q?=D0=B1=D1=83=D0=B4=D1=83=20=D1=81=D0=BE?= =?UTF-8?q?=D0=B7=D0=B4=D0=B0=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D1=83=D1=8E=20=D0=B2=D0=B5=D1=82=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/README.md b/docs/README.md index 6fe8b4cd20..14fd3df859 100644 --- a/docs/README.md +++ b/docs/README.md @@ -44,3 +44,14 @@ # История изменений проекта +Добавил новый файл - rectangle.py +commit e3db881c2c48f7f52e02b5d80a4be8fb1cfcbf98 + +Добавил новый файл - triangle.py +commit 9eae82cb57b69572687850567dfe7786ce6909df + +Исправил ошибку в файле - rectangle.py +commit c4bd0023306e8cac552cf2e898c65c58bd67d9d3 + +Добавил комментарии во все файлы +commit 63079e254410c3be3b922b5df0a82a61a447e5e0 From 616824bd598aa26bd7f67f96b08a19a778710b0d Mon Sep 17 00:00:00 2001 From: Hidmund Date: Wed, 11 Dec 2024 04:09:36 +0300 Subject: [PATCH 7/8] I add unit_tests --- __pycache__/circle.cpython-310.pyc | Bin 0 -> 1554 bytes __pycache__/rectangle.cpython-310.pyc | Bin 0 -> 1489 bytes __pycache__/square.cpython-310.pyc | Bin 0 -> 1328 bytes __pycache__/test.cpython-310.pyc | Bin 0 -> 2952 bytes __pycache__/triangle.cpython-310.pyc | Bin 0 -> 1667 bytes circle.py | 41 ++++++----- docs/README.md | 96 ++++++++++++++++++++++++++ rectangle.py | 43 +++++++----- square.py | 42 ++++++----- test.py | 71 +++++++++++++++++++ triangle.py | 25 ++++--- 11 files changed, 255 insertions(+), 63 deletions(-) create mode 100644 __pycache__/circle.cpython-310.pyc create mode 100644 __pycache__/rectangle.cpython-310.pyc create mode 100644 __pycache__/square.cpython-310.pyc create mode 100644 __pycache__/test.cpython-310.pyc create mode 100644 __pycache__/triangle.cpython-310.pyc create mode 100644 test.py diff --git a/__pycache__/circle.cpython-310.pyc b/__pycache__/circle.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..829e275940b54a5be3e03d485d12bd7d42adc85b GIT binary patch literal 1554 zcmdUv&ubGw6vt;bsix7U6!a={lEgzUf?yP}<}QK=QUVgQYqPRx!ej#q9@11OVo&}9 zo^y*etHCDmUwCuftEc`8p8USqWSd4*qz7?ec4pqpykGly(_CB23N$%+yj@=r;u|j( zn~lX?^!62e9N}2L*b=M4v7OXwv1K`FX9c6}SPwrkDD5JM?_ypp) z^-5e4+;PY1+{3oaN;G<}yELK+`j`e3>Yk)24I!9Hy-y>(OGlXIacThZNbl)gNndnV z@6ksZ6eNu#9pcJoI^;9@&0I@}{i%d}0_i@5#zvSNhG1xfutY3|Rw#lIqXuq_By5b? z6Z*7x68dDzle$-=uqf#(J7~-f^}&K`CcHRAIKb|YIXrm&wv_Dg{tKD+c7j4l8c%zO zkPjc}17kW|NJDZhnb5oC&|$^IvlRDflRsr8N%a8k%=3BX6y=}!&1z7{p12$TZB9g2 znlL{gcfI9|css35P?Fb^dz_|bCos~R*IHhzv2RD|Mm4BMcFXHqk)`@Vod<5;ua--d zM{QTNEA@u!yOnLX*>D5p)t>m?(@M=#HQz0^UPjrnnQkh#nr2oR+FVYpV)#AKj>SkP zK--;L{|@M1LkhqF^k0CCzhdgpVEUh+jPN;3FpqMX)$$ViClzGq{zF~Qp=IW{oq{k~ z%-*dtk$fW|`IyO5=7R@0rr4mYGFV3IF{ck)<$+^YU4}4*bzNP+ypU2UzQ*7hL422M bVL?mgcBAQZeD@B&&uvzm5w?}FFK+w*+i<^& literal 0 HcmV?d00001 diff --git a/__pycache__/rectangle.cpython-310.pyc b/__pycache__/rectangle.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8edf924a9c0b7a84122c35ecbef36585ce8e2993 GIT binary patch literal 1489 zcmc(fO=}ZD7{_O0D^ds^qusu!tG$3Ew4I0{YIwXJ5uG=1sv2aWyyQS%i?b;nWvVHo5sYAOh z{-4RuY8q;IkLiF0Snu1-DCp3>6GzyFY^4Bs0&xtq?d2%Q!H#re@!7ZAaUM*a$rM%} z?f_|!3iYFURJN6uov|%yZM|5oHM4on5MVJ^7-%H-;n5fGa2GrsZ+v_vPA85th!y#p zIB_8Qa9SIbEwvm-H5-v6C-=aL|5ms*3;wIB)HF+Ys4PfV%kDlx!`^9S%C*&2Gq3O5 z(D!0jR;=D?isAMxnch=-iHXymI33RcNAmcQUCtMtH;mUPys4UsDU?jTYMNfT_^MKV zUGPk?xl$`tOm4L^$vlll4?VNOAsP&3a?ZPq*Po$H!^+Su0CoX4(Ykp-;DSHC6gViH z(g?)7*SHgXoE9UieJUdHmaaoJ|O)GMHX~@JoUu?^o+?t74V}ZT!1c IQl+o_1UJ;6o&W#< literal 0 HcmV?d00001 diff --git a/__pycache__/square.cpython-310.pyc b/__pycache__/square.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..465648d5e11c13bc2d281676a847883376287320 GIT binary patch literal 1328 zcmb_c&ubGw6rPQ(gkb#v{R75}G?yHtpav03@1;-#k$}|hP#2P>&Ss&4hcppHEEN0) zJomP(Sq;{#|H2!*IWaj zrGUdjtZ){auYB*ddZPS-e+h5TpITAn=`|0gk?=RiEMkR4Y_IUlD)@QPcNn!UX$XCA zZR*ni>np{SxQ?cjdQha=y`jF_rb9~S+_vjb3fGhduB+(_9l*N>MGQk+*3{QfrSzE& zMEQ1W-83+|H@8f*?bI zKF|v?0fB3~ch%g+c9tzY7i_f3RjCB0t^^#q9mY!NBu87yW9j`QB<>Z?z=3`da)je# zxs%s(oH-sfF;*eFf9|`jrK5cS?o0v*Ha4SHRo}@wV?@oUCEEFWS-w5B=MB9r%cGa= z&#lF3?NMlKSbN?ubyHh6&4y{&VC`u=cvcHvM61?RHeU`)EAqKu%_;}~V&W99+G)Jb zCYA3Uk*W~=J};^Czq4v$3fgrsA0Fo?8B8`S2k((d-%EZ#*#|5nrStMjdvfLe$I(Ro>>>v?U z;*egE_!HV={u=H+A#uS{4xn716vFR~Ki1nO**#!uo@btCp5Ob;@4fMUt5s*XzWe#B z-Sq}zztW(585nG$g+D{0VENv4{(P%p+}27rYB+&@`d{sPp`-am!$ve|zW# zc0G;zuJqj47`f5?SUd3X5hL`1uTPk4!{C$KTX%N8#L95z{>Tfwon3E#NqYefk!N~AZ}<~zQS+uqvdIMH;Sp311+(B0<=(21DLsiE>=_~aAx*Q zY)x*jv=s{MYF`qj(j-wOL3m06HhH38loX!5m`3!uCw*YyN!g@nEfNbP2)I-%p%*Wx zh!67F9q0;#ZV*DN7a>&4@1Im+%W=l;$a9>y?l_};aTrj)={U5J=^IIQWw-eBv=fqY znF0wZIEz_Yv#NBLW{%V`k+NeO-;kGQ2N|a9IQt0V0eh5XhtM8tln-jG19ZJKru?Xs z#rATqmA<|k&Qx|n;8b$2Qj8uOC0ROjwS*jWl zmE;>F6aXsM6#&GP9Dq&{$83hZOSXCtM>mUA)6vgEvfD5~1edRopwUcvwFlDw|JXGP z;RXz6GBdO}4bpSi9rl~lWf6)DIo z`TS{&U6iZmjzMxqF>HX&B)f!uj325JfABMfeA1uEr@ClBr((|5wghhI7782|`|@pa zP2oVP=Kn#kyn|jsg)Th-U#H#%2}KrF&6a6MCT1rG3(V01N{juZpTDEmK_M-^Nt&VEj4Aq%t*JNJmY;&l7 z0&OeG=owqN7wVi;wNo)%l685FK7qd`e|%B(jji|7Q~CocUm=|tICFV^cl1uXv)E}{ J3r%jE{|B;oa6JG3 literal 0 HcmV?d00001 diff --git a/__pycache__/triangle.cpython-310.pyc b/__pycache__/triangle.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a51ef2a632424391e530725e7fe43f77d6a11f15 GIT binary patch literal 1667 zcmcgtzl#$=7~M_ox}SFl$GPQ2vQlrQG7RouGjsP(X9ZNYFBC6_%FcelDTg?tQ1Y|jgh2FmRW;C7Tqdjq zj%INn*3WlP3@3k*Z>{RMJHGpzcx*w$Hx_Hw5eojJvcrmamHK|Wl@ZqsaWhP1K^yIs z3izwv*vs!>Tu;w?dfDcwdVEi2Gr7H{WjAx>npL%OC96@hT6U%Qv|1_TFv! Проверяет вычисление площади круга с радиусом 2; ожидает результат, близкий к π*4. +### self.assertAlmostEqual(SquareArea(0), 0, точность=5) +> Подтверждает, что площадь круга с радиусом 0 равна 0. +### self.assertAlmostEqual(SquareArea(9223372036854775807), math.pi * 9223372036854775807 ** 2, точность=5) +> Проверяет вычисление площади круга с очень большим радиусом, `9223372036854775807`. +### self.assertAlmostEqual(SquareArea(-8), «Обнаружено отрицательное число: Circle::area», точность=5) +> Проверяет обработку отрицательного радиуса при вычислении площади. Выводится **error**. +--- + +## CircleTestCase - test_perimeter + +### self.assertAlmostEqual(SquarePerimeter(2), 2 * math.pi * 2, точность=5) +> Проверяет периметр окружности с радиусом 2; ожидает результат, близкий к 4π. +### self.assertAlmostEqual(SquarePerimeter(0), 0, точность=5) +> Подтверждает, что периметр окружности с радиусом 0 равен 0. +### self.assertAlmostEqual(SquarePerimeter(9223372036854775807), 2 * math.pi * 9223372036854775807, точность=5) +> Проверяет вычисление периметра окружности с очень большим радиусом. +### self.assertAlmostEqual(SquarePerimeter(-6), «Обнаружено отрицательное число: Circle::perimetr», точность=5) +> Проверяет обработку отрицательного радиуса при вычислении периметра. Выводится **error**. +--- + +## RectangleTestCase - test_area + +### self.assertEqual(RectangleArea(-2, -6), «Обнаружено отрицательное число: Rectangle::area») +> Проверяет прямоугольную область с отрицательными размерами. Вывод **error**. +### self.assertEqual(RectangleArea(0, 5), 0) +> Проверяет, что площадь прямоугольника с одной стороной, равной 0, равна 0. +### self.assertEqual(RectangleArea(7, 2), 14) +> Подтверждает вычисление площади прямоугольника со сторонами 7x2; ожидается 14. +### self.assertEqual(RectangleArea(9223372036854775807, 9223372036854775807), 9223372036854775807 ** 2) +> Проверяет расчет площади для очень больших размеров прямоугольника. +--- + +## RectangleTestCase - test_perimeter + +### self.assertEqual(RectanglePerimeter(-2, -6), «Обнаружено отрицательное число: Rectangle::perimetr») +> Проверяет периметр прямоугольника с отрицательными размерами. Вывод **error**. +### self.assertEqual(RectanglePerimeter(0, 5), 10) +> Проверяет вычисление периметра с одной стороной, равной 0; ожидает 10. +### self.assertEqual(RectanglePerimeter(7, 2), 18) +> Подтверждает расчёт периметра прямоугольника со сторонами 7 и 2. +### self.assertEqual(RectanglePerimeter(9223372036854775807, 9223372036854775807), 9223372036854775807*2 + 9223372036854775807*2) +> Проверяет расчет периметра для очень больших размеров прямоугольника. +--- + +## SquareTestCase - test_area + +### self.assertEqual(SquareArea(-5), «Обнаружено отрицательное число: Square::area») +> Проверяет площадь квадрата с отрицательной длиной стороны. Вывод **error**. +### self.assertEqual(SquareArea(0), 0) +> Проверяет вычисление площади квадрата со стороной 0,5. +### self.assertEqual(SquareArea(9223372036854775807), 9223372036854775807 * 9223372036854775807) +> Проверяет расчёт площади квадрата с очень большой длиной стороны. +### self.assertEqual(SquareArea(10), 100) +> Подтверждает расчёт площади квадрата со стороной 10. +--- + +## SquareTestCase - test_perimeter + +### self.assertEqual(SquarePerimeter(-5), «Обнаружено отрицательное число: Square::perimetr») +> Проверяет периметр квадрата с отрицательной длиной стороны. Вывод: **error**. +### self.assertEqual(SquarePerimeter(0), 0) +> Проверяет вычисление периметра квадрата со стороной 0,5. +### self.assertEqual(SquarePerimeter(9223372036854775807), 9223372036854775807 * 4) +> Проверяет расчёт периметра для квадрата с очень большой длиной стороны. +### self.assertEqual(SquarePerimeter(10), 40) +> Подтверждает расчёт периметра квадрата со стороной 10. +--- + +## TriangleTestCase - test_area + +### self.assertEqual(TriangleArea(-4, -5), «Обнаружено отрицательное число: Triangle::area») +> Проверяет площадь треугольника с отрицательным основанием и высотой. Вывод: **error**. +### self.assertEqual(TriangleArea(3, 6), 9) +> Проверяет вычисление площади треугольника с основанием 3 и высотой 6. +### self.assertEqual(TriangleArea(9223372036854775807, 2), 9223372036854775807 * 2 / 2) +> Проверяет вычисление площади для треугольника с очень большим основанием. +### self.assertEqual(TriangleArea(7, 8), 28) +> Подтверждает расчёт площади треугольника с основанием 7 и высотой 8. +--- + +## TriangleTestCase - test_perimeter + +### self.assertEqual(TrianglePerimeter(-4, -5, -6), «Обнаружено отрицательное число: Triangle::perimetr») +> Проверяет периметр треугольника с отрицательными длинами сторон. Вывод **error**. +### self.assertEqual(TrianglePerimeter(3, 4, 5), 12) +> Проверяет вычисление периметра треугольника со сторонами 3, 4, 5. +### self.assertEqual(TrianglePerimeter(6, 8, 10), 24) +> Подтверждает расчёт периметра треугольника со сторонами 6, 8, 10. +### self.assertEqual(TrianglePerimeter(9223372036854775807, 9223372036854775807, 9223372036854775807), 9223372036854775807 * 3) +> Проверяет вычисление периметра треугольника с очень большими сторонами. # История изменений проекта Добавил новый файл - rectangle.py diff --git a/rectangle.py b/rectangle.py index 54a95ebe87..d04619706e 100644 --- a/rectangle.py +++ b/rectangle.py @@ -1,26 +1,31 @@ -def area(x, y): - ''' Принимает два числа(стороны прямугольника) и возвращает их произведение т.е. площадь прямоугольника - Параметры: - x (int): первое натуральное число - y (int): второе натуральное число +def RectangleArea(x, y): + ''' + Принимает два числа(стороны прямугольника) и возвращает их произведение т.е. площадь прямоугольника + Параметры: + x (int): первое натуральное число + y (int): второе натуральное число - Возвращаемое значение: - произведение x и y (int) + Возвращаемое значение: + произведение x и y (int) + + Пример работы: + input: 2, 5 + output: 10 ''' return x * y -def perimeter(x, y): - ''' Принимает два числа(стороны прямугольника) и возвращает их удвоенную сумму т.е. периметр прямоугольника - Параметры: - x (int): первое натуральное число - y (int): второе натуральное число +def RectanglePerimeter(x, y): + ''' + Принимает два числа(стороны прямугольника) и возвращает их удвоенную сумму т.е. периметр прямоугольника + Параметры: + x (int): первое натуральное число + y (int): второе натуральное число + + Возвращаемое значение: + удвоенная сумма x и y (int) - Возвращаемое значение: - удвоенная сумма x и y (int) + Пример работы: + input: 2, 5 + output: 14 ''' return (x + y) * 2 - -print(area(5, 9)) -''' Функция area получает на вход два числа(5, 9) и возвращает площадь заданного прямоугольника = 45 ''' -print(perimeter(8, 4)) -''' Функция perinmetr получает на вход два числа(8, 4) и возвращает периметр заданного прямоугольника = 24 ''' diff --git a/square.py b/square.py index 64c4b82408..3843c17b54 100644 --- a/square.py +++ b/square.py @@ -1,24 +1,32 @@ -def area(x): - ''' Принимает одно число(сторону квадрата) и возвращает его произведение само на себя т.е. площадь квадрата - Параметры: - x (int): натуральное число +def SquareArea(x): + ''' + Принимает одно число(сторону квадрата) и возвращает его произведение само на себя т.е. площадь квадрата + Параметры: + x (int): натуральное число + + Возвращаемое значение: + квадрат числа x (int) + + Пример работы: + input: 7 + output: 49 - Возвращаемое значение: - квадрат числа x (int) ''' return x * x -def perimeter(x): - ''' Принимает одно число (сторону квадрата) и возвращает его значение умноженное на 4 т.е. периметр квадрата - Параметры: - x (int): натуральное число - - Возвращаемое значение: - значение числа x умноженное на 4 (int) +def SquarePerimeter(x): + ''' + Принимает одно число (сторону квадрата) и возвращает его значение умноженное на 4 т.е. периметр квадрата + Параметры: + x (int): натуральное число + + Возвращаемое значение: + значение числа x умноженное на 4 (int) + + Пример работы: + input: 7 + output: 28 + ''' return 4 * x -print(area(5)) -''' Функция area получает на вход число(5) и возвращает площадь заданного квадрата = 25 ''' -print(perimeter(5)) -''' Функция perinmetr получает на вход число(5) и возвращает периметр заданного квадрата = 20 ''' diff --git a/test.py b/test.py new file mode 100644 index 0000000000..d453df8e57 --- /dev/null +++ b/test.py @@ -0,0 +1,71 @@ +import unittest +import math +from square import * +from rectangle import * +from circle import * +from triangle import * + + +class CircleTestCase(unittest.TestCase): + + def test_area(self): + + self.assertAlmostEqual(CircleArea(2), math.pi * 2 * 2, places=5) + self.assertAlmostEqual(CircleArea(0), 0, places=5) + self.assertAlmostEqual(CircleArea(9223372036854775807), math.pi * 9223372036854775807 ** 2, places=5) + self.assertAlmostEqual(CircleArea(-8), math.pi * -8 * -8, places=5) + + def test_perimeter(self): + + self.assertAlmostEqual(CirclePerimeter(2), 2 * math.pi * 2, places=5) + self.assertAlmostEqual(CirclePerimeter(0), 0, places=5) + self.assertAlmostEqual(CirclePerimeter(9223372036854775807), 2 * math.pi * 9223372036854775807, places=5) + self.assertAlmostEqual(CirclePerimeter(-6), 2 * math.pi * -6, places=5) + +class SquareTestCase(unittest.TestCase): + + def test_area(self): + self.assertEqual(SquareArea(-5), 25) + self.assertEqual(SquareArea(0), 0) + self.assertEqual(SquareArea(9223372036854775807), 9223372036854775807**2) + self.assertEqual(SquareArea(10), 100) + + def test_perimeter(self): + self.assertEqual(SquarePerimeter(-5), -20) + self.assertEqual(SquarePerimeter(0), 0) + self.assertEqual(SquarePerimeter(9223372036854775807), 9223372036854775807*4) + self.assertEqual(SquarePerimeter(10), 40) + + +class RectangleTestCase(unittest.TestCase): + + def test_area(self): + self.assertEqual(RectangleArea(-2, -6), 12) + self.assertEqual(RectangleArea(0, 5), 0) + self.assertEqual(RectangleArea(7, 2), 14) + self.assertEqual(RectangleArea(9223372036854775807, 9223372036854775807), 9223372036854775807**2) + + def test_perimeter(self): + self.assertEqual(RectanglePerimeter(-5 , -7), -24) + self.assertEqual(RectanglePerimeter(0, 5), 10) + self.assertEqual(RectanglePerimeter(7, 2), 18) + self.assertEqual(RectanglePerimeter(9223372036854775807, 9223372036854775807), 9223372036854775807*2 + 9223372036854775807*2) + + + +class TriangleTestCase(unittest.TestCase): + + def test_area(self): + self.assertEqual(TriangleArea(-4, -5), 10) + self.assertEqual(TriangleArea(3, 6), 9) + self.assertEqual(TriangleArea(9223372036854775807, 2), 9223372036854775807 * 2 / 2) + self.assertEqual(TriangleArea(7, 8), 28) + + def test_perimeter(self): + self.assertEqual(TrianglePerimeter(-4, -5, -6), -15) + self.assertEqual(TrianglePerimeter(3, 4, 5), 12) + self.assertEqual(TrianglePerimeter(6, 8, 10), 24) + self.assertEqual(TrianglePerimeter(9223372036854775807, 9223372036854775807, 9223372036854775807), 9223372036854775807*3) + +if __name__ == "__main__": + unittest.main() \ No newline at end of file diff --git a/triangle.py b/triangle.py index c140e4b58c..a0c31bdea8 100644 --- a/triangle.py +++ b/triangle.py @@ -1,16 +1,22 @@ -def area(a, h): - '''Принимает два числа(сторону треугольника и его высоту проведенную к этой стороне) и возвращает их произведение, деленное на два, т.е. площадь треугольника +def TriangleArea(a, h): + ''' + Принимает два числа(сторону треугольника и его высоту проведенную к этой стороне) и возвращает их произведение, деленное на два, т.е. площадь треугольника Параметры: a (int): первое натуральное число h (int): второе натуральное число Возвращаемое значение: разделенное на два произведение a и h (int) + + Пример работы: + input: 2, 5 + output: 5 ''' return a * h / 2 -def perimeter(a, b, c): - '''Принимает три числа(стороны треугольника) и возвращает их сумму т.е. периметр треугольника +def TrianglePerimeter(a, b, c): + ''' + Принимает три числа(стороны треугольника) и возвращает их сумму т.е. периметр треугольника Параметры: a (int): первое натуральное число b (int): второе натуральное число @@ -19,11 +25,10 @@ def perimeter(a, b, c): Возвращаемое значение: сумма a, b, c (int) - ''' - return a + b + c + Пример работы: + input: 2, 5, 6 + output: 13 -print(area(5, 12)) -''' Функция area получает на вход два числа(5, 12) и возвращает площадь заданного треугольника = 30 ''' -print(perimeter(8, 4, 7)) -''' Функция perimeter получает на вход три числа(8, 4, 7) и возвращает периметр заданного треугольника = 19 ''' + ''' + return a + b + c From 8188c435cdb0eff4ba48b8cca6dd5dbbb8e9769a Mon Sep 17 00:00:00 2001 From: Hidmund Date: Wed, 11 Dec 2024 15:50:52 +0300 Subject: [PATCH 8/8] I have made changes --- .idea/.gitignore | 3 + .idea/geometric_lib.iml | 12 +++ .../inspectionProfiles/profiles_settings.xml | 6 ++ .idea/misc.xml | 4 + .idea/modules.xml | 8 ++ .idea/vcs.xml | 6 ++ __pycache__/circle.cpython-310.pyc | Bin 1554 -> 1608 bytes __pycache__/rectangle.cpython-310.pyc | Bin 1489 -> 1559 bytes __pycache__/square.cpython-310.pyc | Bin 1328 -> 1378 bytes __pycache__/test.cpython-310.pyc | Bin 2952 -> 2842 bytes __pycache__/triangle.cpython-310.pyc | Bin 1667 -> 1787 bytes circle.py | 7 ++ docs/README.md | 70 +++++++++--------- rectangle.py | 11 ++- square.py | 10 ++- test.py | 33 +++++---- triangle.py | 10 ++- 17 files changed, 126 insertions(+), 54 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/geometric_lib.iml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000000..26d33521af --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/geometric_lib.iml b/.idea/geometric_lib.iml new file mode 100644 index 0000000000..8b8c395472 --- /dev/null +++ b/.idea/geometric_lib.iml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000000..105ce2da2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000000..dc9ea4906e --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000000..5c0675083d --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000000..35eb1ddfbb --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/__pycache__/circle.cpython-310.pyc b/__pycache__/circle.cpython-310.pyc index 829e275940b54a5be3e03d485d12bd7d42adc85b..9783a0046413d4c686e9bf551734ede185899c73 100644 GIT binary patch delta 324 zcmbQlbApFApO=@50SN4BBh&XyRT>=*%{W0;C~fP78nA{LM?ki)cpO=@50SFZKMxNFgm_d_qW1l%Y zG1+i10hRFa6>(0sW0n;IsZU`9>42+eDz%m mF%kvxi@^r+7jXmGn#@JaASIk20wjQ>1FV;0vKE^xqaXlreIOkG diff --git a/__pycache__/rectangle.cpython-310.pyc b/__pycache__/rectangle.cpython-310.pyc index 8edf924a9c0b7a84122c35ecbef36585ce8e2993..249a3e333d39df665f986959a9c5a61c6dc28213 100644 GIT binary patch delta 323 zcmcb}J)MUypO=@50SF>$Bh#Z;C-Ma-$pCpZ3@MD+jKv%^j3By*D}^Z-C|1KL!Vt`$ z$-FT~pGo#5NY^da)S{yNqLmCQnQk#w++wUOVg`y9F;8B@IJxIV1qbpa`RJ4 Sb5iXX;MobAWL8>6S5G=4EtU!rd zLP4p?C5d_IIjI4uMVYy&C8nQW&!ti`Y__f`RNB1`&o}22JLTIX4)k zUV;?gVofb7$}d{Uu#)i>V?_}&P^gG`auAb^GaHb}!Oz0T!BoT!WF|8L2^avenSj_C zh>Ov!NnwUs!?O7x(=W#QB9Q7Lkn)!-AQspT1PjasS$2y*xUe*_C^aCpC^I*;B(+Es pq?!Xnfc)jB32_LR19d1!4xyjJCO1E&G$+*#WMMJL1`Y-u5dbS}F$w?x delta 240 zcmaFFwSkK_pO=@50SFZLMx^^q zV?_}oP(cynIn_n{hVk~{h0u+Rp z1X2ez6T|{Z+~N-|EKMv*4M;7@%uOvxEfNIDuz?7WVSbuSU@O5KB&}eFf%S9PHq)$ diff --git a/__pycache__/test.cpython-310.pyc b/__pycache__/test.cpython-310.pyc index e97649b6d98713e24a80aa8aa8d66c2810fa6d3b..acc3fab0d7c6ee8bac36c09c7e6884db0ef46dcc 100644 GIT binary patch delta 981 zcmZ`%y>HV{5chljjAQ4cN%|2=5hPU=N~%yOAeIWTAclbG(pE^V6F@f2K>Yvmd5jZ)k?8E%d$t)w;NEyw7$f)@ih-g@jIU_ z924mO5ExaU+@KNY*i$mj(O@trDPRf9W|DF>z55HGZdX880QIB6Bx)(8OOF#NkfbrNHI`NA&&2r zQZ9lWGWbooGkr!lm4vKWa{en8tLjQ*SPoyR<;#=ge)1Y*%L|wh-yxOAkPL2Vq3y-j z8BA(d*dg|e0+X?>t*mD$V9ZGoflfB6aS)bms6lK?9L|Z~rv1RH`A)0e^lpLYM3q$t z`=Q-khIxvL50y23i7uU>f(79)q@v1$iJ$f2DUy%$N-k0|t{NZnquK?sNEC!RLRlte zW7i^6W^gO^ctfGdJsvd66>nE|?a?$Rs&I)e7N#H9s!SXT9fU+Qc(6oJp@Xo~Cf+p5 zk-RxPFt48?<%@a2>Kps5hEH<|HvTkkT%>+NkzkQvNi>)J#- zx8JpI%)WH1l=k2}o!Q+WF%8td7y%2E2MQ%SM9yh_8nX>0&^>Z2V+=Ef$lw_63&=H6 zGg}E0Dv2iG89mf*Zmz9|+nkEu0nVknzg~k3Eb&X>4PBvQP+?1&M}0aC9oD2A9%(hyx-BgjEsjcDM=%gjougdxBTdtq%11=p8NC?s_08}~$fIr;hnzdO z%ta_5jAc-S6=h2Jn-c!Elx4q!881s8UHD$Przraju2K)Ws$Wbda9L)6+wfSem5=k| zni3qS%j3QXMHBfc@r?$;?QkzFXwBSh9^BRHjWRO)@gbuk&Y?Vxuh+a&)SAs%Tz-Wt~LuN^j{fNF`6?LRnF(FGigHZ!v9zog|$H;=WRy|kTgMz*I xk9s=xw9_$f^`bZqw`1zh5e*)ep!yo_v diff --git a/__pycache__/triangle.cpython-310.pyc b/__pycache__/triangle.cpython-310.pyc index a51ef2a632424391e530725e7fe43f77d6a11f15..18a79891d5726b806c94965e520fa3352d1e1bed 100644 GIT binary patch delta 362 zcmYk2!Ab)`42CC}X

QfZ-r2&;&&FW^a}PauoyLGe`Gp%zI>Z&{+6zLE8Z%F)Bf!#x=;$t+LwFmAK#rUqi9Xt~h)R|PlL4)LEu z6FUq}>A%xJIb?#2U6HlWWDbH>Omw(;ZXiT@UVeS*3w+5q2*h5H0!Xf@#oEKIhr2bJ z%(kStb4ioY<9KQdOOu&>w$$f#BfqlSHE@K1e4ESjoL|71q}W&!-WqmAr?XyN&8PNE L02&!YD(?LPQ-DO? delta 245 zcmey(+sw13 bi#UO7KTRgEE5IBi?O?aEPJYNH$tVB-@GB^_ diff --git a/circle.py b/circle.py index a0d7e93da6..f6f04a2558 100644 --- a/circle.py +++ b/circle.py @@ -15,6 +15,9 @@ def CircleArea(r): output: 9*pi ''' + + if r <= 0: + return "error" return math.pi * r * r @@ -33,5 +36,9 @@ def CirclePerimeter(r): output: 6*pi ''' + + if r <= 0: + return "error" + return 2 * math.pi * r diff --git a/docs/README.md b/docs/README.md index 8ac3274aef..6236b5e144 100644 --- a/docs/README.md +++ b/docs/README.md @@ -47,95 +47,95 @@ ## CircleTestCase - test_area ### self.assertAlmostEqual(SquareArea(2), math.pi * 2 * 2, точность=5) -> Проверяет вычисление площади круга с радиусом 2; ожидает результат, близкий к π*4. -### self.assertAlmostEqual(SquareArea(0), 0, точность=5) -> Подтверждает, что площадь круга с радиусом 0 равна 0. +> Проверяет вычисление площади круга с радиусом 2. +### self.assertAlmostEqual(SquareArea(0), "error") +> Проверяет вычисление площади круга с радиусом 0. Выводится **error** ### self.assertAlmostEqual(SquareArea(9223372036854775807), math.pi * 9223372036854775807 ** 2, точность=5) > Проверяет вычисление площади круга с очень большим радиусом, `9223372036854775807`. -### self.assertAlmostEqual(SquareArea(-8), «Обнаружено отрицательное число: Circle::area», точность=5) +### self.assertAlmostEqual(SquareArea(-8), "error") > Проверяет обработку отрицательного радиуса при вычислении площади. Выводится **error**. --- ## CircleTestCase - test_perimeter ### self.assertAlmostEqual(SquarePerimeter(2), 2 * math.pi * 2, точность=5) -> Проверяет периметр окружности с радиусом 2; ожидает результат, близкий к 4π. -### self.assertAlmostEqual(SquarePerimeter(0), 0, точность=5) -> Подтверждает, что периметр окружности с радиусом 0 равен 0. +> Проверяет вычисление периметра окружности с радиусом 2. +### self.assertAlmostEqual(SquarePerimeter(0), "error") +> Проверяет, что периметр окружности с радиусом 0 равен 0. Выводится **error** ### self.assertAlmostEqual(SquarePerimeter(9223372036854775807), 2 * math.pi * 9223372036854775807, точность=5) > Проверяет вычисление периметра окружности с очень большим радиусом. -### self.assertAlmostEqual(SquarePerimeter(-6), «Обнаружено отрицательное число: Circle::perimetr», точность=5) +### self.assertAlmostEqual(SquarePerimeter(-6), "error") > Проверяет обработку отрицательного радиуса при вычислении периметра. Выводится **error**. --- ## RectangleTestCase - test_area -### self.assertEqual(RectangleArea(-2, -6), «Обнаружено отрицательное число: Rectangle::area») -> Проверяет прямоугольную область с отрицательными размерами. Вывод **error**. -### self.assertEqual(RectangleArea(0, 5), 0) -> Проверяет, что площадь прямоугольника с одной стороной, равной 0, равна 0. +### self.assertEqual(RectangleArea(-2, -6), "error") +> Проверяет прямоугольную область с отрицательными размерами. Выводится **error** +### self.assertEqual(RectangleArea(0, 5), "error") +> Проверяет, что площадь прямоугольника с одной стороной, равной 0, равна 0. Выводится **error** ### self.assertEqual(RectangleArea(7, 2), 14) -> Подтверждает вычисление площади прямоугольника со сторонами 7x2; ожидается 14. +> Проверяет вычисление площади прямоугольника со сторонами 7x2; ожидается 14. ### self.assertEqual(RectangleArea(9223372036854775807, 9223372036854775807), 9223372036854775807 ** 2) > Проверяет расчет площади для очень больших размеров прямоугольника. --- ## RectangleTestCase - test_perimeter -### self.assertEqual(RectanglePerimeter(-2, -6), «Обнаружено отрицательное число: Rectangle::perimetr») -> Проверяет периметр прямоугольника с отрицательными размерами. Вывод **error**. -### self.assertEqual(RectanglePerimeter(0, 5), 10) -> Проверяет вычисление периметра с одной стороной, равной 0; ожидает 10. +### self.assertEqual(RectanglePerimeter(-2, -6), "error") +> Проверяет вычисление периметра прямоугольника с отрицательными размерами. Выводится **error** +### self.assertEqual(RectanglePerimeter(0, 5), "error") +> Проверяет вычисление периметра с одной стороной, равной 0. Выводится **error** ### self.assertEqual(RectanglePerimeter(7, 2), 18) -> Подтверждает расчёт периметра прямоугольника со сторонами 7 и 2. +> Проверяет расчёт периметра прямоугольника со сторонами 7 и 2. ### self.assertEqual(RectanglePerimeter(9223372036854775807, 9223372036854775807), 9223372036854775807*2 + 9223372036854775807*2) > Проверяет расчет периметра для очень больших размеров прямоугольника. --- ## SquareTestCase - test_area -### self.assertEqual(SquareArea(-5), «Обнаружено отрицательное число: Square::area») -> Проверяет площадь квадрата с отрицательной длиной стороны. Вывод **error**. -### self.assertEqual(SquareArea(0), 0) -> Проверяет вычисление площади квадрата со стороной 0,5. +### self.assertEqual(SquareArea(-5), "error") +> Проверяет вычисление площади квадрата с отрицательной длиной стороны. Выводится **error** +### self.assertEqual(SquareArea(0), "error") +> Проверяет вычисление площади квадрата со стороной 0. Выводится **error** ### self.assertEqual(SquareArea(9223372036854775807), 9223372036854775807 * 9223372036854775807) > Проверяет расчёт площади квадрата с очень большой длиной стороны. ### self.assertEqual(SquareArea(10), 100) -> Подтверждает расчёт площади квадрата со стороной 10. +> Проверяет расчёт площади квадрата со стороной 10. --- ## SquareTestCase - test_perimeter -### self.assertEqual(SquarePerimeter(-5), «Обнаружено отрицательное число: Square::perimetr») -> Проверяет периметр квадрата с отрицательной длиной стороны. Вывод: **error**. -### self.assertEqual(SquarePerimeter(0), 0) -> Проверяет вычисление периметра квадрата со стороной 0,5. +### self.assertEqual(SquarePerimeter(-5), "error") +> Проверяет вычисление периметра квадрата с отрицательной длиной стороны. Выводится **error** +### self.assertEqual(SquarePerimeter(0), "error") +> Проверяет вычисление периметра квадрата со стороной 0. Выводится **error** ### self.assertEqual(SquarePerimeter(9223372036854775807), 9223372036854775807 * 4) > Проверяет расчёт периметра для квадрата с очень большой длиной стороны. ### self.assertEqual(SquarePerimeter(10), 40) -> Подтверждает расчёт периметра квадрата со стороной 10. +> Проверяет расчёт периметра квадрата со стороной 10. --- ## TriangleTestCase - test_area -### self.assertEqual(TriangleArea(-4, -5), «Обнаружено отрицательное число: Triangle::area») -> Проверяет площадь треугольника с отрицательным основанием и высотой. Вывод: **error**. +### self.assertEqual(TriangleArea(-4, -5), "error") +> Проверяет площадь треугольника с отрицательным основанием и высотой. Выводится **error** ### self.assertEqual(TriangleArea(3, 6), 9) > Проверяет вычисление площади треугольника с основанием 3 и высотой 6. ### self.assertEqual(TriangleArea(9223372036854775807, 2), 9223372036854775807 * 2 / 2) > Проверяет вычисление площади для треугольника с очень большим основанием. ### self.assertEqual(TriangleArea(7, 8), 28) -> Подтверждает расчёт площади треугольника с основанием 7 и высотой 8. +> Проверяет расчёт площади треугольника с основанием 7 и высотой 8. --- ## TriangleTestCase - test_perimeter -### self.assertEqual(TrianglePerimeter(-4, -5, -6), «Обнаружено отрицательное число: Triangle::perimetr») -> Проверяет периметр треугольника с отрицательными длинами сторон. Вывод **error**. +### self.assertEqual(TrianglePerimeter(-4, -5, -6), "error") +> Проверяет вычисление периметра треугольника с отрицательными длинами сторон. Вывод **error**. ### self.assertEqual(TrianglePerimeter(3, 4, 5), 12) > Проверяет вычисление периметра треугольника со сторонами 3, 4, 5. -### self.assertEqual(TrianglePerimeter(6, 8, 10), 24) -> Подтверждает расчёт периметра треугольника со сторонами 6, 8, 10. +### self.assertEqual(TrianglePerimeter(6, 8, 15), "error") +> Проверяет расчёт периметра треугольника со сторонами 6, 8, 15. Проверка на a + b > c Выводится **error** ### self.assertEqual(TrianglePerimeter(9223372036854775807, 9223372036854775807, 9223372036854775807), 9223372036854775807 * 3) > Проверяет вычисление периметра треугольника с очень большими сторонами. diff --git a/rectangle.py b/rectangle.py index d04619706e..b96330c6bf 100644 --- a/rectangle.py +++ b/rectangle.py @@ -12,8 +12,13 @@ def RectangleArea(x, y): input: 2, 5 output: 10 ''' + + if x <= 0 or y <= 0: + return "error" + return x * y + def RectanglePerimeter(x, y): ''' Принимает два числа(стороны прямугольника) и возвращает их удвоенную сумму т.е. периметр прямоугольника @@ -28,4 +33,8 @@ def RectanglePerimeter(x, y): input: 2, 5 output: 14 ''' - return (x + y) * 2 + + if x <= 0 or y <= 0: + return "error" + + return (x + y) * 2 diff --git a/square.py b/square.py index 3843c17b54..3de8ab1d9d 100644 --- a/square.py +++ b/square.py @@ -12,6 +12,10 @@ def SquareArea(x): output: 49 ''' + + if x <= 0: + return "error" + return x * x def SquarePerimeter(x): @@ -28,5 +32,9 @@ def SquarePerimeter(x): output: 28 ''' - return 4 * x + + if x <= 0: + return "error" + + return 4 * x diff --git a/test.py b/test.py index d453df8e57..56b178effb 100644 --- a/test.py +++ b/test.py @@ -11,28 +11,28 @@ class CircleTestCase(unittest.TestCase): def test_area(self): self.assertAlmostEqual(CircleArea(2), math.pi * 2 * 2, places=5) - self.assertAlmostEqual(CircleArea(0), 0, places=5) + self.assertAlmostEqual(CircleArea(0), "error") self.assertAlmostEqual(CircleArea(9223372036854775807), math.pi * 9223372036854775807 ** 2, places=5) - self.assertAlmostEqual(CircleArea(-8), math.pi * -8 * -8, places=5) + self.assertAlmostEqual(CircleArea(-8), "error") def test_perimeter(self): self.assertAlmostEqual(CirclePerimeter(2), 2 * math.pi * 2, places=5) - self.assertAlmostEqual(CirclePerimeter(0), 0, places=5) + self.assertAlmostEqual(CirclePerimeter(0), "error") self.assertAlmostEqual(CirclePerimeter(9223372036854775807), 2 * math.pi * 9223372036854775807, places=5) - self.assertAlmostEqual(CirclePerimeter(-6), 2 * math.pi * -6, places=5) + self.assertAlmostEqual(CirclePerimeter(-6), "error") class SquareTestCase(unittest.TestCase): def test_area(self): - self.assertEqual(SquareArea(-5), 25) - self.assertEqual(SquareArea(0), 0) + self.assertEqual(SquareArea(-5), "error") + self.assertEqual(SquareArea(0), "error") self.assertEqual(SquareArea(9223372036854775807), 9223372036854775807**2) self.assertEqual(SquareArea(10), 100) def test_perimeter(self): - self.assertEqual(SquarePerimeter(-5), -20) - self.assertEqual(SquarePerimeter(0), 0) + self.assertEqual(SquarePerimeter(-5), "error") + self.assertEqual(SquarePerimeter(0), "error") self.assertEqual(SquarePerimeter(9223372036854775807), 9223372036854775807*4) self.assertEqual(SquarePerimeter(10), 40) @@ -40,14 +40,14 @@ def test_perimeter(self): class RectangleTestCase(unittest.TestCase): def test_area(self): - self.assertEqual(RectangleArea(-2, -6), 12) - self.assertEqual(RectangleArea(0, 5), 0) + self.assertEqual(RectangleArea(-2, -6), "error") + self.assertEqual(RectangleArea(0, 5), "error") self.assertEqual(RectangleArea(7, 2), 14) self.assertEqual(RectangleArea(9223372036854775807, 9223372036854775807), 9223372036854775807**2) def test_perimeter(self): - self.assertEqual(RectanglePerimeter(-5 , -7), -24) - self.assertEqual(RectanglePerimeter(0, 5), 10) + self.assertEqual(RectanglePerimeter(-5 , -7), "error") + self.assertEqual(RectanglePerimeter(0, 5), "error") self.assertEqual(RectanglePerimeter(7, 2), 18) self.assertEqual(RectanglePerimeter(9223372036854775807, 9223372036854775807), 9223372036854775807*2 + 9223372036854775807*2) @@ -56,16 +56,17 @@ def test_perimeter(self): class TriangleTestCase(unittest.TestCase): def test_area(self): - self.assertEqual(TriangleArea(-4, -5), 10) + self.assertEqual(TriangleArea(-4, -5), "error") self.assertEqual(TriangleArea(3, 6), 9) self.assertEqual(TriangleArea(9223372036854775807, 2), 9223372036854775807 * 2 / 2) self.assertEqual(TriangleArea(7, 8), 28) def test_perimeter(self): - self.assertEqual(TrianglePerimeter(-4, -5, -6), -15) + self.assertEqual(TrianglePerimeter(-4, -5, -6),"error") self.assertEqual(TrianglePerimeter(3, 4, 5), 12) - self.assertEqual(TrianglePerimeter(6, 8, 10), 24) + self.assertEqual(TrianglePerimeter(6, 8, 15), "error") self.assertEqual(TrianglePerimeter(9223372036854775807, 9223372036854775807, 9223372036854775807), 9223372036854775807*3) + if __name__ == "__main__": - unittest.main() \ No newline at end of file + unittest.main() diff --git a/triangle.py b/triangle.py index a0c31bdea8..6c16aac4ac 100644 --- a/triangle.py +++ b/triangle.py @@ -12,6 +12,9 @@ def TriangleArea(a, h): input: 2, 5 output: 5 ''' + if a <= 0 or h <= 0: + return "error" + return a * h / 2 def TrianglePerimeter(a, b, c): @@ -28,7 +31,12 @@ def TrianglePerimeter(a, b, c): Пример работы: input: 2, 5, 6 output: 13 + ''' + if a <= 0 or b <= 0 or c <= 0: + return "error" + + if (a + b) <= c or (a + c) <= b or (b + c) <= a: + return "error" - ''' return a + b + c