1
1
"""
2
2
Find the area of various geometric shapes
3
+ Wikipedia reference: https://en.wikipedia.org/wiki/Area
3
4
"""
4
- from math import pi , sqrt
5
+ from math import pi , sqrt , tan
5
6
6
7
7
8
def surface_area_cube (side_length : float ) -> float :
8
9
"""
9
10
Calculate the Surface Area of a Cube.
11
+
10
12
>>> surface_area_cube(1)
11
13
6
12
14
>>> surface_area_cube(1.6)
@@ -28,6 +30,7 @@ def surface_area_cube(side_length: float) -> float:
28
30
def surface_area_cuboid (length : float , breadth : float , height : float ) -> float :
29
31
"""
30
32
Calculate the Surface Area of a Cuboid.
33
+
31
34
>>> surface_area_cuboid(1, 2, 3)
32
35
22
33
36
>>> surface_area_cuboid(0, 0, 0)
@@ -57,6 +60,7 @@ def surface_area_sphere(radius: float) -> float:
57
60
Calculate the Surface Area of a Sphere.
58
61
Wikipedia reference: https://en.wikipedia.org/wiki/Sphere
59
62
Formula: 4 * pi * r^2
63
+
60
64
>>> surface_area_sphere(5)
61
65
314.1592653589793
62
66
>>> surface_area_sphere(1)
@@ -79,6 +83,7 @@ def surface_area_hemisphere(radius: float) -> float:
79
83
"""
80
84
Calculate the Surface Area of a Hemisphere.
81
85
Formula: 3 * pi * r^2
86
+
82
87
>>> surface_area_hemisphere(5)
83
88
235.61944901923448
84
89
>>> surface_area_hemisphere(1)
@@ -102,6 +107,7 @@ def surface_area_cone(radius: float, height: float) -> float:
102
107
Calculate the Surface Area of a Cone.
103
108
Wikipedia reference: https://en.wikipedia.org/wiki/Cone
104
109
Formula: pi * r * (r + (h ** 2 + r ** 2) ** 0.5)
110
+
105
111
>>> surface_area_cone(10, 24)
106
112
1130.9733552923256
107
113
>>> surface_area_cone(6, 8)
@@ -133,6 +139,7 @@ def surface_area_conical_frustum(
133
139
) -> float :
134
140
"""
135
141
Calculate the Surface Area of a Conical Frustum.
142
+
136
143
>>> surface_area_conical_frustum(1, 2, 3)
137
144
45.511728065337266
138
145
>>> surface_area_conical_frustum(4, 5, 6)
@@ -167,6 +174,7 @@ def surface_area_cylinder(radius: float, height: float) -> float:
167
174
Calculate the Surface Area of a Cylinder.
168
175
Wikipedia reference: https://en.wikipedia.org/wiki/Cylinder
169
176
Formula: 2 * pi * r * (h + r)
177
+
170
178
>>> surface_area_cylinder(7, 10)
171
179
747.6990515543707
172
180
>>> surface_area_cylinder(1.6, 2.6)
@@ -196,6 +204,7 @@ def surface_area_cylinder(radius: float, height: float) -> float:
196
204
def area_rectangle (length : float , width : float ) -> float :
197
205
"""
198
206
Calculate the area of a rectangle.
207
+
199
208
>>> area_rectangle(10, 20)
200
209
200
201
210
>>> area_rectangle(1.6, 2.6)
@@ -223,6 +232,7 @@ def area_rectangle(length: float, width: float) -> float:
223
232
def area_square (side_length : float ) -> float :
224
233
"""
225
234
Calculate the area of a square.
235
+
226
236
>>> area_square(10)
227
237
100
228
238
>>> area_square(0)
@@ -242,6 +252,7 @@ def area_square(side_length: float) -> float:
242
252
def area_triangle (base : float , height : float ) -> float :
243
253
"""
244
254
Calculate the area of a triangle given the base and height.
255
+
245
256
>>> area_triangle(10, 10)
246
257
50.0
247
258
>>> area_triangle(1.6, 2.6)
@@ -270,6 +281,7 @@ def area_triangle_three_sides(side1: float, side2: float, side3: float) -> float
270
281
"""
271
282
Calculate area of triangle when the length of 3 sides are known.
272
283
This function uses Heron's formula: https://en.wikipedia.org/wiki/Heron%27s_formula
284
+
273
285
>>> area_triangle_three_sides(5, 12, 13)
274
286
30.0
275
287
>>> area_triangle_three_sides(10, 11, 12)
@@ -316,6 +328,7 @@ def area_triangle_three_sides(side1: float, side2: float, side3: float) -> float
316
328
def area_parallelogram (base : float , height : float ) -> float :
317
329
"""
318
330
Calculate the area of a parallelogram.
331
+
319
332
>>> area_parallelogram(10, 20)
320
333
200
321
334
>>> area_parallelogram(1.6, 2.6)
@@ -343,6 +356,7 @@ def area_parallelogram(base: float, height: float) -> float:
343
356
def area_trapezium (base1 : float , base2 : float , height : float ) -> float :
344
357
"""
345
358
Calculate the area of a trapezium.
359
+
346
360
>>> area_trapezium(10, 20, 30)
347
361
450.0
348
362
>>> area_trapezium(1.6, 2.6, 3.6)
@@ -386,6 +400,7 @@ def area_trapezium(base1: float, base2: float, height: float) -> float:
386
400
def area_circle (radius : float ) -> float :
387
401
"""
388
402
Calculate the area of a circle.
403
+
389
404
>>> area_circle(20)
390
405
1256.6370614359173
391
406
>>> area_circle(1.6)
@@ -405,6 +420,7 @@ def area_circle(radius: float) -> float:
405
420
def area_ellipse (radius_x : float , radius_y : float ) -> float :
406
421
"""
407
422
Calculate the area of a ellipse.
423
+
408
424
>>> area_ellipse(10, 10)
409
425
314.1592653589793
410
426
>>> area_ellipse(10, 20)
@@ -434,6 +450,7 @@ def area_ellipse(radius_x: float, radius_y: float) -> float:
434
450
def area_rhombus (diagonal_1 : float , diagonal_2 : float ) -> float :
435
451
"""
436
452
Calculate the area of a rhombus.
453
+
437
454
>>> area_rhombus(10, 20)
438
455
100.0
439
456
>>> area_rhombus(1.6, 2.6)
@@ -458,6 +475,51 @@ def area_rhombus(diagonal_1: float, diagonal_2: float) -> float:
458
475
return 1 / 2 * diagonal_1 * diagonal_2
459
476
460
477
478
+ def area_reg_polygon (sides : int , length : float ) -> float :
479
+ """
480
+ Calculate the area of a regular polygon.
481
+ Wikipedia reference: https://en.wikipedia.org/wiki/Polygon#Regular_polygons
482
+ Formula: (n*s^2*cot(pi/n))/4
483
+
484
+ >>> area_reg_polygon(3, 10)
485
+ 43.301270189221945
486
+ >>> area_reg_polygon(4, 10)
487
+ 100.00000000000001
488
+ >>> area_reg_polygon(0, 0)
489
+ Traceback (most recent call last):
490
+ ...
491
+ ValueError: area_reg_polygon() only accepts integers greater than or equal to \
492
+ three as number of sides
493
+ >>> area_reg_polygon(-1, -2)
494
+ Traceback (most recent call last):
495
+ ...
496
+ ValueError: area_reg_polygon() only accepts integers greater than or equal to \
497
+ three as number of sides
498
+ >>> area_reg_polygon(5, -2)
499
+ Traceback (most recent call last):
500
+ ...
501
+ ValueError: area_reg_polygon() only accepts non-negative values as \
502
+ length of a side
503
+ >>> area_reg_polygon(-1, 2)
504
+ Traceback (most recent call last):
505
+ ...
506
+ ValueError: area_reg_polygon() only accepts integers greater than or equal to \
507
+ three as number of sides
508
+ """
509
+ if not isinstance (sides , int ) or sides < 3 :
510
+ raise ValueError (
511
+ "area_reg_polygon() only accepts integers greater than or \
512
+ equal to three as number of sides"
513
+ )
514
+ elif length < 0 :
515
+ raise ValueError (
516
+ "area_reg_polygon() only accepts non-negative values as \
517
+ length of a side"
518
+ )
519
+ return (sides * length ** 2 ) / (4 * tan (pi / sides ))
520
+ return (sides * length ** 2 ) / (4 * tan (pi / sides ))
521
+
522
+
461
523
if __name__ == "__main__" :
462
524
import doctest
463
525
@@ -481,3 +543,6 @@ def area_rhombus(diagonal_1: float, diagonal_2: float) -> float:
481
543
print (f"Cone: { surface_area_cone (10 , 20 ) = } " )
482
544
print (f"Conical Frustum: { surface_area_conical_frustum (10 , 20 , 30 ) = } " )
483
545
print (f"Cylinder: { surface_area_cylinder (10 , 20 ) = } " )
546
+ print (f"Equilateral Triangle: { area_reg_polygon (3 , 10 ) = } " )
547
+ print (f"Square: { area_reg_polygon (4 , 10 ) = } " )
548
+ print (f"Reqular Pentagon: { area_reg_polygon (5 , 10 ) = } " )
0 commit comments