77def surface_area_cube (side_length : float ) -> float :
88 """
99 Calculate the Surface Area of a Cube.
10-
1110 >>> surface_area_cube(1)
1211 6
12+ >>> surface_area_cube(1.6)
13+ 15.360000000000003
14+ >>> surface_area_cube(0)
15+ 0
1316 >>> surface_area_cube(3)
1417 54
1518 >>> surface_area_cube(-1)
@@ -22,16 +25,46 @@ def surface_area_cube(side_length: float) -> float:
2225 return 6 * side_length ** 2
2326
2427
28+ def surface_area_cuboid (length : float , breadth : float , height : float ) -> float :
29+ """
30+ Calculate the Surface Area of a Cuboid.
31+ >>> surface_area_cuboid(1, 2, 3)
32+ 22
33+ >>> surface_area_cuboid(0, 0, 0)
34+ 0
35+ >>> surface_area_cuboid(1.6, 2.6, 3.6)
36+ 38.56
37+ >>> surface_area_cuboid(-1, 2, 3)
38+ Traceback (most recent call last):
39+ ...
40+ ValueError: surface_area_cuboid() only accepts non-negative values
41+ >>> surface_area_cuboid(1, -2, 3)
42+ Traceback (most recent call last):
43+ ...
44+ ValueError: surface_area_cuboid() only accepts non-negative values
45+ >>> surface_area_cuboid(1, 2, -3)
46+ Traceback (most recent call last):
47+ ...
48+ ValueError: surface_area_cuboid() only accepts non-negative values
49+ """
50+ if length < 0 or breadth < 0 or height < 0 :
51+ raise ValueError ("surface_area_cuboid() only accepts non-negative values" )
52+ return 2 * ((length * breadth ) + (breadth * height ) + (length * height ))
53+
54+
2555def surface_area_sphere (radius : float ) -> float :
2656 """
2757 Calculate the Surface Area of a Sphere.
2858 Wikipedia reference: https://en.wikipedia.org/wiki/Sphere
2959 Formula: 4 * pi * r^2
30-
3160 >>> surface_area_sphere(5)
3261 314.1592653589793
3362 >>> surface_area_sphere(1)
3463 12.566370614359172
64+ >>> surface_area_sphere(1.6)
65+ 32.169908772759484
66+ >>> surface_area_sphere(0)
67+ 0.0
3568 >>> surface_area_sphere(-1)
3669 Traceback (most recent call last):
3770 ...
@@ -46,7 +79,6 @@ def surface_area_hemisphere(radius: float) -> float:
4679 """
4780 Calculate the Surface Area of a Hemisphere.
4881 Formula: 3 * pi * r^2
49-
5082 >>> surface_area_hemisphere(5)
5183 235.61944901923448
5284 >>> surface_area_hemisphere(1)
@@ -70,11 +102,14 @@ def surface_area_cone(radius: float, height: float) -> float:
70102 Calculate the Surface Area of a Cone.
71103 Wikipedia reference: https://en.wikipedia.org/wiki/Cone
72104 Formula: pi * r * (r + (h ** 2 + r ** 2) ** 0.5)
73-
74105 >>> surface_area_cone(10, 24)
75106 1130.9733552923256
76107 >>> surface_area_cone(6, 8)
77108 301.59289474462014
109+ >>> surface_area_cone(1.6, 2.6)
110+ 23.387862992395807
111+ >>> surface_area_cone(0, 0)
112+ 0.0
78113 >>> surface_area_cone(-1, -2)
79114 Traceback (most recent call last):
80115 ...
@@ -93,14 +128,51 @@ def surface_area_cone(radius: float, height: float) -> float:
93128 return pi * radius * (radius + (height ** 2 + radius ** 2 ) ** 0.5 )
94129
95130
131+ def surface_area_conical_frustum (
132+ radius_1 : float , radius_2 : float , height : float
133+ ) -> float :
134+ """
135+ Calculate the Surface Area of a Conical Frustum.
136+ >>> surface_area_conical_frustum(1, 2, 3)
137+ 45.511728065337266
138+ >>> surface_area_conical_frustum(4, 5, 6)
139+ 300.7913575056268
140+ >>> surface_area_conical_frustum(0, 0, 0)
141+ 0.0
142+ >>> surface_area_conical_frustum(1.6, 2.6, 3.6)
143+ 78.57907060751548
144+ >>> surface_area_conical_frustum(-1, 2, 3)
145+ Traceback (most recent call last):
146+ ...
147+ ValueError: surface_area_conical_frustum() only accepts non-negative values
148+ >>> surface_area_conical_frustum(1, -2, 3)
149+ Traceback (most recent call last):
150+ ...
151+ ValueError: surface_area_conical_frustum() only accepts non-negative values
152+ >>> surface_area_conical_frustum(1, 2, -3)
153+ Traceback (most recent call last):
154+ ...
155+ ValueError: surface_area_conical_frustum() only accepts non-negative values
156+ """
157+ if radius_1 < 0 or radius_2 < 0 or height < 0 :
158+ raise ValueError (
159+ "surface_area_conical_frustum() only accepts non-negative values"
160+ )
161+ slant_height = (height ** 2 + (radius_1 - radius_2 ) ** 2 ) ** 0.5
162+ return pi * ((slant_height * (radius_1 + radius_2 )) + radius_1 ** 2 + radius_2 ** 2 )
163+
164+
96165def surface_area_cylinder (radius : float , height : float ) -> float :
97166 """
98167 Calculate the Surface Area of a Cylinder.
99168 Wikipedia reference: https://en.wikipedia.org/wiki/Cylinder
100169 Formula: 2 * pi * r * (h + r)
101-
102170 >>> surface_area_cylinder(7, 10)
103171 747.6990515543707
172+ >>> surface_area_cylinder(1.6, 2.6)
173+ 42.22300526424682
174+ >>> surface_area_cylinder(0, 0)
175+ 0.0
104176 >>> surface_area_cylinder(6, 8)
105177 527.7875658030853
106178 >>> surface_area_cylinder(-1, -2)
@@ -124,9 +196,12 @@ def surface_area_cylinder(radius: float, height: float) -> float:
124196def area_rectangle (length : float , width : float ) -> float :
125197 """
126198 Calculate the area of a rectangle.
127-
128199 >>> area_rectangle(10, 20)
129200 200
201+ >>> area_rectangle(1.6, 2.6)
202+ 4.16
203+ >>> area_rectangle(0, 0)
204+ 0
130205 >>> area_rectangle(-1, -2)
131206 Traceback (most recent call last):
132207 ...
@@ -148,9 +223,12 @@ def area_rectangle(length: float, width: float) -> float:
148223def area_square (side_length : float ) -> float :
149224 """
150225 Calculate the area of a square.
151-
152226 >>> area_square(10)
153227 100
228+ >>> area_square(0)
229+ 0
230+ >>> area_square(1.6)
231+ 2.5600000000000005
154232 >>> area_square(-1)
155233 Traceback (most recent call last):
156234 ...
@@ -164,9 +242,12 @@ def area_square(side_length: float) -> float:
164242def area_triangle (base : float , height : float ) -> float :
165243 """
166244 Calculate the area of a triangle given the base and height.
167-
168245 >>> area_triangle(10, 10)
169246 50.0
247+ >>> area_triangle(1.6, 2.6)
248+ 2.08
249+ >>> area_triangle(0, 0)
250+ 0.0
170251 >>> area_triangle(-1, -2)
171252 Traceback (most recent call last):
172253 ...
@@ -188,13 +269,15 @@ def area_triangle(base: float, height: float) -> float:
188269def area_triangle_three_sides (side1 : float , side2 : float , side3 : float ) -> float :
189270 """
190271 Calculate area of triangle when the length of 3 sides are known.
191-
192272 This function uses Heron's formula: https://en.wikipedia.org/wiki/Heron%27s_formula
193-
194273 >>> area_triangle_three_sides(5, 12, 13)
195274 30.0
196275 >>> area_triangle_three_sides(10, 11, 12)
197276 51.521233486786784
277+ >>> area_triangle_three_sides(0, 0, 0)
278+ 0.0
279+ >>> area_triangle_three_sides(1.6, 2.6, 3.6)
280+ 1.8703742940919619
198281 >>> area_triangle_three_sides(-1, -2, -1)
199282 Traceback (most recent call last):
200283 ...
@@ -233,9 +316,12 @@ def area_triangle_three_sides(side1: float, side2: float, side3: float) -> float
233316def area_parallelogram (base : float , height : float ) -> float :
234317 """
235318 Calculate the area of a parallelogram.
236-
237319 >>> area_parallelogram(10, 20)
238320 200
321+ >>> area_parallelogram(1.6, 2.6)
322+ 4.16
323+ >>> area_parallelogram(0, 0)
324+ 0
239325 >>> area_parallelogram(-1, -2)
240326 Traceback (most recent call last):
241327 ...
@@ -257,9 +343,12 @@ def area_parallelogram(base: float, height: float) -> float:
257343def area_trapezium (base1 : float , base2 : float , height : float ) -> float :
258344 """
259345 Calculate the area of a trapezium.
260-
261346 >>> area_trapezium(10, 20, 30)
262347 450.0
348+ >>> area_trapezium(1.6, 2.6, 3.6)
349+ 7.5600000000000005
350+ >>> area_trapezium(0, 0, 0)
351+ 0.0
263352 >>> area_trapezium(-1, -2, -3)
264353 Traceback (most recent call last):
265354 ...
@@ -297,9 +386,12 @@ def area_trapezium(base1: float, base2: float, height: float) -> float:
297386def area_circle (radius : float ) -> float :
298387 """
299388 Calculate the area of a circle.
300-
301389 >>> area_circle(20)
302390 1256.6370614359173
391+ >>> area_circle(1.6)
392+ 8.042477193189871
393+ >>> area_circle(0)
394+ 0.0
303395 >>> area_circle(-1)
304396 Traceback (most recent call last):
305397 ...
@@ -313,11 +405,14 @@ def area_circle(radius: float) -> float:
313405def area_ellipse (radius_x : float , radius_y : float ) -> float :
314406 """
315407 Calculate the area of a ellipse.
316-
317408 >>> area_ellipse(10, 10)
318409 314.1592653589793
319410 >>> area_ellipse(10, 20)
320411 628.3185307179587
412+ >>> area_ellipse(0, 0)
413+ 0.0
414+ >>> area_ellipse(1.6, 2.6)
415+ 13.06902543893354
321416 >>> area_ellipse(-10, 20)
322417 Traceback (most recent call last):
323418 ...
@@ -339,9 +434,12 @@ def area_ellipse(radius_x: float, radius_y: float) -> float:
339434def area_rhombus (diagonal_1 : float , diagonal_2 : float ) -> float :
340435 """
341436 Calculate the area of a rhombus.
342-
343437 >>> area_rhombus(10, 20)
344438 100.0
439+ >>> area_rhombus(1.6, 2.6)
440+ 2.08
441+ >>> area_rhombus(0, 0)
442+ 0.0
345443 >>> area_rhombus(-1, -2)
346444 Traceback (most recent call last):
347445 ...
@@ -374,9 +472,12 @@ def area_rhombus(diagonal_1: float, diagonal_2: float) -> float:
374472 print (f"Rhombus: { area_rhombus (10 , 20 ) = } " )
375473 print (f"Trapezium: { area_trapezium (10 , 20 , 30 ) = } " )
376474 print (f"Circle: { area_circle (20 ) = } " )
475+ print (f"Ellipse: { area_ellipse (10 , 20 ) = } " )
377476 print ("\n Surface Areas of various geometric shapes: \n " )
378477 print (f"Cube: { surface_area_cube (20 ) = } " )
478+ print (f"Cuboid: { surface_area_cuboid (10 , 20 , 30 ) = } " )
379479 print (f"Sphere: { surface_area_sphere (20 ) = } " )
380480 print (f"Hemisphere: { surface_area_hemisphere (20 ) = } " )
381481 print (f"Cone: { surface_area_cone (10 , 20 ) = } " )
482+ print (f"Conical Frustum: { surface_area_conical_frustum (10 , 20 , 30 ) = } " )
382483 print (f"Cylinder: { surface_area_cylinder (10 , 20 ) = } " )
0 commit comments