From 8eb9c2f5f5153c126c948a3fe980d5722082f880 Mon Sep 17 00:00:00 2001 From: rohanr18 <114707091+rohanr18@users.noreply.github.com> Date: Sat, 1 Oct 2022 14:04:25 +0530 Subject: [PATCH 1/3] Add surface area of cuboid, conical frustum --- maths/area.py | 70 ++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 55 insertions(+), 15 deletions(-) diff --git a/maths/area.py b/maths/area.py index b1b139cf4e22..5164be7fd4eb 100644 --- a/maths/area.py +++ b/maths/area.py @@ -7,7 +7,6 @@ def surface_area_cube(side_length: float) -> float: """ Calculate the Surface Area of a Cube. - >>> surface_area_cube(1) 6 >>> surface_area_cube(3) @@ -22,12 +21,34 @@ def surface_area_cube(side_length: float) -> float: return 6 * side_length**2 +def surface_area_cuboid(length: float, breadth: float, height: float) -> float: + """ + Calculate the Surface Area of a Cuboid. + >>> surface_area_cuboid(1, 2, 3) + 22 + >>> surface_area_cuboid(-1, 2, 3) + Traceback (most recent call last): + ... + ValueError: surface_area_cuboid() only accepts non-negative values + >>> surface_area_cuboid(1, -2, 3) + Traceback (most recent call last): + ... + ValueError: surface_area_cuboid() only accepts non-negative values + >>> surface_area_cuboid(1, 2, -3) + Traceback (most recent call last): + ... + ValueError: surface_area_cuboid() only accepts non-negative values + """ + if length < 0 or breadth < 0 or height < 0: + raise ValueError("surface_area_cuboid() only accepts non-negative values") + return 2 * ((length * breadth) + (breadth * height) + (length * height)) + + def surface_area_sphere(radius: float) -> float: """ Calculate the Surface Area of a Sphere. Wikipedia reference: https://en.wikipedia.org/wiki/Sphere Formula: 4 * pi * r^2 - >>> surface_area_sphere(5) 314.1592653589793 >>> surface_area_sphere(1) @@ -46,7 +67,6 @@ def surface_area_hemisphere(radius: float) -> float: """ Calculate the Surface Area of a Hemisphere. Formula: 3 * pi * r^2 - >>> surface_area_hemisphere(5) 235.61944901923448 >>> surface_area_hemisphere(1) @@ -70,7 +90,6 @@ def surface_area_cone(radius: float, height: float) -> float: Calculate the Surface Area of a Cone. Wikipedia reference: https://en.wikipedia.org/wiki/Cone Formula: pi * r * (r + (h ** 2 + r ** 2) ** 0.5) - >>> surface_area_cone(10, 24) 1130.9733552923256 >>> surface_area_cone(6, 8) @@ -93,12 +112,41 @@ def surface_area_cone(radius: float, height: float) -> float: return pi * radius * (radius + (height**2 + radius**2) ** 0.5) +def surface_area_conical_frustum( + radius_1: float, radius_2: float, height: float +) -> float: + """ + Calculate the Surface Area of a Conical Frustum. + >>> surface_area_conical_frustum(1, 2, 3) + 45.511728065337266 + >>> surface_area_conical_frustum(4, 5, 6) + 300.7913575056268 + >>> surface_area_conical_frustum(-1, 2, 3) + Traceback (most recent call last): + ... + ValueError: surface_area_conical_frustum() only accepts non-negative values + >>> surface_area_conical_frustum(1, -2, 3) + Traceback (most recent call last): + ... + ValueError: surface_area_conical_frustum() only accepts non-negative values + >>> surface_area_conical_frustum(1, 2, -3) + Traceback (most recent call last): + ... + ValueError: surface_area_conical_frustum() only accepts non-negative values + """ + if radius_1 < 0 or radius_2 < 0 or height < 0: + raise ValueError( + "surface_area_conical_frustum() only accepts non-negative values" + ) + slant_height = (height**2 + (radius_1 - radius_2) ** 2) ** 0.5 + return pi * ((slant_height * (radius_1 + radius_2)) + radius_1**2 + radius_2**2) + + def surface_area_cylinder(radius: float, height: float) -> float: """ Calculate the Surface Area of a Cylinder. Wikipedia reference: https://en.wikipedia.org/wiki/Cylinder Formula: 2 * pi * r * (h + r) - >>> surface_area_cylinder(7, 10) 747.6990515543707 >>> surface_area_cylinder(6, 8) @@ -124,7 +172,6 @@ def surface_area_cylinder(radius: float, height: float) -> float: def area_rectangle(length: float, width: float) -> float: """ Calculate the area of a rectangle. - >>> area_rectangle(10, 20) 200 >>> area_rectangle(-1, -2) @@ -148,7 +195,6 @@ def area_rectangle(length: float, width: float) -> float: def area_square(side_length: float) -> float: """ Calculate the area of a square. - >>> area_square(10) 100 >>> area_square(-1) @@ -164,7 +210,6 @@ def area_square(side_length: float) -> float: def area_triangle(base: float, height: float) -> float: """ Calculate the area of a triangle given the base and height. - >>> area_triangle(10, 10) 50.0 >>> area_triangle(-1, -2) @@ -188,9 +233,7 @@ def area_triangle(base: float, height: float) -> float: def area_triangle_three_sides(side1: float, side2: float, side3: float) -> float: """ 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 - >>> area_triangle_three_sides(5, 12, 13) 30.0 >>> area_triangle_three_sides(10, 11, 12) @@ -233,7 +276,6 @@ def area_triangle_three_sides(side1: float, side2: float, side3: float) -> float def area_parallelogram(base: float, height: float) -> float: """ Calculate the area of a parallelogram. - >>> area_parallelogram(10, 20) 200 >>> area_parallelogram(-1, -2) @@ -257,7 +299,6 @@ def area_parallelogram(base: float, height: float) -> float: def area_trapezium(base1: float, base2: float, height: float) -> float: """ Calculate the area of a trapezium. - >>> area_trapezium(10, 20, 30) 450.0 >>> area_trapezium(-1, -2, -3) @@ -297,7 +338,6 @@ def area_trapezium(base1: float, base2: float, height: float) -> float: def area_circle(radius: float) -> float: """ Calculate the area of a circle. - >>> area_circle(20) 1256.6370614359173 >>> area_circle(-1) @@ -313,7 +353,6 @@ def area_circle(radius: float) -> float: def area_ellipse(radius_x: float, radius_y: float) -> float: """ Calculate the area of a ellipse. - >>> area_ellipse(10, 10) 314.1592653589793 >>> area_ellipse(10, 20) @@ -339,7 +378,6 @@ def area_ellipse(radius_x: float, radius_y: float) -> float: def area_rhombus(diagonal_1: float, diagonal_2: float) -> float: """ Calculate the area of a rhombus. - >>> area_rhombus(10, 20) 100.0 >>> area_rhombus(-1, -2) @@ -376,7 +414,9 @@ def area_rhombus(diagonal_1: float, diagonal_2: float) -> float: print(f"Circle: {area_circle(20) = }") print("\nSurface Areas of various geometric shapes: \n") print(f"Cube: {surface_area_cube(20) = }") + print(f"Cuboid: {surface_area_cuboid(10, 20, 30) = }") print(f"Sphere: {surface_area_sphere(20) = }") print(f"Hemisphere: {surface_area_hemisphere(20) = }") print(f"Cone: {surface_area_cone(10, 20) = }") + print(f"Conical Frustum: {surface_area_conical_frustum(10, 20, 30) = }") print(f"Cylinder: {surface_area_cylinder(10, 20) = }") From 9b2508ed74656d61384203a7c4769f42e5fa3190 Mon Sep 17 00:00:00 2001 From: Rohan R Bharadwaj <114707091+rohanr18@users.noreply.github.com> Date: Wed, 5 Oct 2022 15:10:38 +0530 Subject: [PATCH 2/3] add tests for floats, zeroes --- maths/area.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/maths/area.py b/maths/area.py index 5164be7fd4eb..ef1784728ee5 100644 --- a/maths/area.py +++ b/maths/area.py @@ -9,6 +9,10 @@ def surface_area_cube(side_length: float) -> float: Calculate the Surface Area of a Cube. >>> surface_area_cube(1) 6 + >>> surface_area_cube(1.6) + 15.360000000000003 + >>> surface_area_cube(0) + 0 >>> surface_area_cube(3) 54 >>> surface_area_cube(-1) @@ -26,6 +30,10 @@ def surface_area_cuboid(length: float, breadth: float, height: float) -> float: Calculate the Surface Area of a Cuboid. >>> surface_area_cuboid(1, 2, 3) 22 + >>> surface_area_cuboid(0, 0, 0) + 0 + >>> surface_area_cuboid(1.6, 2.6, 3.6) + 38.56 >>> surface_area_cuboid(-1, 2, 3) Traceback (most recent call last): ... @@ -53,6 +61,10 @@ def surface_area_sphere(radius: float) -> float: 314.1592653589793 >>> surface_area_sphere(1) 12.566370614359172 + >>> surface_area_sphere(1.6) + 32.169908772759484 + >>> surface_area_sphere(0) + 0.0 >>> surface_area_sphere(-1) Traceback (most recent call last): ... @@ -94,6 +106,10 @@ def surface_area_cone(radius: float, height: float) -> float: 1130.9733552923256 >>> surface_area_cone(6, 8) 301.59289474462014 + >>> surface_area_cone(1.6, 2.6) + 23.387862992395807 + >>> surface_area_cone(0, 0) + 0.0 >>> surface_area_cone(-1, -2) Traceback (most recent call last): ... @@ -121,6 +137,10 @@ def surface_area_conical_frustum( 45.511728065337266 >>> surface_area_conical_frustum(4, 5, 6) 300.7913575056268 + >>> surface_area_conical_frustum(0, 0, 0) + 0.0 + >>> surface_area_conical_frustum(1.6, 2.6, 3.6) + 78.57907060751548 >>> surface_area_conical_frustum(-1, 2, 3) Traceback (most recent call last): ... @@ -149,6 +169,10 @@ def surface_area_cylinder(radius: float, height: float) -> float: Formula: 2 * pi * r * (h + r) >>> surface_area_cylinder(7, 10) 747.6990515543707 + >>> surface_area_cylinder(1.6, 2.6) + 42.22300526424682 + >>> surface_area_cylinder(0, 0) + 0.0 >>> surface_area_cylinder(6, 8) 527.7875658030853 >>> surface_area_cylinder(-1, -2) @@ -174,6 +198,10 @@ def area_rectangle(length: float, width: float) -> float: Calculate the area of a rectangle. >>> area_rectangle(10, 20) 200 + >>> area_rectangle(1.6, 2.6) + 4.16 + >>> area_rectangle(0, 0) + 0 >>> area_rectangle(-1, -2) Traceback (most recent call last): ... @@ -197,6 +225,10 @@ def area_square(side_length: float) -> float: Calculate the area of a square. >>> area_square(10) 100 + >>> area_square(0) + 0 + >>> area_square(1.6) + 2.5600000000000005 >>> area_square(-1) Traceback (most recent call last): ... @@ -212,6 +244,10 @@ def area_triangle(base: float, height: float) -> float: Calculate the area of a triangle given the base and height. >>> area_triangle(10, 10) 50.0 + >>> area_triangle(1.6, 2.6) + 2.08 + >>> area_triangle(0, 0) + 0.0 >>> area_triangle(-1, -2) Traceback (most recent call last): ... @@ -238,6 +274,10 @@ def area_triangle_three_sides(side1: float, side2: float, side3: float) -> float 30.0 >>> area_triangle_three_sides(10, 11, 12) 51.521233486786784 + >>> area_triangle_three_sides(0, 0, 0) + 0.0 + >>> area_triangle_three_sides(1.6, 2.6, 3.6) + 1.8703742940919619 >>> area_triangle_three_sides(-1, -2, -1) Traceback (most recent call last): ... @@ -278,6 +318,10 @@ def area_parallelogram(base: float, height: float) -> float: Calculate the area of a parallelogram. >>> area_parallelogram(10, 20) 200 + >>> area_parallelogram(1.6, 2.6) + 4.16 + >>> area_parallelogram(0, 0) + 0 >>> area_parallelogram(-1, -2) Traceback (most recent call last): ... @@ -301,6 +345,10 @@ def area_trapezium(base1: float, base2: float, height: float) -> float: Calculate the area of a trapezium. >>> area_trapezium(10, 20, 30) 450.0 + >>> area_trapezium(1.6, 2.6, 3.6) + 7.5600000000000005 + >>> area_trapezium(0, 0, 0) + 0.0 >>> area_trapezium(-1, -2, -3) Traceback (most recent call last): ... @@ -340,6 +388,10 @@ def area_circle(radius: float) -> float: Calculate the area of a circle. >>> area_circle(20) 1256.6370614359173 + >>> area_circle(1.6) + 8.042477193189871 + >>> area_circle(0) + 0.0 >>> area_circle(-1) Traceback (most recent call last): ... @@ -357,6 +409,10 @@ def area_ellipse(radius_x: float, radius_y: float) -> float: 314.1592653589793 >>> area_ellipse(10, 20) 628.3185307179587 + >>> area_ellipse(0, 0) + 0.0 + >>> area_ellipse(1.6, 2.6) + 13.06902543893354 >>> area_ellipse(-10, 20) Traceback (most recent call last): ... @@ -380,6 +436,10 @@ def area_rhombus(diagonal_1: float, diagonal_2: float) -> float: Calculate the area of a rhombus. >>> area_rhombus(10, 20) 100.0 + >>> area_rhombus(1.6, 2.6) + 2.08 + >>> area_rhombus(0, 0) + 0.0 >>> area_rhombus(-1, -2) Traceback (most recent call last): ... @@ -412,6 +472,7 @@ def area_rhombus(diagonal_1: float, diagonal_2: float) -> float: print(f"Rhombus: {area_rhombus(10, 20) = }") print(f"Trapezium: {area_trapezium(10, 20, 30) = }") print(f"Circle: {area_circle(20) = }") + print(f"Ellipse: {area_ellipse(10, 20) = }") print("\nSurface Areas of various geometric shapes: \n") print(f"Cube: {surface_area_cube(20) = }") print(f"Cuboid: {surface_area_cuboid(10, 20, 30) = }") From 813f59d5966f17480a2890797e53bae9edcf51e5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 5 Oct 2022 09:45:10 +0000 Subject: [PATCH 3/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/area.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maths/area.py b/maths/area.py index ef1784728ee5..abbf7aa85da5 100644 --- a/maths/area.py +++ b/maths/area.py @@ -170,7 +170,7 @@ def surface_area_cylinder(radius: float, height: float) -> float: >>> surface_area_cylinder(7, 10) 747.6990515543707 >>> surface_area_cylinder(1.6, 2.6) - 42.22300526424682 + 42.22300526424682 >>> surface_area_cylinder(0, 0) 0.0 >>> surface_area_cylinder(6, 8)