diff --git a/xiang_mu/mymath.py b/xiang_mu/mymath.py new file mode 100644 index 0000000..39fe184 --- /dev/null +++ b/xiang_mu/mymath.py @@ -0,0 +1,81 @@ +""" +mymath.py - 数学运算模块 +提供乘法和除法运算 +""" + +def multiply(a: float, b: float) -> float: + """ + 计算两个数字的乘积 + + Args: + a: 第一个数字 + b: 第二个数字 + + Returns: + 两个数字的乘积 + """ + return a * b + + +def divide(a: float, b: float) -> float: + """ + 计算两个数字的除法 + + Args: + a: 被除数 + b: 除数 + + Returns: + 两个数字的商 + + Raises: + ValueError: 如果除数为零 + """ + if b == 0: + raise ValueError("除数不能为零") + return a / b + + +if __name__ == "__main__": + # 测试乘法函数 + print("测试乘法函数:") + test_cases_multiply = [ + (2, 3, 6), + (-4, 5, -20), + (0, 7, 0), + (2.5, 4, 10.0), + (-3.5, -2, 7.0), + ] + + for a, b, expected in test_cases_multiply: + result = multiply(a, b) + status = "PASS" if abs(result - expected) < 1e-9 else "FAIL" + print(f" multiply({a}, {b}) = {result} {status} (期望: {expected})") + + # 测试除法函数 + print("\n测试除法函数:") + test_cases_divide = [ + (10, 2, 5), + (-15, 3, -5), + (0, 5, 0), + (7.5, 2.5, 3.0), + (-9, -3, 3), + ] + + for a, b, expected in test_cases_divide: + try: + result = divide(a, b) + status = "PASS" if abs(result - expected) < 1e-9 else "FAIL" + print(f" divide({a}, {b}) = {result} {status} (期望: {expected})") + except ValueError as e: + print(f" divide({a}, {b}) 错误: {e}") + + # 测试除数为零的情况 + print("\n测试除数为零:") + try: + divide(10, 0) + print(" divide(10, 0) FAIL (期望抛出ValueError)") + except ValueError as e: + print(f" divide(10, 0) PASS 正确抛出异常: {e}") + + print("\n所有测试完成!") \ No newline at end of file