From 45da82461ccf8d5a4a6a27f7539b572954714555 Mon Sep 17 00:00:00 2001 From: SiddhantJain15 Date: Sun, 27 Dec 2020 00:57:13 +0530 Subject: [PATCH 1/7] Update area.py Modified area of triangle function. Added a new algorithm to calculate area when 3 sides are known --- maths/area.py | 57 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/maths/area.py b/maths/area.py index 24216e223ebf..7a5bc2e75339 100644 --- a/maths/area.py +++ b/maths/area.py @@ -1,13 +1,12 @@ """ Find the area of various geometric shapes """ -from math import pi +from math import pi, sqrt def surface_area_cube(side_length: float) -> float: """ Calculate the Surface Area of a Cube. - >>> surface_area_cube(1) 6 >>> surface_area_cube(3) @@ -27,7 +26,6 @@ def surface_area_sphere(radius: float) -> float: Calculate the Surface Area of a Sphere. Wikipedia reference: https://en.wikipedia.org/wiki/Sphere :return 4 * pi * r^2 - >>> surface_area_sphere(5) 314.1592653589793 >>> surface_area_sphere(1) @@ -45,7 +43,6 @@ def surface_area_sphere(radius: 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) @@ -69,7 +66,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) @@ -82,34 +78,54 @@ def area_square(side_length: float) -> float: return side_length ** 2 -def area_triangle(base: float, height: float) -> float: +def area_isosceles_triangle(base: float, height: float) -> float: """ - Calculate the area of a triangle - - >>> area_triangle(10, 10) + Calculate the area of an isosceles triangle + >>> area_isosceles_triangle(10, 10) 50.0 - >>> area_triangle(-1, -2) + >>> area_isosceles_triangle(-1, -2) Traceback (most recent call last): ... - ValueError: area_triangle() only accepts non-negative values - >>> area_triangle(1, -2) + ValueError: area_isosceles_triangle() only accepts non-negative values + >>> area_isosceles_triangle(1, -2) Traceback (most recent call last): ... - ValueError: area_triangle() only accepts non-negative values - >>> area_triangle(-1, 2) + ValueError: area_isosceles_triangle() only accepts non-negative values + >>> area_isosceles_triangle(-1, 2) Traceback (most recent call last): ... - ValueError: area_triangle() only accepts non-negative values + ValueError: area_isosceles_triangle() only accepts non-negative values """ if base < 0 or height < 0: - raise ValueError("area_triangle() only accepts non-negative values") + raise ValueError("area_isosceles_triangle() only accepts non-negative values") return (base * height) / 2 +def area_triangle(side1: float, side2: float, side3: float) -> float: + """ + Calculate area of triangle when 3 sides are known + + >>> area_triangle(5, 12, 13) + 30.0 + >>> area_triangle(-1, -2, -1) + Traceback (most recent call last): + ... + ValueError: area_triangle() only accepts non-negative values + >>> area_triangle(1, -2, 1) + Traceback (most recent call last): + ... + ValueError: area_triangle() only accepts non-negative values + """ + if side1 < 0 or side2 < 0 or side3 < 0: + raise ValueError("area_triangle() only accepts non-negative values") + elif side1 + side2 < side3 or side1 + side3 < side2 or side2 + side3 < side1: + raise ValueError("Given three sides do not form a triangle") + semi_perimeter = (side1 + side2 + side3) / 2; + area = sqrt(semi_perimeter * (semi_perimeter - side1) * (semi_perimeter - side2) * (semi_perimeter - side3)) + return area def area_parallelogram(base: float, height: float) -> float: """ Calculate the area of a parallelogram - >>> area_parallelogram(10, 20) 200 >>> area_parallelogram(-1, -2) @@ -133,7 +149,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) @@ -173,7 +188,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) @@ -189,7 +203,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) @@ -215,7 +228,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) @@ -240,7 +252,8 @@ def main(): print("Areas of various geometric shapes: \n") print(f"Rectangle: {area_rectangle(10, 20)}") print(f"Square: {area_square(10)}") - print(f"Triangle: {area_triangle(10, 10)}") + print(f"Triangle: {area_isosceles_triangle(10, 10)}") + print(f"Triangle: {area_triangle(5, 12, 13)}") print(f"Parallelogram: {area_parallelogram(10, 20)}") print(f"Trapezium: {area_trapezium(10, 20, 30)}") print(f"Circle: {area_circle(20)}") From 9bd29af085fd82dd66a0394d5f5a60593edda687 Mon Sep 17 00:00:00 2001 From: SiddhantJain15 Date: Sun, 27 Dec 2020 01:15:37 +0530 Subject: [PATCH 2/7] Add files via upload --- maths/area.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maths/area.py b/maths/area.py index 7a5bc2e75339..1b93f88a7a39 100644 --- a/maths/area.py +++ b/maths/area.py @@ -269,4 +269,4 @@ def main(): doctest.testmod(verbose=True) # verbose so we can see methods missing tests - main() + main() From 0e0a33a2a0cd793d5b32ce8dc268ddcb0b3aefc4 Mon Sep 17 00:00:00 2001 From: SiddhantJain15 Date: Sun, 27 Dec 2020 01:48:15 +0530 Subject: [PATCH 3/7] Update area.py --- maths/area.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/maths/area.py b/maths/area.py index 1b93f88a7a39..6ea62900847b 100644 --- a/maths/area.py +++ b/maths/area.py @@ -100,6 +100,7 @@ def area_isosceles_triangle(base: float, height: float) -> float: raise ValueError("area_isosceles_triangle() only accepts non-negative values") return (base * height) / 2 + def area_triangle(side1: float, side2: float, side3: float) -> float: """ Calculate area of triangle when 3 sides are known @@ -123,6 +124,7 @@ def area_triangle(side1: float, side2: float, side3: float) -> float: area = sqrt(semi_perimeter * (semi_perimeter - side1) * (semi_perimeter - side2) * (semi_perimeter - side3)) return area + def area_parallelogram(base: float, height: float) -> float: """ Calculate the area of a parallelogram @@ -269,4 +271,4 @@ def main(): doctest.testmod(verbose=True) # verbose so we can see methods missing tests - main() + main() From de2429cfc4faf175ce03cadb0b634eea4615113b Mon Sep 17 00:00:00 2001 From: SiddhantJain15 Date: Sun, 27 Dec 2020 01:53:17 +0530 Subject: [PATCH 4/7] Update area.py --- maths/area.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/maths/area.py b/maths/area.py index 6ea62900847b..e1364a50c65e 100644 --- a/maths/area.py +++ b/maths/area.py @@ -120,8 +120,13 @@ def area_triangle(side1: float, side2: float, side3: float) -> float: raise ValueError("area_triangle() only accepts non-negative values") elif side1 + side2 < side3 or side1 + side3 < side2 or side2 + side3 < side1: raise ValueError("Given three sides do not form a triangle") - semi_perimeter = (side1 + side2 + side3) / 2; - area = sqrt(semi_perimeter * (semi_perimeter - side1) * (semi_perimeter - side2) * (semi_perimeter - side3)) + semi_perimeter = (side1 + side2 + side3) / 2 + area = sqrt( + semi_perimeter + * (semi_perimeter - side1) + * (semi_perimeter - side2) + * (semi_perimeter - side3) + ) return area From 9ed542c18bd68b9597bc74f6f76200efa6e51c72 Mon Sep 17 00:00:00 2001 From: SiddhantJain15 Date: Sun, 27 Dec 2020 14:00:21 +0530 Subject: [PATCH 5/7] Update area.py --- maths/area.py | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/maths/area.py b/maths/area.py index e1364a50c65e..1a56f97ed698 100644 --- a/maths/area.py +++ b/maths/area.py @@ -78,46 +78,48 @@ def area_square(side_length: float) -> float: return side_length ** 2 -def area_isosceles_triangle(base: float, height: float) -> float: +def area_triangle(base: float, height: float) -> float: """ Calculate the area of an isosceles triangle - >>> area_isosceles_triangle(10, 10) + >>> area_triangle(10, 10) 50.0 - >>> area_isosceles_triangle(-1, -2) + >>> area_triangle(-1, -2) Traceback (most recent call last): ... - ValueError: area_isosceles_triangle() only accepts non-negative values - >>> area_isosceles_triangle(1, -2) + ValueError: area_triangle() only accepts non-negative values + >>> area_triangle(1, -2) Traceback (most recent call last): ... - ValueError: area_isosceles_triangle() only accepts non-negative values - >>> area_isosceles_triangle(-1, 2) + ValueError: area_triangle() only accepts non-negative values + >>> area_triangle(-1, 2) Traceback (most recent call last): ... - ValueError: area_isosceles_triangle() only accepts non-negative values + ValueError: area_triangle() only accepts non-negative values """ if base < 0 or height < 0: - raise ValueError("area_isosceles_triangle() only accepts non-negative values") + raise ValueError("area_triangle() only accepts non-negative values") return (base * height) / 2 -def area_triangle(side1: float, side2: float, side3: float) -> float: +def area_triangle_three_sides(side1: float, side2: float, side3: float) -> float: """ Calculate area of triangle when 3 sides are known - >>> area_triangle(5, 12, 13) + >>> area_triangle_three_sides(5, 12, 13) 30.0 - >>> area_triangle(-1, -2, -1) + >>> area_triangle_three_sides(10, 11, 12) + 51.521233486786784 + >>> area_triangle_three_sides(-1, -2, -1) Traceback (most recent call last): ... - ValueError: area_triangle() only accepts non-negative values - >>> area_triangle(1, -2, 1) + ValueError: area_triangle_three_sides() only accepts non-negative values + >>> area_triangle_three_sides(1, -2, 1) Traceback (most recent call last): ... - ValueError: area_triangle() only accepts non-negative values + ValueError: area_triangle_three_sides() only accepts non-negative values """ if side1 < 0 or side2 < 0 or side3 < 0: - raise ValueError("area_triangle() only accepts non-negative values") + raise ValueError("area_triangle_three_sides() only accepts non-negative values") elif side1 + side2 < side3 or side1 + side3 < side2 or side2 + side3 < side1: raise ValueError("Given three sides do not form a triangle") semi_perimeter = (side1 + side2 + side3) / 2 @@ -259,8 +261,8 @@ def main(): print("Areas of various geometric shapes: \n") print(f"Rectangle: {area_rectangle(10, 20)}") print(f"Square: {area_square(10)}") - print(f"Triangle: {area_isosceles_triangle(10, 10)}") - print(f"Triangle: {area_triangle(5, 12, 13)}") + print(f"Triangle: {area_triangle(10, 10)}") + print(f"Triangle: {area_triangle_three_sides(5, 12, 13)}") print(f"Parallelogram: {area_parallelogram(10, 20)}") print(f"Trapezium: {area_trapezium(10, 20, 30)}") print(f"Circle: {area_circle(20)}") From d8e45d8ca8444718732e44f09816d3226a4d35f9 Mon Sep 17 00:00:00 2001 From: Dhruv Manilawala Date: Mon, 28 Dec 2020 13:27:25 +0530 Subject: [PATCH 6/7] Update area.py --- maths/area.py | 63 ++++++++++++++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/maths/area.py b/maths/area.py index 1a56f97ed698..a5276e39e2ae 100644 --- a/maths/area.py +++ b/maths/area.py @@ -7,6 +7,7 @@ def surface_area_cube(side_length: float) -> float: """ Calculate the Surface Area of a Cube. + >>> surface_area_cube(1) 6 >>> surface_area_cube(3) @@ -25,7 +26,8 @@ def surface_area_sphere(radius: float) -> float: """ Calculate the Surface Area of a Sphere. Wikipedia reference: https://en.wikipedia.org/wiki/Sphere - :return 4 * pi * r^2 + Formula: 4 * pi * r^2 + >>> surface_area_sphere(5) 314.1592653589793 >>> surface_area_sphere(1) @@ -42,7 +44,8 @@ def surface_area_sphere(radius: 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) 200 >>> area_rectangle(-1, -2) @@ -65,7 +68,8 @@ def area_rectangle(length: float, width: float) -> float: def area_square(side_length: float) -> float: """ - Calculate the area of a square + Calculate the area of a square. + >>> area_square(10) 100 >>> area_square(-1) @@ -80,7 +84,8 @@ def area_square(side_length: float) -> float: def area_triangle(base: float, height: float) -> float: """ - Calculate the area of an isosceles triangle + Calculate the area of a triangle given the base and height. + >>> area_triangle(10, 10) 50.0 >>> area_triangle(-1, -2) @@ -103,7 +108,9 @@ 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 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 >>> area_triangle_three_sides(5, 12, 13) 30.0 @@ -134,7 +141,8 @@ 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 + Calculate the area of a parallelogram. + >>> area_parallelogram(10, 20) 200 >>> area_parallelogram(-1, -2) @@ -157,7 +165,8 @@ def area_parallelogram(base: 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) 450.0 >>> area_trapezium(-1, -2, -3) @@ -196,7 +205,8 @@ def area_trapezium(base1: float, base2: float, height: float) -> float: def area_circle(radius: float) -> float: """ - Calculate the area of a circle + Calculate the area of a circle. + >>> area_circle(20) 1256.6370614359173 >>> area_circle(-1) @@ -211,7 +221,8 @@ def area_circle(radius: 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) 314.1592653589793 >>> area_ellipse(10, 20) @@ -236,7 +247,8 @@ 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 + Calculate the area of a rhombus. + >>> area_rhombus(10, 20) 100.0 >>> area_rhombus(-1, -2) @@ -257,25 +269,20 @@ def area_rhombus(diagonal_1: float, diagonal_2: float) -> float: return 1 / 2 * diagonal_1 * diagonal_2 -def main(): - print("Areas of various geometric shapes: \n") - print(f"Rectangle: {area_rectangle(10, 20)}") - print(f"Square: {area_square(10)}") - print(f"Triangle: {area_triangle(10, 10)}") - print(f"Triangle: {area_triangle_three_sides(5, 12, 13)}") - print(f"Parallelogram: {area_parallelogram(10, 20)}") - print(f"Trapezium: {area_trapezium(10, 20, 30)}") - print(f"Circle: {area_circle(20)}") - print("\nSurface Areas of various geometric shapes: \n") - print(f"Cube: {surface_area_cube(20)}") - print(f"Sphere: {surface_area_sphere(20)}") - print(f"Rhombus: {area_rhombus(10, 20)}") - - if __name__ == "__main__": - import doctest doctest.testmod(verbose=True) # verbose so we can see methods missing tests - - main() + + print("[DEMO] Areas of various geometric shapes: \n") + print(f"Rectangle: {area_rectangle(10, 20) = }") + print(f"Square: {area_square(10) = }") + print(f"Triangle: {area_triangle(10, 10) = }") + print(f"Triangle: {area_triangle_three_sides(5, 12, 13) = }") + print(f"Parallelogram: {area_parallelogram(10, 20) = }") + print(f"Trapezium: {area_trapezium(10, 20, 30) = }") + print(f"Circle: {area_circle(20) = }") + print("\nSurface Areas of various geometric shapes: \n") + print(f"Cube: {surface_area_cube(20) = }") + print(f"Sphere: {surface_area_sphere(20) = }") + print(f"Rhombus: {area_rhombus(10, 20) = }") From 87f4dac2380265f7798c99937bd786af4f8e6a43 Mon Sep 17 00:00:00 2001 From: Dhruv Manilawala Date: Mon, 28 Dec 2020 13:30:11 +0530 Subject: [PATCH 7/7] Remove unnecessary whitespace --- maths/area.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maths/area.py b/maths/area.py index a5276e39e2ae..8689f323cc9a 100644 --- a/maths/area.py +++ b/maths/area.py @@ -109,7 +109,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) @@ -273,7 +273,7 @@ def area_rhombus(diagonal_1: float, diagonal_2: float) -> float: import doctest doctest.testmod(verbose=True) # verbose so we can see methods missing tests - + print("[DEMO] Areas of various geometric shapes: \n") print(f"Rectangle: {area_rectangle(10, 20) = }") print(f"Square: {area_square(10) = }")