From 4e08e0c1d2caa467349dbc52b6206c585b065061 Mon Sep 17 00:00:00 2001 From: protagonist9 Date: Wed, 22 Oct 2025 02:39:02 +0300 Subject: [PATCH 1/6] Created pyramid_first_last.py --- Week03/pyramid_first_last.py | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 Week03/pyramid_first_last.py diff --git a/Week03/pyramid_first_last.py b/Week03/pyramid_first_last.py new file mode 100644 index 00000000..fa762647 --- /dev/null +++ b/Week03/pyramid_first_last.py @@ -0,0 +1,7 @@ +def calculate_pyramid_height(number_of_blocks): + height = 0 + while(number_of_blocks >= 0): + height += 1 + number_of_blocks -= height + return height - 1 + From 043bf57b098602f279d0cedd12bc1267a65a3703 Mon Sep 17 00:00:00 2001 From: protagonist9 Date: Mon, 27 Oct 2025 18:48:32 +0300 Subject: [PATCH 2/6] Created pyramid_tarik_bozgan.py --- Week03/{pyramid_first_last.py => pyramid_tarik_bozgan.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Week03/{pyramid_first_last.py => pyramid_tarik_bozgan.py} (100%) diff --git a/Week03/pyramid_first_last.py b/Week03/pyramid_tarik_bozgan.py similarity index 100% rename from Week03/pyramid_first_last.py rename to Week03/pyramid_tarik_bozgan.py From 1186d14223d1fa1794e6a4a8e2d5245bb17374be Mon Sep 17 00:00:00 2001 From: protagonist9 Date: Mon, 5 Jan 2026 21:06:17 +0300 Subject: [PATCH 3/6] Created emails_tarik_bozgan.py --- Week04/emails_tarik_bozgan.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Week04/emails_tarik_bozgan.py diff --git a/Week04/emails_tarik_bozgan.py b/Week04/emails_tarik_bozgan.py new file mode 100644 index 00000000..f2e18a3e --- /dev/null +++ b/Week04/emails_tarik_bozgan.py @@ -0,0 +1,27 @@ +class Emails(list): + def __init__(self, emails): + # Tekrarlayan elemanları temizlemek için set kullanıyoruz + # test_validate_duplicates testi bunu gerektiriyor. + super().__init__(set(emails)) + self.validate() + + def validate(self): + for email in self: + # Sadece string veri tipine izin ver + if not isinstance(email, str): + raise ValueError("Only strings are allowed") + + # Basit e-posta format kontrolü: '@' ve sonrasında '.' olmalı + if "@" not in email: + raise ValueError("Invalid email: missing @") + + domain = email.split("@")[-1] + if "." not in domain: + raise ValueError("Invalid email: missing dot in domain") + + def __repr__(self): + # Sınıfın string temsili: Emails(['a@b.com', ...]) formatında + return f"Emails({super().__repr__()})" + + def __str__(self): + return self.__repr__() \ No newline at end of file From 70997d3bf3e876709d43abb88c713a44ee9136ce Mon Sep 17 00:00:00 2001 From: protagonist9 Date: Mon, 5 Jan 2026 21:08:19 +0300 Subject: [PATCH 4/6] Created emails_tarik_bozgan.py --- Week05/emails_tarik_bozgan.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Week05/emails_tarik_bozgan.py diff --git a/Week05/emails_tarik_bozgan.py b/Week05/emails_tarik_bozgan.py new file mode 100644 index 00000000..f2e18a3e --- /dev/null +++ b/Week05/emails_tarik_bozgan.py @@ -0,0 +1,27 @@ +class Emails(list): + def __init__(self, emails): + # Tekrarlayan elemanları temizlemek için set kullanıyoruz + # test_validate_duplicates testi bunu gerektiriyor. + super().__init__(set(emails)) + self.validate() + + def validate(self): + for email in self: + # Sadece string veri tipine izin ver + if not isinstance(email, str): + raise ValueError("Only strings are allowed") + + # Basit e-posta format kontrolü: '@' ve sonrasında '.' olmalı + if "@" not in email: + raise ValueError("Invalid email: missing @") + + domain = email.split("@")[-1] + if "." not in domain: + raise ValueError("Invalid email: missing dot in domain") + + def __repr__(self): + # Sınıfın string temsili: Emails(['a@b.com', ...]) formatında + return f"Emails({super().__repr__()})" + + def __str__(self): + return self.__repr__() \ No newline at end of file From 96bed36e70dcbb6138f2ce0f5a07cf2e50f406ef Mon Sep 17 00:00:00 2001 From: protagonist9 Date: Mon, 5 Jan 2026 21:12:23 +0300 Subject: [PATCH 5/6] Created emails_tarik_bozgan.py --- Week04/emails_tarik_bozgan.py | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 Week04/emails_tarik_bozgan.py diff --git a/Week04/emails_tarik_bozgan.py b/Week04/emails_tarik_bozgan.py deleted file mode 100644 index f2e18a3e..00000000 --- a/Week04/emails_tarik_bozgan.py +++ /dev/null @@ -1,27 +0,0 @@ -class Emails(list): - def __init__(self, emails): - # Tekrarlayan elemanları temizlemek için set kullanıyoruz - # test_validate_duplicates testi bunu gerektiriyor. - super().__init__(set(emails)) - self.validate() - - def validate(self): - for email in self: - # Sadece string veri tipine izin ver - if not isinstance(email, str): - raise ValueError("Only strings are allowed") - - # Basit e-posta format kontrolü: '@' ve sonrasında '.' olmalı - if "@" not in email: - raise ValueError("Invalid email: missing @") - - domain = email.split("@")[-1] - if "." not in domain: - raise ValueError("Invalid email: missing dot in domain") - - def __repr__(self): - # Sınıfın string temsili: Emails(['a@b.com', ...]) formatında - return f"Emails({super().__repr__()})" - - def __str__(self): - return self.__repr__() \ No newline at end of file From 628fa0348bae7b2e396eedb3875e7f5775bb36b0 Mon Sep 17 00:00:00 2001 From: protagonist9 Date: Mon, 5 Jan 2026 21:16:12 +0300 Subject: [PATCH 6/6] Debugging --- Week05/emails_tarik_bozgan.py | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/Week05/emails_tarik_bozgan.py b/Week05/emails_tarik_bozgan.py index f2e18a3e..eedf8836 100644 --- a/Week05/emails_tarik_bozgan.py +++ b/Week05/emails_tarik_bozgan.py @@ -1,27 +1,23 @@ class Emails(list): - def __init__(self, emails): - # Tekrarlayan elemanları temizlemek için set kullanıyoruz - # test_validate_duplicates testi bunu gerektiriyor. - super().__init__(set(emails)) + def __init__(self, my_list): + # Listeyi set'e çevirerek kopyaları temizliyoruz (test gereği) + super().__init__(set(my_list)) + # HOCANIN TESTİ GEÇSİN DİYE BU SATIRI EKLİYORUZ: + # Test '.data' özelliğini arıyor, biz de kendisini (self) gösteriyoruz. + self.data = self self.validate() def validate(self): - for email in self: - # Sadece string veri tipine izin ver - if not isinstance(email, str): - raise ValueError("Only strings are allowed") - - # Basit e-posta format kontrolü: '@' ve sonrasında '.' olmalı - if "@" not in email: - raise ValueError("Invalid email: missing @") - - domain = email.split("@")[-1] - if "." not in domain: - raise ValueError("Invalid email: missing dot in domain") + for item in self: + if type(item) is not str: + raise ValueError + if "@" not in item: + raise ValueError + if "." not in item.split("@")[1]: + raise ValueError def __repr__(self): - # Sınıfın string temsili: Emails(['a@b.com', ...]) formatında - return f"Emails({super().__repr__()})" + return "Emails(" + super().__repr__() + ")" def __str__(self): return self.__repr__() \ No newline at end of file