@@ -42,6 +42,85 @@ def surface_area_sphere(radius: float) -> float:
42
42
return 4 * pi * radius ** 2
43
43
44
44
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
+
45
124
def area_rectangle (length : float , width : float ) -> float :
46
125
"""
47
126
Calculate the area of a rectangle.
@@ -280,9 +359,12 @@ def area_rhombus(diagonal_1: float, diagonal_2: float) -> float:
280
359
print (f"Triangle: { area_triangle (10 , 10 ) = } " )
281
360
print (f"Triangle: { area_triangle_three_sides (5 , 12 , 13 ) = } " )
282
361
print (f"Parallelogram: { area_parallelogram (10 , 20 ) = } " )
362
+ print (f"Rhombus: { area_rhombus (10 , 20 ) = } " )
283
363
print (f"Trapezium: { area_trapezium (10 , 20 , 30 ) = } " )
284
364
print (f"Circle: { area_circle (20 ) = } " )
285
365
print ("\n Surface Areas of various geometric shapes: \n " )
286
366
print (f"Cube: { surface_area_cube (20 ) = } " )
287
367
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