Skip to content

Commit 8eb9c2f

Browse files
authored
Add surface area of cuboid, conical frustum
1 parent a0b0f41 commit 8eb9c2f

File tree

1 file changed

+55
-15
lines changed

1 file changed

+55
-15
lines changed

maths/area.py

Lines changed: 55 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
def surface_area_cube(side_length: float) -> float:
88
"""
99
Calculate the Surface Area of a Cube.
10-
1110
>>> surface_area_cube(1)
1211
6
1312
>>> surface_area_cube(3)
@@ -22,12 +21,34 @@ def surface_area_cube(side_length: float) -> float:
2221
return 6 * side_length**2
2322

2423

24+
def surface_area_cuboid(length: float, breadth: float, height: float) -> float:
25+
"""
26+
Calculate the Surface Area of a Cuboid.
27+
>>> surface_area_cuboid(1, 2, 3)
28+
22
29+
>>> surface_area_cuboid(-1, 2, 3)
30+
Traceback (most recent call last):
31+
...
32+
ValueError: surface_area_cuboid() only accepts non-negative values
33+
>>> surface_area_cuboid(1, -2, 3)
34+
Traceback (most recent call last):
35+
...
36+
ValueError: surface_area_cuboid() only accepts non-negative values
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+
"""
42+
if length < 0 or breadth < 0 or height < 0:
43+
raise ValueError("surface_area_cuboid() only accepts non-negative values")
44+
return 2 * ((length * breadth) + (breadth * height) + (length * height))
45+
46+
2547
def surface_area_sphere(radius: float) -> float:
2648
"""
2749
Calculate the Surface Area of a Sphere.
2850
Wikipedia reference: https://en.wikipedia.org/wiki/Sphere
2951
Formula: 4 * pi * r^2
30-
3152
>>> surface_area_sphere(5)
3253
314.1592653589793
3354
>>> surface_area_sphere(1)
@@ -46,7 +67,6 @@ def surface_area_hemisphere(radius: float) -> float:
4667
"""
4768
Calculate the Surface Area of a Hemisphere.
4869
Formula: 3 * pi * r^2
49-
5070
>>> surface_area_hemisphere(5)
5171
235.61944901923448
5272
>>> surface_area_hemisphere(1)
@@ -70,7 +90,6 @@ def surface_area_cone(radius: float, height: float) -> float:
7090
Calculate the Surface Area of a Cone.
7191
Wikipedia reference: https://en.wikipedia.org/wiki/Cone
7292
Formula: pi * r * (r + (h ** 2 + r ** 2) ** 0.5)
73-
7493
>>> surface_area_cone(10, 24)
7594
1130.9733552923256
7695
>>> surface_area_cone(6, 8)
@@ -93,12 +112,41 @@ def surface_area_cone(radius: float, height: float) -> float:
93112
return pi * radius * (radius + (height**2 + radius**2) ** 0.5)
94113

95114

115+
def surface_area_conical_frustum(
116+
radius_1: float, radius_2: float, height: float
117+
) -> float:
118+
"""
119+
Calculate the Surface Area of a Conical Frustum.
120+
>>> surface_area_conical_frustum(1, 2, 3)
121+
45.511728065337266
122+
>>> surface_area_conical_frustum(4, 5, 6)
123+
300.7913575056268
124+
>>> surface_area_conical_frustum(-1, 2, 3)
125+
Traceback (most recent call last):
126+
...
127+
ValueError: surface_area_conical_frustum() only accepts non-negative values
128+
>>> surface_area_conical_frustum(1, -2, 3)
129+
Traceback (most recent call last):
130+
...
131+
ValueError: surface_area_conical_frustum() only accepts non-negative values
132+
>>> surface_area_conical_frustum(1, 2, -3)
133+
Traceback (most recent call last):
134+
...
135+
ValueError: surface_area_conical_frustum() only accepts non-negative values
136+
"""
137+
if radius_1 < 0 or radius_2 < 0 or height < 0:
138+
raise ValueError(
139+
"surface_area_conical_frustum() only accepts non-negative values"
140+
)
141+
slant_height = (height**2 + (radius_1 - radius_2) ** 2) ** 0.5
142+
return pi * ((slant_height * (radius_1 + radius_2)) + radius_1**2 + radius_2**2)
143+
144+
96145
def surface_area_cylinder(radius: float, height: float) -> float:
97146
"""
98147
Calculate the Surface Area of a Cylinder.
99148
Wikipedia reference: https://en.wikipedia.org/wiki/Cylinder
100149
Formula: 2 * pi * r * (h + r)
101-
102150
>>> surface_area_cylinder(7, 10)
103151
747.6990515543707
104152
>>> surface_area_cylinder(6, 8)
@@ -124,7 +172,6 @@ def surface_area_cylinder(radius: float, height: float) -> float:
124172
def area_rectangle(length: float, width: float) -> float:
125173
"""
126174
Calculate the area of a rectangle.
127-
128175
>>> area_rectangle(10, 20)
129176
200
130177
>>> area_rectangle(-1, -2)
@@ -148,7 +195,6 @@ def area_rectangle(length: float, width: float) -> float:
148195
def area_square(side_length: float) -> float:
149196
"""
150197
Calculate the area of a square.
151-
152198
>>> area_square(10)
153199
100
154200
>>> area_square(-1)
@@ -164,7 +210,6 @@ def area_square(side_length: float) -> float:
164210
def area_triangle(base: float, height: float) -> float:
165211
"""
166212
Calculate the area of a triangle given the base and height.
167-
168213
>>> area_triangle(10, 10)
169214
50.0
170215
>>> area_triangle(-1, -2)
@@ -188,9 +233,7 @@ def area_triangle(base: float, height: float) -> float:
188233
def area_triangle_three_sides(side1: float, side2: float, side3: float) -> float:
189234
"""
190235
Calculate area of triangle when the length of 3 sides are known.
191-
192236
This function uses Heron's formula: https://en.wikipedia.org/wiki/Heron%27s_formula
193-
194237
>>> area_triangle_three_sides(5, 12, 13)
195238
30.0
196239
>>> area_triangle_three_sides(10, 11, 12)
@@ -233,7 +276,6 @@ def area_triangle_three_sides(side1: float, side2: float, side3: float) -> float
233276
def area_parallelogram(base: float, height: float) -> float:
234277
"""
235278
Calculate the area of a parallelogram.
236-
237279
>>> area_parallelogram(10, 20)
238280
200
239281
>>> area_parallelogram(-1, -2)
@@ -257,7 +299,6 @@ def area_parallelogram(base: float, height: float) -> float:
257299
def area_trapezium(base1: float, base2: float, height: float) -> float:
258300
"""
259301
Calculate the area of a trapezium.
260-
261302
>>> area_trapezium(10, 20, 30)
262303
450.0
263304
>>> area_trapezium(-1, -2, -3)
@@ -297,7 +338,6 @@ def area_trapezium(base1: float, base2: float, height: float) -> float:
297338
def area_circle(radius: float) -> float:
298339
"""
299340
Calculate the area of a circle.
300-
301341
>>> area_circle(20)
302342
1256.6370614359173
303343
>>> area_circle(-1)
@@ -313,7 +353,6 @@ def area_circle(radius: float) -> float:
313353
def area_ellipse(radius_x: float, radius_y: float) -> float:
314354
"""
315355
Calculate the area of a ellipse.
316-
317356
>>> area_ellipse(10, 10)
318357
314.1592653589793
319358
>>> area_ellipse(10, 20)
@@ -339,7 +378,6 @@ def area_ellipse(radius_x: float, radius_y: float) -> float:
339378
def area_rhombus(diagonal_1: float, diagonal_2: float) -> float:
340379
"""
341380
Calculate the area of a rhombus.
342-
343381
>>> area_rhombus(10, 20)
344382
100.0
345383
>>> area_rhombus(-1, -2)
@@ -376,7 +414,9 @@ def area_rhombus(diagonal_1: float, diagonal_2: float) -> float:
376414
print(f"Circle: {area_circle(20) = }")
377415
print("\nSurface Areas of various geometric shapes: \n")
378416
print(f"Cube: {surface_area_cube(20) = }")
417+
print(f"Cuboid: {surface_area_cuboid(10, 20, 30) = }")
379418
print(f"Sphere: {surface_area_sphere(20) = }")
380419
print(f"Hemisphere: {surface_area_hemisphere(20) = }")
381420
print(f"Cone: {surface_area_cone(10, 20) = }")
421+
print(f"Conical Frustum: {surface_area_conical_frustum(10, 20, 30) = }")
382422
print(f"Cylinder: {surface_area_cylinder(10, 20) = }")

0 commit comments

Comments
 (0)