Skip to content

Commit 121dddc

Browse files
authored
Update maths/area.py (TheAlgorithms#2501)
the parameters of geometric shapes should be non-negative values
1 parent 1b637ba commit 121dddc

File tree

1 file changed

+104
-8
lines changed

1 file changed

+104
-8
lines changed

maths/area.py

+104-8
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,13 @@ def surface_area_cube(side_length: float) -> float:
1212
6
1313
>>> surface_area_cube(3)
1414
54
15+
>>> surface_area_cube(-1)
16+
Traceback (most recent call last):
17+
...
18+
ValueError: surface_area_cube() only accepts non-negative values
1519
"""
20+
if side_length < 0:
21+
raise ValueError("surface_area_cube() only accepts non-negative values")
1622
return 6 * side_length ** 2
1723

1824

@@ -26,17 +32,37 @@ def surface_area_sphere(radius: float) -> float:
2632
314.1592653589793
2733
>>> surface_area_sphere(1)
2834
12.566370614359172
35+
>>> surface_area_sphere(-1)
36+
Traceback (most recent call last):
37+
...
38+
ValueError: surface_area_sphere() only accepts non-negative values
2939
"""
40+
if radius < 0:
41+
raise ValueError("surface_area_sphere() only accepts non-negative values")
3042
return 4 * pi * radius ** 2
3143

3244

3345
def area_rectangle(length: float, width: float) -> float:
3446
"""
3547
Calculate the area of a rectangle
3648
37-
>>> area_rectangle(10,20)
49+
>>> area_rectangle(10, 20)
3850
200
39-
"""
51+
>>> area_rectangle(-1, -2)
52+
Traceback (most recent call last):
53+
...
54+
ValueError: area_rectangle() only accepts non-negative values
55+
>>> area_rectangle(1, -2)
56+
Traceback (most recent call last):
57+
...
58+
ValueError: area_rectangle() only accepts non-negative values
59+
>>> area_rectangle(-1, 2)
60+
Traceback (most recent call last):
61+
...
62+
ValueError: area_rectangle() only accepts non-negative values
63+
"""
64+
if length < 0 or width < 0:
65+
raise ValueError("area_rectangle() only accepts non-negative values")
4066
return length * width
4167

4268

@@ -46,37 +72,101 @@ def area_square(side_length: float) -> float:
4672
4773
>>> area_square(10)
4874
100
75+
>>> area_square(-1)
76+
Traceback (most recent call last):
77+
...
78+
ValueError: area_square() only accepts non-negative values
4979
"""
80+
if side_length < 0:
81+
raise ValueError("area_square() only accepts non-negative values")
5082
return side_length ** 2
5183

5284

5385
def area_triangle(base: float, height: float) -> float:
5486
"""
5587
Calculate the area of a triangle
5688
57-
>>> area_triangle(10,10)
89+
>>> area_triangle(10, 10)
5890
50.0
59-
"""
91+
>>> area_triangle(-1, -2)
92+
Traceback (most recent call last):
93+
...
94+
ValueError: area_triangle() only accepts non-negative values
95+
>>> area_triangle(1, -2)
96+
Traceback (most recent call last):
97+
...
98+
ValueError: area_triangle() only accepts non-negative values
99+
>>> area_triangle(-1, 2)
100+
Traceback (most recent call last):
101+
...
102+
ValueError: area_triangle() only accepts non-negative values
103+
"""
104+
if base < 0 or height < 0:
105+
raise ValueError("area_triangle() only accepts non-negative values")
60106
return (base * height) / 2
61107

62108

63109
def area_parallelogram(base: float, height: float) -> float:
64110
"""
65111
Calculate the area of a parallelogram
66112
67-
>>> area_parallelogram(10,20)
113+
>>> area_parallelogram(10, 20)
68114
200
69-
"""
115+
>>> area_parallelogram(-1, -2)
116+
Traceback (most recent call last):
117+
...
118+
ValueError: area_parallelogram() only accepts non-negative values
119+
>>> area_parallelogram(1, -2)
120+
Traceback (most recent call last):
121+
...
122+
ValueError: area_parallelogram() only accepts non-negative values
123+
>>> area_parallelogram(-1, 2)
124+
Traceback (most recent call last):
125+
...
126+
ValueError: area_parallelogram() only accepts non-negative values
127+
"""
128+
if base < 0 or height < 0:
129+
raise ValueError("area_parallelogram() only accepts non-negative values")
70130
return base * height
71131

72132

73133
def area_trapezium(base1: float, base2: float, height: float) -> float:
74134
"""
75135
Calculate the area of a trapezium
76136
77-
>>> area_trapezium(10,20,30)
137+
>>> area_trapezium(10, 20, 30)
78138
450.0
79-
"""
139+
>>> area_trapezium(-1, -2, -3)
140+
Traceback (most recent call last):
141+
...
142+
ValueError: area_trapezium() only accepts non-negative values
143+
>>> area_trapezium(-1, 2, 3)
144+
Traceback (most recent call last):
145+
...
146+
ValueError: area_trapezium() only accepts non-negative values
147+
>>> area_trapezium(1, -2, 3)
148+
Traceback (most recent call last):
149+
...
150+
ValueError: area_trapezium() only accepts non-negative values
151+
>>> area_trapezium(1, 2, -3)
152+
Traceback (most recent call last):
153+
...
154+
ValueError: area_trapezium() only accepts non-negative values
155+
>>> area_trapezium(-1, -2, 3)
156+
Traceback (most recent call last):
157+
...
158+
ValueError: area_trapezium() only accepts non-negative values
159+
>>> area_trapezium(1, -2, -3)
160+
Traceback (most recent call last):
161+
...
162+
ValueError: area_trapezium() only accepts non-negative values
163+
>>> area_trapezium(-1, 2, -3)
164+
Traceback (most recent call last):
165+
...
166+
ValueError: area_trapezium() only accepts non-negative values
167+
"""
168+
if base1 < 0 or base2 < 0 or height < 0:
169+
raise ValueError("area_trapezium() only accepts non-negative values")
80170
return 1 / 2 * (base1 + base2) * height
81171

82172

@@ -86,7 +176,13 @@ def area_circle(radius: float) -> float:
86176
87177
>>> area_circle(20)
88178
1256.6370614359173
179+
>>> area_circle(-1)
180+
Traceback (most recent call last):
181+
...
182+
ValueError: area_circle() only accepts non-negative values
89183
"""
184+
if radius < 0:
185+
raise ValueError("area_circle() only accepts non-negative values")
90186
return pi * radius ** 2
91187

92188

0 commit comments

Comments
 (0)