diff --git a/DIRECTORY.md b/DIRECTORY.md index e91ffe3f6dae..d8cf7f08ee37 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -533,7 +533,9 @@ * [Geometry](geometry/geometry.py) * [Graham Scan](geometry/graham_scan.py) * [Jarvis March](geometry/jarvis_march.py) + * [Monotone Chain](geometry/monotone_chain.py) * [Ramer Douglas Peucker](geometry/ramer_douglas_peucker.py) + * [Rotating Calipers](geometry/rotating_calipers.py) * [Segment Intersection](geometry/segment_intersection.py) * Tests * [Test Graham Scan](geometry/tests/test_graham_scan.py) @@ -735,6 +737,7 @@ * [Decimal Isolate](maths/decimal_isolate.py) * [Decimal To Fraction](maths/decimal_to_fraction.py) * [Derangement](maths/derangement.py) + * [Division](maths/division.py) * [Dodecahedron](maths/dodecahedron.py) * [Double Factorial](maths/double_factorial.py) * [Dual Number Automatic Differentiation](maths/dual_number_automatic_differentiation.py) diff --git a/maths/division.py b/maths/division.py new file mode 100644 index 000000000000..32013eff655b --- /dev/null +++ b/maths/division.py @@ -0,0 +1,43 @@ +""" +This module provides a function for dividing two numbers with proper input validation. + +The divide_numbers function includes validation to prevent division by zero errors, +providing clear error messages for better user experience. +""" + + +def divide_numbers(numerator: float, denominator: float) -> float: + """ + Divide two numbers with input validation for zero denominator. + + Args: + numerator: The numerator (dividend) + denominator: The denominator (divisor) + + Returns: + float: The result of numerator divided by denominator + + Raises: + ValueError: If denominator is zero + + Examples: + >>> divide_numbers(10, 2) + 5.0 + >>> divide_numbers(15, 3) + 5.0 + >>> divide_numbers(10, 0) + Traceback (most recent call last): + ... + ValueError: Cannot divide by zero. Please provide a non-zero denominator. + """ + if denominator == 0: + raise ValueError( + "Cannot divide by zero. Please provide a non-zero denominator." + ) + return numerator / denominator + + +if __name__ == "__main__": + import doctest + + doctest.testmod()