PYTHON · DERS 06
Mini proje · Net satış raporu
Bir mağazanın günlük raporunu hazırlıyorsun. Elinde önceki derste temizlediğin kayıtlar var. Pozitif tutar satış, negatif tutar iade, sıfır ise toplamı değiştirmeyen geçerli bir kayıt.
1. Raporu önce kâğıt üzerinde hesapla
rows = [("A1", 120), ("A4", 0), ("A5", -20)]Üç değer bul: brüt satış, pozitif olarak gösterilen iade toplamı ve net satış. Net satışı hesaplamak için iade toplamını brüt satıştan çıkar.
Beklenen sonucu göster
Brüt satış 120 TL, iade 20 TL, net satış 100 TL.
2. Fonksiyonu yaz ve hatayı ayıkla
summarize_sales(rows) üç değeri sırayla döndürsün. Negatif tutarı iade toplamına eklerken işareti kontrol et. İadeyi yanlışlıkla −20 olarak saklayıp brüt satıştan çıkarırsan net satış kaç olur?
İpucu al
120 - (-20) ifadesini hesapla. Fonksiyonda refunds değişkeninin hangi işaretle tutulacağını belirle.
Örnek çözümü aç
def summarize_sales(rows):
gross = 0
refunds = 0
for order_id, amount in rows:
if amount > 0:
gross += amount
elif amount < 0:
refunds += -amount
return gross, refunds, gross - refundsİadeyi pozitif büyüklük olarak tuttuğumuz için gross - refunds iadeyi bir kez düşer.
3. Sonucu test et
Kendi fonksiyonunu yazdıktan sonra aşağıdaki kontrolleri çalıştır. Bir kontrol başarısız olursa ilk olarak iadenin işaretini ve fonksiyonun döndürdüğü değerlerin sırasını incele.
assert summarize_sales([("A1", 120), ("A4", 0), ("A5", -20)]) == (120, 20, 100)
assert summarize_sales([("R1", -25)]) == (0, 25, -25)
assert summarize_sales([]) == (0, 0, 0)Junior veri analisti mülakat sorusu
Satış olmayan bir günde net satış −25 TL çıktı. Bu bir hesaplama hatası mı? Raporu nasıl kontrol edersin?
Örnek yanıtı aç
Gün içinde daha önce yapılmış bir satışın iadesi işlendiğinde net satış negatif olabilir. Brüt satış ve iade toplamını ayrı kontrol ederim. Raporun iadeleri işlem tarihine mi yoksa ilk sipariş tarihine mi göre grupladığını iş kuralıyla doğrularım.