Python
103 ~40 dk
Hesap Makinesi Projesi
Proje: Gelişmiş Hesap Makinesi
Öğrendiklerimizi birleştirerek kapsamlı bir hesap makinesi yapacağız.
import math
class HesapMakinesi:
def __init__(self):
self.gecmis = []
def topla(self, a, b):
sonuc = a + b
self._kaydet(f"{a} + {b} = {sonuc}")
return sonuc
def cikar(self, a, b):
sonuc = a - b
self._kaydet(f"{a} - {b} = {sonuc}")
return sonuc
def carp(self, a, b):
sonuc = a * b
self._kaydet(f"{a} × {b} = {sonuc}")
return sonuc
def bol(self, a, b):
if b == 0:
print("❌ Sıfıra bölünemez!")
return None
sonuc = a / b
self._kaydet(f"{a} ÷ {b} = {sonuc:.2f}")
return sonuc
def us_al(self, taban, us):
sonuc = taban ** us
self._kaydet(f"{taban}^{us} = {sonuc}")
return sonuc
def karekoku(self, sayi):
if sayi < 0:
print("❌ Negatif sayının karekökü alınamaz!")
return None
sonuc = math.sqrt(sayi)
self._kaydet(f"√{sayi} = {sonuc:.4f}")
return sonuc
def _kaydet(self, islem):
self.gecmis.append(islem)
def gecmisi_goster(self):
if not self.gecmis:
print("Henüz işlem yapılmadı.")
return
print("\n📋 İşlem Geçmişi:")
for i, islem in enumerate(self.gecmis, 1):
print(f" {i}. {islem}")
# Ana program
hm = HesapMakinesi()
while True:
print("\n╔══════════════════════╗")
print("║ HESAP MAKİNESİ ║")
print("╠══════════════════════╣")
print("║ 1. Toplama ║")
print("║ 2. Çıkarma ║")
print("║ 3. Çarpma ║")
print("║ 4. Bölme ║")
print("║ 5. Üs Alma ║")
print("║ 6. Karekök ║")
print("║ 7. Geçmiş ║")
print("║ 0. Çıkış ║")
print("╚══════════════════════╝")
secim = input("Seçiminiz: ")
if secim == "0":
print("Güle güle! 👋")
break
elif secim == "7":
hm.gecmisi_goster()
elif secim in ["1","2","3","4","5"]:
a = float(input("1. sayı: "))
b = float(input("2. sayı: "))
islemler = {"1": hm.topla, "2": hm.cikar, "3": hm.carp, "4": hm.bol, "5": hm.us_al}
sonuc = islemler[secim](a, b)
if sonuc is not None:
print(f"\n🔢 Sonuç: {sonuc}")
elif secim == "6":
a = float(input("Sayı: "))
sonuc = hm.karekoku(a)
if sonuc is not None:
print(f"\n🔢 Sonuç: {sonuc:.4f}")✅ Bu proje şunları kapsar: OOP, fonksiyonlar, döngüler, koşullu ifadeler, hata yakalama, liste kullanımı.