EMZETT.
Giriş yap

ZeroDivisionError ve ValueError (Python)

Kısaca: Sıfıra bölme ZeroDivisionError doğurur; bir değerin türü doğru ama içeriği uygunsuz olduğunda ValueError oluşur.

Biraz daha ayrıntılı: Her iki hata da kodun işleyemediği girdi verilerini temsil eder. Özellikle kullanıcı girdileri, dosyalar ve hesaplamalarda yaygındır.

Ayrıntılı

ZeroDivisionError

print(10 / 0)   # ZeroDivisionError: division by zero

10 % 0 ve 10 // 0 de bunu doğurur. Çözüm: bölmeden önce kontrol et (if denominator != 0:) ve durumu ele al (varsayılan değer, hata mesajı). Kayan noktalı sayılarda sonuç “neredeyse sıfır” olabilir; o zaman bir toleransla çalış (math.isclose).

ValueError

int("abc")        # ValueError: invalid literal for int() with base 10: 'abc'
float("1,5")      # ValueError (nokta yerine virgül)
import math
math.sqrt(-1)     # ValueError: math domain error
a, b = [1, 2, 3]  # ValueError: too many values to unpack

Çözümler: girdileri kontrol et veya temizle (text.strip(), virgülü noktayla değiştir), str.isdigit() veya try/except ValueError ile güvene al ve kullanıcıya anlaşılır bir mesaj ver. Açarken liste uzunluğunu kontrol et.

Hataları yakalamak

try:
    number = int(input("Number: "))
    print(100 / number)
except ValueError:
    print("Please enter a whole number.")
except ZeroDivisionError:
    print("You cannot divide by zero.")

Yalnızca belirli hataları yakala, topluca bir except: değil; aksi hâlde gerçek programlama hatalarını gizlersin. Girdileri erken doğrula ve net geri bildirim ver.

Ayrıca bak: TypeError, KeyError ve IndexError, Çıkış kodu 1