Skip to content

Commit d561de0

Browse files
Add surface area of cone and cylinder and hemisphere (#5220)
* Update area.py * Update area.py * Update area.py * Update area.py * Update area.py * Update area.py * Update area.py * Update area.py
1 parent 9b4cb05 commit d561de0

File tree

1 file changed

+83
-1
lines changed

1 file changed

+83
-1
lines changed

maths/area.py

+83-1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,85 @@ def surface_area_sphere(radius: float) -> float:
4242
return 4 * pi * radius ** 2
4343

4444

45+
def surface_area_hemisphere(radius: float) -> float:
46+
"""
47+
Calculate the Surface Area of a Hemisphere.
48+
Formula: 3 * pi * r^2
49+
50+
>>> surface_area_hemisphere(5)
51+
235.61944901923448
52+
>>> surface_area_hemisphere(1)
53+
9.42477796076938
54+
>>> surface_area_hemisphere(0)
55+
0.0
56+
>>> surface_area_hemisphere(1.1)
57+
11.40398133253095
58+
>>> surface_area_hemisphere(-1)
59+
Traceback (most recent call last):
60+
...
61+
ValueError: surface_area_hemisphere() only accepts non-negative values
62+
"""
63+
if radius < 0:
64+
raise ValueError("surface_area_hemisphere() only accepts non-negative values")
65+
return 3 * pi * radius ** 2
66+
67+
68+
def surface_area_cone(radius: float, height: float) -> float:
69+
"""
70+
Calculate the Surface Area of a Cone.
71+
Wikipedia reference: https://en.wikipedia.org/wiki/Cone
72+
Formula: pi * r * (r + (h ** 2 + r ** 2) ** 0.5)
73+
74+
>>> surface_area_cone(10, 24)
75+
1130.9733552923256
76+
>>> surface_area_cone(6, 8)
77+
301.59289474462014
78+
>>> surface_area_cone(-1, -2)
79+
Traceback (most recent call last):
80+
...
81+
ValueError: surface_area_cone() only accepts non-negative values
82+
>>> surface_area_cone(1, -2)
83+
Traceback (most recent call last):
84+
...
85+
ValueError: surface_area_cone() only accepts non-negative values
86+
>>> surface_area_cone(-1, 2)
87+
Traceback (most recent call last):
88+
...
89+
ValueError: surface_area_cone() only accepts non-negative values
90+
"""
91+
if radius < 0 or height < 0:
92+
raise ValueError("surface_area_cone() only accepts non-negative values")
93+
return pi * radius * (radius + (height ** 2 + radius ** 2) ** 0.5)
94+
95+
96+
def surface_area_cylinder(radius: float, height: float) -> float:
97+
"""
98+
Calculate the Surface Area of a Cylinder.
99+
Wikipedia reference: https://en.wikipedia.org/wiki/Cylinder
100+
Formula: 2 * pi * r * (h + r)
101+
102+
>>> surface_area_cylinder(7, 10)
103+
747.6990515543707
104+
>>> surface_area_cylinder(6, 8)
105+
527.7875658030853
106+
>>> surface_area_cylinder(-1, -2)
107+
Traceback (most recent call last):
108+
...
109+
ValueError: surface_area_cylinder() only accepts non-negative values
110+
>>> surface_area_cylinder(1, -2)
111+
Traceback (most recent call last):
112+
...
113+
ValueError: surface_area_cylinder() only accepts non-negative values
114+
>>> surface_area_cylinder(-1, 2)
115+
Traceback (most recent call last):
116+
...
117+
ValueError: surface_area_cylinder() only accepts non-negative values
118+
"""
119+
if radius < 0 or height < 0:
120+
raise ValueError("surface_area_cylinder() only accepts non-negative values")
121+
return 2 * pi * radius * (height + radius)
122+
123+
45124
def area_rectangle(length: float, width: float) -> float:
46125
"""
47126
Calculate the area of a rectangle.
@@ -280,9 +359,12 @@ def area_rhombus(diagonal_1: float, diagonal_2: float) -> float:
280359
print(f"Triangle: {area_triangle(10, 10) = }")
281360
print(f"Triangle: {area_triangle_three_sides(5, 12, 13) = }")
282361
print(f"Parallelogram: {area_parallelogram(10, 20) = }")
362+
print(f"Rhombus: {area_rhombus(10, 20) = }")
283363
print(f"Trapezium: {area_trapezium(10, 20, 30) = }")
284364
print(f"Circle: {area_circle(20) = }")
285365
print("\nSurface Areas of various geometric shapes: \n")
286366
print(f"Cube: {surface_area_cube(20) = }")
287367
print(f"Sphere: {surface_area_sphere(20) = }")
288-
print(f"Rhombus: {area_rhombus(10, 20) = }")
368+
print(f"Hemisphere: {surface_area_hemisphere(20) = }")
369+
print(f"Cone: {surface_area_cone(10, 20) = }")
370+
print(f"Cylinder: {surface_area_cylinder(10, 20) = }")

0 commit comments

Comments
 (0)