Coffee Machine Nedir?
Coffee Machine (Kahve Makinesi), kullanıcıların belirli bir tür kahve seçip, seçilen kahve türüne göre gerekli malzemeleri ve maliyeti hesaplayan bir uygulamadır. Kullanıcı, kahve seçimini yapar ve makine, kullanıcının seçimine göre kahve hazırlar. Bu tür uygulamalar, temel programlama ve kullanıcı etkileşimi konularında pratik yapmak için idealdir.
Proje Hedefleri ve Öğrenci Faydaları
Bu proje ile öğrenciler, temel Python bilgilerini kullanarak basit ve fonksiyonel programlar geliştirme becerilerini pekiştireceklerdir. Ayrıca, kullanıcı etkileşimi ve veri işleme konularında deneyim kazanacaklardır.
Projenin Hedef Çıktıları
Temel Python yapıları ve kontrol akışlarını kullanarak bir kahve makinesi uygulaması oluşturma.
Kullanıcıdan veri alma ve bu verileri işleyerek kahve hazırlama işlemlerini yönetme.
Fonksiyonlar yardımıyla daha modüler ve okunabilir kod yazma.
Projenin Adım Adım Görevleri
Kahve seçeneklerini ve malzemeleri tanımlama.
Kullanıcıdan kahve seçimini alma.
Seçilen kahveye göre gerekli malzemeleri kontrol etme ve kahveyi hazırlama.
Sonucu ekrana yazdırma.
Fonksiyonlar kullanarak kodu daha modüler hale getirme.
Fonksiyonsuz Çözüm
Adım 1: Kahve Seçeneklerini ve Malzemeleri Tanımlama
İlk adımda, kahve seçenekleri ve malzemeler tanımlanacaktır.
# Kahve seçeneklerini ve malzemeleri tanımlama
kahveler = {
"espresso": {"su": 50, "süt": 0, "kahve": 18, "fiyat": 1.5},
"latte": {"su": 200, "süt": 150, "kahve": 24, "fiyat": 2.5},
"cappuccino": {"su": 250, "süt": 100, "kahve": 24, "fiyat": 3.0}
}
stok = {"su": 1000, "süt": 500, "kahve": 100, "para": 0}
Bu kod parçası, kahve seçeneklerini ve gerekli malzemeleri tanımlar. Ayrıca, stoktaki malzemeleri de tanımlar.
Adım 2: Kullanıcıdan Kahve Seçimini Alma
İkinci adımda, kullanıcıdan kahve seçimi alınacaktır.
# Kullanıcıdan kahve seçimini alma
secim = input("Hangi kahveyi istersiniz? (espresso/latte/cappuccino): ").lower()
Bu kod parçası, kullanıcıdan kahve seçimini alır.
Adım 3: Seçilen Kahveye Göre Gerekli Malzemeleri Kontrol Etme ve Kahveyi Hazırlama
Üçüncü adımda, seçilen kahveye göre gerekli malzemeler kontrol edilecek ve kahve hazırlanacaktır.
# Seçilen kahveye göre gerekli malzemeleri kontrol etme ve kahveyi hazırlama
if secim in kahveler:
yeterli_malzeme = True
for malzeme in kahveler[secim]:
if malzeme != "fiyat" and kahveler[secim][malzeme] > stok[malzeme]:
print(f"Yeterli {malzeme} yok.")
yeterli_malzeme = False
break
if yeterli_malzeme:
for malzeme in kahveler[secim]:
if malzeme != "fiyat":
stok[malzeme] -= kahveler[secim][malzeme]
stok["para"] += kahveler[secim]["fiyat"]
print(f"{secim} hazır! Afiyet olsun.")
else:
print("Geçersiz seçim.")
Bu kod parçası, seçilen kahve için gerekli malzemeleri kontrol eder, yeterli malzeme varsa kahveyi hazırlar ve stokları günceller.
Adım 4: Sonucu Ekrana Yazdırma
Dördüncü adımda, sonuç ekrana yazdırılacaktır.
# Sonucu ekrana yazdırma
print("Kalan stok:")
for malzeme, miktar in stok.items():
print(f"{malzeme}: {miktar}")
Bu kod parçası, güncellenen stokları ekrana yazdırır.
Fonksiyonlarla Çözüm
Adım 1: Kahve Seçeneklerini ve Malzemeleri Tanımlama Fonksiyonu
İlk adımda, kahve seçenekleri ve malzemeler tanımlanacaktır.
def kahve_secimleri_ve_stok_tanimla():
"""Kahve seçeneklerini ve stokları tanımlar."""
kahveler = {
"espresso": {"su": 50, "süt": 0, "kahve": 18, "fiyat": 1.5},
"latte": {"su": 200, "süt": 150, "kahve": 24, "fiyat": 2.5},
"cappuccino": {"su": 250, "süt": 100, "kahve": 24, "fiyat": 3.0}
}
stok = {"su": 1000, "süt": 500, "kahve": 100, "para": 0}
return kahveler, stok
Bu fonksiyon, kahve seçeneklerini ve stokları tanımlar ve döndürür.
Adım 2: Kullanıcıdan Kahve Seçimini Alma Fonksiyonu
İkinci adımda, kullanıcıdan kahve seçimi alınacaktır.
def kullanici_secimi_al():
"""Kullanıcıdan kahve seçimini alır."""
secim = input("Hangi kahveyi istersiniz? (espresso/latte/cappuccino): ").lower()
return secim
Bu fonksiyon, kullanıcıdan kahve seçimini alır ve döndürür.
Adım 3: Seçilen Kahveye Göre Gerekli Malzemeleri Kontrol Etme ve Kahveyi Hazırlama Fonksiyonu
Üçüncü adımda, seçilen kahveye göre gerekli malzemeler kontrol edilecek ve kahve hazırlanacaktır.
def kahve_hazirla(kahveler, stok, secim):
"""Seçilen kahveye göre gerekli malzemeleri kontrol eder ve kahveyi hazırlar."""
if secim in kahveler:
yeterli_malzeme = True
for malzeme in kahveler[secim]:
if malzeme != "fiyat" and kahveler[secim][malzeme] > stok[malzeme]:
print(f"Yeterli {malzeme} yok.")
yeterli_malzeme = False
break
if yeterli_malzeme:
for malzeme in kahveler[secim]:
if malzeme != "fiyat":
stok[malzeme] -= kahveler[secim][malzeme]
stok["para"] += kahveler[secim]["fiyat"]
print(f"{secim} hazır! Afiyet olsun.")
return yeterli_malzeme
else:
print("Geçersiz seçim.")
return False
Bu fonksiyon, seçilen kahve için gerekli malzemeleri kontrol eder, yeterli malzeme varsa kahveyi hazırlar ve stokları günceller.
Adım 4: Sonucu Ekrana Yazdırma Fonksiyonu
Dördüncü adımda, hesaplanan sonuç ekrana yazdırılacaktır.
def sonucu_yazdir(stok):
"""Güncellenen stokları ekrana yazdırır."""
print("Kalan stok:")
for malzeme, miktar in stok.items():
print(f"{malzeme}: {miktar}")
Bu fonksiyon, güncellenen stokları ekrana yazdırır.
Adım 5: Kahve Makinesi Uygulamasını Başlatma Fonksiyonu
Bu fonksiyon, Coffee Machine uygulamasını başlatır ve uygulamanın akışını yönetir.
def kahve_makinesi_baslat():
"""Coffee Machine uygulamasını başlatır."""
kahveler, stok = kahve_secimleri_ve_stok_tanimla()
secim = kullanici_secimi_al()
kahve_hazirla(kahveler, stok, secim)
sonucu_yazdir(stok)
# Uygulamayı başlatma
kahve_makinesi_baslat()
Bu fonksiyon, Coffee Machine uygulamasını başlatır ve uygulamanın akışını yönetir. Kullanıcıdan gerekli verileri alır, kahve hazırlar ve güncellenen stokları ekrana yazdırır.
Kullanılan Konular
Veri Tipleri: Bu projede, sözlükler (kahve seçenekleri, stoklar) ve stringler (kullanıcı girişi) kullanılmıştır.
Koşullu İfadeler: if-else yapıları, kullanıcıdan alınan kahve seçimini kontrol etmek ve doğru işlemi gerçekleştirmek için kullanılmıştır.
Fonksiyonlar: Fonksiyonlar, kodun modüler ve tekrar kullanılabilir olmasını sağlamıştır.
Döngüler: for döngüsü, malzemeleri kontrol etmek ve güncellemek için kullanılmıştır.