mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-02-20 08:12:02 +00:00
Included area of n sided regular polygon (#7438)
* Included area of n sided regular polygon Added a function to calculate the area of n sided regular polygons * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code standard fixes as per PR comments * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
parent
c31ef5e778
commit
505c5e20fa
|
@ -1,12 +1,14 @@
|
||||||
"""
|
"""
|
||||||
Find the area of various geometric shapes
|
Find the area of various geometric shapes
|
||||||
|
Wikipedia reference: https://en.wikipedia.org/wiki/Area
|
||||||
"""
|
"""
|
||||||
from math import pi, sqrt
|
from math import pi, sqrt, tan
|
||||||
|
|
||||||
|
|
||||||
def surface_area_cube(side_length: float) -> float:
|
def surface_area_cube(side_length: float) -> float:
|
||||||
"""
|
"""
|
||||||
Calculate the Surface Area of a Cube.
|
Calculate the Surface Area of a Cube.
|
||||||
|
|
||||||
>>> surface_area_cube(1)
|
>>> surface_area_cube(1)
|
||||||
6
|
6
|
||||||
>>> surface_area_cube(1.6)
|
>>> surface_area_cube(1.6)
|
||||||
|
@ -28,6 +30,7 @@ def surface_area_cube(side_length: float) -> float:
|
||||||
def surface_area_cuboid(length: float, breadth: float, height: float) -> float:
|
def surface_area_cuboid(length: float, breadth: float, height: float) -> float:
|
||||||
"""
|
"""
|
||||||
Calculate the Surface Area of a Cuboid.
|
Calculate the Surface Area of a Cuboid.
|
||||||
|
|
||||||
>>> surface_area_cuboid(1, 2, 3)
|
>>> surface_area_cuboid(1, 2, 3)
|
||||||
22
|
22
|
||||||
>>> surface_area_cuboid(0, 0, 0)
|
>>> surface_area_cuboid(0, 0, 0)
|
||||||
|
@ -57,6 +60,7 @@ def surface_area_sphere(radius: float) -> float:
|
||||||
Calculate the Surface Area of a Sphere.
|
Calculate the Surface Area of a Sphere.
|
||||||
Wikipedia reference: https://en.wikipedia.org/wiki/Sphere
|
Wikipedia reference: https://en.wikipedia.org/wiki/Sphere
|
||||||
Formula: 4 * pi * r^2
|
Formula: 4 * pi * r^2
|
||||||
|
|
||||||
>>> surface_area_sphere(5)
|
>>> surface_area_sphere(5)
|
||||||
314.1592653589793
|
314.1592653589793
|
||||||
>>> surface_area_sphere(1)
|
>>> surface_area_sphere(1)
|
||||||
|
@ -79,6 +83,7 @@ def surface_area_hemisphere(radius: float) -> float:
|
||||||
"""
|
"""
|
||||||
Calculate the Surface Area of a Hemisphere.
|
Calculate the Surface Area of a Hemisphere.
|
||||||
Formula: 3 * pi * r^2
|
Formula: 3 * pi * r^2
|
||||||
|
|
||||||
>>> surface_area_hemisphere(5)
|
>>> surface_area_hemisphere(5)
|
||||||
235.61944901923448
|
235.61944901923448
|
||||||
>>> surface_area_hemisphere(1)
|
>>> surface_area_hemisphere(1)
|
||||||
|
@ -102,6 +107,7 @@ def surface_area_cone(radius: float, height: float) -> float:
|
||||||
Calculate the Surface Area of a Cone.
|
Calculate the Surface Area of a Cone.
|
||||||
Wikipedia reference: https://en.wikipedia.org/wiki/Cone
|
Wikipedia reference: https://en.wikipedia.org/wiki/Cone
|
||||||
Formula: pi * r * (r + (h ** 2 + r ** 2) ** 0.5)
|
Formula: pi * r * (r + (h ** 2 + r ** 2) ** 0.5)
|
||||||
|
|
||||||
>>> surface_area_cone(10, 24)
|
>>> surface_area_cone(10, 24)
|
||||||
1130.9733552923256
|
1130.9733552923256
|
||||||
>>> surface_area_cone(6, 8)
|
>>> surface_area_cone(6, 8)
|
||||||
|
@ -133,6 +139,7 @@ def surface_area_conical_frustum(
|
||||||
) -> float:
|
) -> float:
|
||||||
"""
|
"""
|
||||||
Calculate the Surface Area of a Conical Frustum.
|
Calculate the Surface Area of a Conical Frustum.
|
||||||
|
|
||||||
>>> surface_area_conical_frustum(1, 2, 3)
|
>>> surface_area_conical_frustum(1, 2, 3)
|
||||||
45.511728065337266
|
45.511728065337266
|
||||||
>>> surface_area_conical_frustum(4, 5, 6)
|
>>> surface_area_conical_frustum(4, 5, 6)
|
||||||
|
@ -167,6 +174,7 @@ def surface_area_cylinder(radius: float, height: float) -> float:
|
||||||
Calculate the Surface Area of a Cylinder.
|
Calculate the Surface Area of a Cylinder.
|
||||||
Wikipedia reference: https://en.wikipedia.org/wiki/Cylinder
|
Wikipedia reference: https://en.wikipedia.org/wiki/Cylinder
|
||||||
Formula: 2 * pi * r * (h + r)
|
Formula: 2 * pi * r * (h + r)
|
||||||
|
|
||||||
>>> surface_area_cylinder(7, 10)
|
>>> surface_area_cylinder(7, 10)
|
||||||
747.6990515543707
|
747.6990515543707
|
||||||
>>> surface_area_cylinder(1.6, 2.6)
|
>>> surface_area_cylinder(1.6, 2.6)
|
||||||
|
@ -196,6 +204,7 @@ def surface_area_cylinder(radius: float, height: float) -> float:
|
||||||
def area_rectangle(length: float, width: float) -> float:
|
def area_rectangle(length: float, width: float) -> float:
|
||||||
"""
|
"""
|
||||||
Calculate the area of a rectangle.
|
Calculate the area of a rectangle.
|
||||||
|
|
||||||
>>> area_rectangle(10, 20)
|
>>> area_rectangle(10, 20)
|
||||||
200
|
200
|
||||||
>>> area_rectangle(1.6, 2.6)
|
>>> area_rectangle(1.6, 2.6)
|
||||||
|
@ -223,6 +232,7 @@ def area_rectangle(length: float, width: float) -> float:
|
||||||
def area_square(side_length: float) -> float:
|
def area_square(side_length: float) -> float:
|
||||||
"""
|
"""
|
||||||
Calculate the area of a square.
|
Calculate the area of a square.
|
||||||
|
|
||||||
>>> area_square(10)
|
>>> area_square(10)
|
||||||
100
|
100
|
||||||
>>> area_square(0)
|
>>> area_square(0)
|
||||||
|
@ -242,6 +252,7 @@ def area_square(side_length: float) -> float:
|
||||||
def area_triangle(base: float, height: float) -> float:
|
def area_triangle(base: float, height: float) -> float:
|
||||||
"""
|
"""
|
||||||
Calculate the area of a triangle given the base and height.
|
Calculate the area of a triangle given the base and height.
|
||||||
|
|
||||||
>>> area_triangle(10, 10)
|
>>> area_triangle(10, 10)
|
||||||
50.0
|
50.0
|
||||||
>>> area_triangle(1.6, 2.6)
|
>>> area_triangle(1.6, 2.6)
|
||||||
|
@ -270,6 +281,7 @@ def area_triangle_three_sides(side1: float, side2: float, side3: float) -> float
|
||||||
"""
|
"""
|
||||||
Calculate area of triangle when the length of 3 sides are known.
|
Calculate area of triangle when the length of 3 sides are known.
|
||||||
This function uses Heron's formula: https://en.wikipedia.org/wiki/Heron%27s_formula
|
This function uses Heron's formula: https://en.wikipedia.org/wiki/Heron%27s_formula
|
||||||
|
|
||||||
>>> area_triangle_three_sides(5, 12, 13)
|
>>> area_triangle_three_sides(5, 12, 13)
|
||||||
30.0
|
30.0
|
||||||
>>> area_triangle_three_sides(10, 11, 12)
|
>>> area_triangle_three_sides(10, 11, 12)
|
||||||
|
@ -316,6 +328,7 @@ def area_triangle_three_sides(side1: float, side2: float, side3: float) -> float
|
||||||
def area_parallelogram(base: float, height: float) -> float:
|
def area_parallelogram(base: float, height: float) -> float:
|
||||||
"""
|
"""
|
||||||
Calculate the area of a parallelogram.
|
Calculate the area of a parallelogram.
|
||||||
|
|
||||||
>>> area_parallelogram(10, 20)
|
>>> area_parallelogram(10, 20)
|
||||||
200
|
200
|
||||||
>>> area_parallelogram(1.6, 2.6)
|
>>> area_parallelogram(1.6, 2.6)
|
||||||
|
@ -343,6 +356,7 @@ def area_parallelogram(base: float, height: float) -> float:
|
||||||
def area_trapezium(base1: float, base2: float, height: float) -> float:
|
def area_trapezium(base1: float, base2: float, height: float) -> float:
|
||||||
"""
|
"""
|
||||||
Calculate the area of a trapezium.
|
Calculate the area of a trapezium.
|
||||||
|
|
||||||
>>> area_trapezium(10, 20, 30)
|
>>> area_trapezium(10, 20, 30)
|
||||||
450.0
|
450.0
|
||||||
>>> area_trapezium(1.6, 2.6, 3.6)
|
>>> area_trapezium(1.6, 2.6, 3.6)
|
||||||
|
@ -386,6 +400,7 @@ def area_trapezium(base1: float, base2: float, height: float) -> float:
|
||||||
def area_circle(radius: float) -> float:
|
def area_circle(radius: float) -> float:
|
||||||
"""
|
"""
|
||||||
Calculate the area of a circle.
|
Calculate the area of a circle.
|
||||||
|
|
||||||
>>> area_circle(20)
|
>>> area_circle(20)
|
||||||
1256.6370614359173
|
1256.6370614359173
|
||||||
>>> area_circle(1.6)
|
>>> area_circle(1.6)
|
||||||
|
@ -405,6 +420,7 @@ def area_circle(radius: float) -> float:
|
||||||
def area_ellipse(radius_x: float, radius_y: float) -> float:
|
def area_ellipse(radius_x: float, radius_y: float) -> float:
|
||||||
"""
|
"""
|
||||||
Calculate the area of a ellipse.
|
Calculate the area of a ellipse.
|
||||||
|
|
||||||
>>> area_ellipse(10, 10)
|
>>> area_ellipse(10, 10)
|
||||||
314.1592653589793
|
314.1592653589793
|
||||||
>>> area_ellipse(10, 20)
|
>>> area_ellipse(10, 20)
|
||||||
|
@ -434,6 +450,7 @@ def area_ellipse(radius_x: float, radius_y: float) -> float:
|
||||||
def area_rhombus(diagonal_1: float, diagonal_2: float) -> float:
|
def area_rhombus(diagonal_1: float, diagonal_2: float) -> float:
|
||||||
"""
|
"""
|
||||||
Calculate the area of a rhombus.
|
Calculate the area of a rhombus.
|
||||||
|
|
||||||
>>> area_rhombus(10, 20)
|
>>> area_rhombus(10, 20)
|
||||||
100.0
|
100.0
|
||||||
>>> area_rhombus(1.6, 2.6)
|
>>> area_rhombus(1.6, 2.6)
|
||||||
|
@ -458,6 +475,51 @@ def area_rhombus(diagonal_1: float, diagonal_2: float) -> float:
|
||||||
return 1 / 2 * diagonal_1 * diagonal_2
|
return 1 / 2 * diagonal_1 * diagonal_2
|
||||||
|
|
||||||
|
|
||||||
|
def area_reg_polygon(sides: int, length: float) -> float:
|
||||||
|
"""
|
||||||
|
Calculate the area of a regular polygon.
|
||||||
|
Wikipedia reference: https://en.wikipedia.org/wiki/Polygon#Regular_polygons
|
||||||
|
Formula: (n*s^2*cot(pi/n))/4
|
||||||
|
|
||||||
|
>>> area_reg_polygon(3, 10)
|
||||||
|
43.301270189221945
|
||||||
|
>>> area_reg_polygon(4, 10)
|
||||||
|
100.00000000000001
|
||||||
|
>>> area_reg_polygon(0, 0)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
ValueError: area_reg_polygon() only accepts integers greater than or equal to \
|
||||||
|
three as number of sides
|
||||||
|
>>> area_reg_polygon(-1, -2)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
ValueError: area_reg_polygon() only accepts integers greater than or equal to \
|
||||||
|
three as number of sides
|
||||||
|
>>> area_reg_polygon(5, -2)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
ValueError: area_reg_polygon() only accepts non-negative values as \
|
||||||
|
length of a side
|
||||||
|
>>> area_reg_polygon(-1, 2)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
ValueError: area_reg_polygon() only accepts integers greater than or equal to \
|
||||||
|
three as number of sides
|
||||||
|
"""
|
||||||
|
if not isinstance(sides, int) or sides < 3:
|
||||||
|
raise ValueError(
|
||||||
|
"area_reg_polygon() only accepts integers greater than or \
|
||||||
|
equal to three as number of sides"
|
||||||
|
)
|
||||||
|
elif length < 0:
|
||||||
|
raise ValueError(
|
||||||
|
"area_reg_polygon() only accepts non-negative values as \
|
||||||
|
length of a side"
|
||||||
|
)
|
||||||
|
return (sides * length**2) / (4 * tan(pi / sides))
|
||||||
|
return (sides * length**2) / (4 * tan(pi / sides))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
import doctest
|
import doctest
|
||||||
|
|
||||||
|
@ -481,3 +543,6 @@ if __name__ == "__main__":
|
||||||
print(f"Cone: {surface_area_cone(10, 20) = }")
|
print(f"Cone: {surface_area_cone(10, 20) = }")
|
||||||
print(f"Conical Frustum: {surface_area_conical_frustum(10, 20, 30) = }")
|
print(f"Conical Frustum: {surface_area_conical_frustum(10, 20, 30) = }")
|
||||||
print(f"Cylinder: {surface_area_cylinder(10, 20) = }")
|
print(f"Cylinder: {surface_area_cylinder(10, 20) = }")
|
||||||
|
print(f"Equilateral Triangle: {area_reg_polygon(3, 10) = }")
|
||||||
|
print(f"Square: {area_reg_polygon(4, 10) = }")
|
||||||
|
print(f"Reqular Pentagon: {area_reg_polygon(5, 10) = }")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user