# Hesap makinemi geliştirdim ama 0'a bölünce çöküyor, bir de her işlemden sonra kapanıyor

**URL:** <https://sibernobet.com/t/hesap-makinemi-gelistirdim-ama-0a-bolunce-cokuyor-bir-de-her-islemden-sonra-kapaniyor/133>\
**Category:** Kod · Code\
**Tags:** python, baslangic\
**Created:** [Ekim 5, 2026, 2:31ös UTC](https://sibernobet.com/t/hesap-makinemi-gelistirdim-ama-0a-bolunce-cokuyor-bir-de-her-islemden-sonra-kapaniyor/133 "2026-10-05T14:31:56Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![SiberMen](https://sibernobet.com/letter_avatar_proxy/v4/letter/s/47e85d/32.png) [@SiberMen](https://sibernobet.com/u/SiberMen)\
**Post date:** [Ekim 5, 2026, 2:31ös UTC](https://sibernobet.com/t/hesap-makinemi-gelistirdim-ama-0a-bolunce-cokuyor-bir-de-her-islemden-sonra-kapaniyor/133/1 "2026-10-05T14:31:56Z")

</div>

Selam tekrar 🙂 [Önceki konumda](https://sibernobet.com/t/132) input() ile sayı almayı öğrenmiştim, sağ olun. Şimdi hesap makinesine işlem seçme ekledim:

```python
a = float(input("Birinci sayı: "))
islem = input("İşlem (+, -, *, /): ")
b = float(input("İkinci sayı: "))

if islem == "+":
    print(a + b)
elif islem == "-":
    print(a - b)
elif islem == "*":
    print(a * b)
elif islem == "/":
    print(a / b)

```

İki sorunum var:

1. İkinci sayıya **0** yazıp bölme seçince program şu hatayla kapanıyor:

```auto
ZeroDivisionError: float division by zero

```

2. Bir hesap yapınca program bitiyor. Her seferinde yeniden çalıştırmam gerekiyor. Kullanıcı “çık” diyene kadar sürekli hesap yapsın istiyorum, bunu nasıl yaparım?

---

<div class="post-metadata">

**Author:** ![Karargah](https://sibernobet.com/user_avatar/sibernobet.com/karargah/32/62_2.png) [@Karargah](https://sibernobet.com/u/Karargah)\
**Post date:** [Ekim 5, 2026, 2:37ös UTC](https://sibernobet.com/t/hesap-makinemi-gelistirdim-ama-0a-bolunce-cokuyor-bir-de-her-islemden-sonra-kapaniyor/133/2 "2026-10-05T14:37:30Z")

</div>

Güzel ilerliyorsun, iki soru da tam yerinde. 👏

**1) Sıfıra bölme:** Matematikte bir sayının 0’a bölümü tanımsız olduğu için Python da `ZeroDivisionError` verir. İki yolu var. Ya bölmeden önce kontrol edersin (`if b == 0:`), ya da önceki konudaki gibi `try/except` ile yakalarsın. Başlangıç için kontrol etmek daha anlaşılır.

**2) Sürekli çalışması:** Bunun için `while True:` ile **sonsuz döngü** kurulur. Kullanıcı “çık” yazınca `break` ile döngüden çıkılır.

İkisini birleştirince:

```python
print("Hesap makinesi · çıkmak için 'çık' yaz")

while True:
    islem = input("\nİşlem (+, -, *, /) ya da çık: ").strip()
    if islem == "çık":
        print("Görüşürüz nöbetçi! 👋")
        break
    if islem not in ("+", "-", "*", "/"):
        print("Geçersiz işlem, tekrar dene.")
        continue # döngünün başına dön

    try:
        a = float(input("Birinci sayı: "))
        b = float(input("İkinci sayı: "))
    except ValueError:
        print("Lütfen sadece sayı gir!")
        continue

    if islem == "+":
        sonuc = a + b
    elif islem == "-":
        sonuc = a - b
    elif islem == "*":
        sonuc = a * b
    else: # bölme
        if b == 0:
            print("Sıfıra bölünemez!")
            continue
        sonuc = a / b

    print(f"Sonuç: {a:g} {islem} {b:g} = {sonuc:g}")

```

Bu örnekte kullandığımız yeni şeyler:

- `while True:` → içindeki kod `break` görene kadar tekrar tekrar çalışır.
- `break` → döngüden tamamen çıkar.
- `continue` → o turun geri kalanını atlayıp döngünün başına döner.
- `.strip()` → kullanıcının yanlışlıkla bastığı boşlukları siler (`" + "` → `"+"`).
- `f"...{sonuc:g}"` → `8.0` yerine `8` yazdırır, gereksiz `.0`’ı atar.

Bir sonraki adım olarak her işlemi bir **fonksiyon** (`def topla(a, b):`) yapmayı deneyebilirsin. Takılırsan yine yaz!
