From 5f0026b4cd1618e8e2b36dda4185df50c4289de1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Efe=20=C5=9Eamil=20Sar=C4=B1g=C3=BCl?= Date: Tue, 3 Nov 2026 20:08:28 +0300 Subject: [PATCH] Implement custom power and equation functions Added custom_power lambda and custom_equation function for mathematical operations, along with a call counter function. --- Week04/functions_efe_samil_sarigul.py | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Week04/functions_efe_samil_sarigul.py diff --git a/Week04/functions_efe_samil_sarigul.py b/Week04/functions_efe_samil_sarigul.py new file mode 100644 index 00000000..a87a38ee --- /dev/null +++ b/Week04/functions_efe_samil_sarigul.py @@ -0,0 +1,30 @@ +custom_power = lambda x=0, /, e=1: x ** e + + +def custom_equation(x: int = 0, y: int = 0, /, a: int = 1, b: int = 1, *, c: int = 1) -> float: + """ + This function calculates (x**a + y**b) / c. + + :param x: First base, positional-only + :param y: Second base, positional-only + :param a: Exponent of x + :param b: Exponent of y + :param c: Divisor, keyword-only + :return: The result of (x**a + y**b) / c + """ + for value in (x, y, a, b, c): + if type(value) is not int: + raise TypeError("All parameters must be integers.") + return (x ** a + y ** b) / c + + +def fn_w_counter() -> (int, dict[str, int]): + if not hasattr(fn_w_counter, "call_counter"): + fn_w_counter.call_counter = 0 + fn_w_counter.callers = {} + fn_w_counter.call_counter += 1 + if __name__ in fn_w_counter.callers: + fn_w_counter.callers[__name__] += 1 + else: + fn_w_counter.callers[__name__] = 1 + return fn_w_counter.call_counter, fn_w_counter.callers