Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Week02/types_yigithan_erken.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
my_int = 1903
my_float = 19.03
my_bool = True
my_complex = 190 + 3j
8 changes: 8 additions & 0 deletions Week03/pyramid_yigithan_erken.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
def calculate_pyramid_height(number_of_blocks):
height = 0
used = 1
while number_of_blocks >= used:
number_of_blocks -= used
height += 1
used += 1
return height
17 changes: 17 additions & 0 deletions Week03/sequences_yigithan_erken.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
def remove_duplicates(seq: list) -> list:
return list(set(seq))

def list_counts(seq: list) -> dict:
counts = {}
for item in seq:
if item in counts:
counts[item] += 1
else:
counts[item] = 1
return counts

def reverse_dict(d: dict) -> dict:
reversed_dict = {}
for key, value in d.items():
reversed_dict[value] = key
return reversed_dict
28 changes: 28 additions & 0 deletions Week04/decorators_yigithan_erken.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import time
import tracemalloc
from functools import wraps

def performance(func):
@wraps(func)
def wrapper(*args, **kwargs):
performance.counter += 1

tracemalloc.start()
start_time = time.perf_counter()

result = func(*args, **kwargs)

end_time = time.perf_counter()
current, peak = tracemalloc.get_traced_memory()
tracemalloc.stop()

performance.total_time += (end_time - start_time)
performance.total_mem += peak

return result

return wrapper

performance.counter = 0
performance.total_time = 0.0
performance.total_mem = 0
33 changes: 33 additions & 0 deletions Week04/functions_yigithan_erken.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
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:
"""
Calculates a custom equation.

:param x: Positional-only integer, defaults to 0.
:param y: Positional-only integer, defaults to 0.
:param a: Positional-or-keyword integer, defaults to 1.
:param b: Positional-or-keyword integer, defaults to 1.
:param c: Keyword-only integer, defaults to 1.
:return: The result of (x**a + y**b) / c as float.
"""
if not all(isinstance(val, int) for val in (x, y, a, b, c)):
raise TypeError("Arguments must be integers.")

return float((x**a + y**b) / c)

def fn_w_counter() -> (int, dict[str, int]):
if not hasattr(fn_w_counter, "total_calls"):
fn_w_counter.total_calls = 0
fn_w_counter.caller_counts = {}

caller_name = __name__

fn_w_counter.total_calls += 1

if caller_name in fn_w_counter.caller_counts:
fn_w_counter.caller_counts[caller_name] += 1
else:
fn_w_counter.caller_counts[caller_name] = 1

return (fn_w_counter.total_calls, fn_w_counter.caller_counts)
27 changes: 27 additions & 0 deletions Week05/emails_yigithan_erken.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
class Emails(list):
def __init__(self, initial_emails=None):
super().__init__()
self.data = self
if initial_emails is not None:
self.validate(initial_emails)

def validate(self, emails_to_check):
for item in emails_to_check:
if not isinstance(item, str):
raise ValueError("List can only contain strings")

if "@" not in item:
raise ValueError("Invalid email format")

domain_part = item.split("@")[1]
if "." not in domain_part:
raise ValueError("Invalid email format")

if item not in self:
self.append(item)

def __repr__(self):
return f"Emails({super().__repr__()})"

def __str__(self):
return super().__str__()
Loading
⌂ Proxy