From 49f02a3fd5980930934e7d36432ae3e82b47cdd5 Mon Sep 17 00:00:00 2001 From: IbrahimOzel1 <1234nxjdjd@gmail.com> Date: Tue, 7 Apr 2026 22:09:26 +0300 Subject: [PATCH 1/8] Create info_Ibrahim_Ozel.py --- Week01/info_Ibrahim_Ozel.py | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 Week01/info_Ibrahim_Ozel.py diff --git a/Week01/info_Ibrahim_Ozel.py b/Week01/info_Ibrahim_Ozel.py new file mode 100644 index 00000000..f45a339c --- /dev/null +++ b/Week01/info_Ibrahim_Ozel.py @@ -0,0 +1,2 @@ +student_id = "220316056" +full_name = "İbrahim Özel" From 391f3c2805057dc088e725a0e0e2d84437929c83 Mon Sep 17 00:00:00 2001 From: IbrahimOzel1 <1234nxjdjd@gmail.com> Date: Tue, 7 Apr 2026 22:13:10 +0300 Subject: [PATCH 2/8] Create types_Ibrahim_Ozel.py --- Week02/types_Ibrahim_Ozel.py | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Week02/types_Ibrahim_Ozel.py diff --git a/Week02/types_Ibrahim_Ozel.py b/Week02/types_Ibrahim_Ozel.py new file mode 100644 index 00000000..36c1facd --- /dev/null +++ b/Week02/types_Ibrahim_Ozel.py @@ -0,0 +1,4 @@ +my_int = 32 +my_float = 32.32 +my_bool = True +my_complex = 3j2 From 44e6dc58f265a6bb0570aeb6a52b33408ee36ad2 Mon Sep 17 00:00:00 2001 From: IbrahimOzel1 <1234nxjdjd@gmail.com> Date: Tue, 7 Apr 2026 22:27:41 +0300 Subject: [PATCH 3/8] Create pyramid_Ibrahim_Ozel.py Add function to calculate pyramid height from blocks --- Week03/pyramid_Ibrahim_Ozel.py | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 Week03/pyramid_Ibrahim_Ozel.py diff --git a/Week03/pyramid_Ibrahim_Ozel.py b/Week03/pyramid_Ibrahim_Ozel.py new file mode 100644 index 00000000..7322de28 --- /dev/null +++ b/Week03/pyramid_Ibrahim_Ozel.py @@ -0,0 +1,6 @@ +def calculate_pyramid_height(number_of_blocks): + height = 0 + while number_of_blocks >= height + 1: + height += 1 + number_of_blocks -= height + return height From 997be065c173c2506f9cfaff5fbc53e3a25effc9 Mon Sep 17 00:00:00 2001 From: IbrahimOzel1 <1234nxjdjd@gmail.com> Date: Tue, 7 Apr 2026 22:33:22 +0300 Subject: [PATCH 4/8] Create awaitme_Ibrahim_Ozel.py Add awaitme decorator for asynchronous functions --- Week05/awaitme_Ibrahim_Ozel.py | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Week05/awaitme_Ibrahim_Ozel.py diff --git a/Week05/awaitme_Ibrahim_Ozel.py b/Week05/awaitme_Ibrahim_Ozel.py new file mode 100644 index 00000000..b62d8872 --- /dev/null +++ b/Week05/awaitme_Ibrahim_Ozel.py @@ -0,0 +1,11 @@ +import asyncio +from functools import wraps + +def awaitme(function): + @wraps(function) + async def wrapper(*args, **kwargs): + result = function(*args, **kwargs) + if asyncio.iscoroutine(result): + return await result + return result + return wrapper From 4a8dbcde6dd40690fe1b5e495cccdb48d0b6314f Mon Sep 17 00:00:00 2001 From: IbrahimOzel1 <1234nxjdjd@gmail.com> Date: Tue, 7 Apr 2026 22:42:19 +0300 Subject: [PATCH 5/8] Create decorators_Ibrahim_Ozel.py --- Week04/decorators_Ibrahim_Ozel.py | 38 +++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Week04/decorators_Ibrahim_Ozel.py diff --git a/Week04/decorators_Ibrahim_Ozel.py b/Week04/decorators_Ibrahim_Ozel.py new file mode 100644 index 00000000..a67d7b97 --- /dev/null +++ b/Week04/decorators_Ibrahim_Ozel.py @@ -0,0 +1,38 @@ +import tracemalloc +import time +from functools import wraps + + +def performance(func): + """ + Decorator to track function performance and record statistics. + + :param func: Function to decorate. + :type func: callable + :return: Wrapped function. + :rtype: callable + + :cvar counter: Number of calls. + :cvar total_time: Total execution time in seconds. + :cvar total_mem: Total peak memory in bytes. + """ + @wraps(func) + def wrapper(*args, **kwargs): + tracemalloc.start() + start_time = time.perf_counter() + try: + result = func(*args, **kwargs) + return result + finally: + end_time = time.perf_counter() + current, peak = tracemalloc.get_traced_memory() + tracemalloc.stop() + + wrapper.counter += 1 + wrapper.total_time += (end_time - start_time) + wrapper.total_mem += peak + + wrapper.counter = 0 + wrapper.total_time = 0.0 + wrapper.total_mem = 0 + return wrapper From d74d9be6fd9a06b3f13c37bd0a2c3fb2e29f1725 Mon Sep 17 00:00:00 2001 From: IbrahimOzel1 <1234nxjdjd@gmail.com> Date: Tue, 7 Apr 2026 22:47:52 +0300 Subject: [PATCH 6/8] Create functions_Ibrahim_Ozel.py --- Week04/functions_Ibrahim_Ozel.py | 37 ++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Week04/functions_Ibrahim_Ozel.py diff --git a/Week04/functions_Ibrahim_Ozel.py b/Week04/functions_Ibrahim_Ozel.py new file mode 100644 index 00000000..04cdb310 --- /dev/null +++ b/Week04/functions_Ibrahim_Ozel.py @@ -0,0 +1,37 @@ +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 raises x to the power of a, y to the power of b, + sums them, and then divides the result by c. + + :param x: The positional-only integer base parameter + :param y: The positional-only integer base parameter + :param a: The exponent for x + :param b: The exponent for y + :param c: The divisor (keyword-only) + :return: (x**a + y**b) / c + :rtype: float + """ + return (x ** a + y ** b) / c + + +def fn_w_counter() -> tuple[int, dict[str, int]]: + """ + Counts how many times this function is called and records + how many calls came from each module. + """ + if not hasattr(fn_w_counter, '_call_counter'): + fn_w_counter._call_counter = 0 + fn_w_counter._caller_dict = {} + + caller = __name__ + fn_w_counter._call_counter += 1 + + if caller in fn_w_counter._caller_dict: + fn_w_counter._caller_dict[caller] += 1 + else: + fn_w_counter._caller_dict[caller] = 1 + + return fn_w_counter._call_counter, fn_w_counter._caller_dict From e465165222e7eea75eaf614804bc7834ef052611 Mon Sep 17 00:00:00 2001 From: IbrahimOzel1 <1234nxjdjd@gmail.com> Date: Tue, 7 Apr 2026 22:49:23 +0300 Subject: [PATCH 7/8] Create sequences_Ibrahim_Ozel.py --- Week03/sequences_Ibrahim_Ozel.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Week03/sequences_Ibrahim_Ozel.py diff --git a/Week03/sequences_Ibrahim_Ozel.py b/Week03/sequences_Ibrahim_Ozel.py new file mode 100644 index 00000000..e68a82f4 --- /dev/null +++ b/Week03/sequences_Ibrahim_Ozel.py @@ -0,0 +1,29 @@ +def remove_duplicates(seq: list) -> list: + """ + Removes duplicate elements from a list while preserving order. + """ + unique_items = [] + for item in seq: + if item not in unique_items: + unique_items.append(item) + return unique_items + + +def list_counts(seq: list) -> dict: + """ + Counts the number of occurrences of each item in a list. + """ + counts = {} + for item in seq: + counts[item] = counts.get(item, 0) + 1 + return counts + + +def reverse_dict(d: dict) -> dict: + """ + Reverses the keys and values of a dictionary. + """ + reversed_dict = {} + for key, value in d.items(): + reversed_dict[value] = key + return reversed_dict From 631af29a3656a9f4a0be7602064cfb9dd469e228 Mon Sep 17 00:00:00 2001 From: IbrahimOzel1 <1234nxjdjd@gmail.com> Date: Tue, 7 Apr 2026 22:53:37 +0300 Subject: [PATCH 8/8] Create timer_Ibrahim_Ozel.py --- Week06/timer_Ibrahim_Ozel.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Week06/timer_Ibrahim_Ozel.py diff --git a/Week06/timer_Ibrahim_Ozel.py b/Week06/timer_Ibrahim_Ozel.py new file mode 100644 index 00000000..a27ca2e0 --- /dev/null +++ b/Week06/timer_Ibrahim_Ozel.py @@ -0,0 +1,21 @@ +import time + + +class Timer: + """ + A context manager class that measures the time taken + by the block of code it manages. + """ + + def __init__(self): + self.start_time = None + self.end_time = None + + def __enter__(self): + self.start_time = time.perf_counter() + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + self.end_time = time.perf_counter() + print(f"Elapsed time: {self.end_time - self.start_time:.6f} seconds") + return False