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.

← Önceki ders · Python derslerine dön →

Etkileşimli laboratuvarı aç →