Home › Hindi › ZeroDivisionError Hindi में

Python ZeroDivisionError Hindi में — "division by zero" का सही fix

🌐 यह page Hindi में है · Read this in English →

Exact message: division by zeroखाली list = सबसे बड़ा कारणFix सोच-समझकर, छुपाकर नहीं

कोई 10/0 नहीं लिखता — zero बनता है

Math का rule सीधा है: zero से divide नहीं हो सकता। पर असली code में कोई 10 / 0 टाइप नहीं करता — zero calculation से बनता है: खाली list का len(), कोई counter जो कभी बढ़ा ही नहीं, या database से आया 0।

def average(marks):
    return sum(marks) / len(marks)

average([])   # नया student — अभी कोई marks नहीं
ZeroDivisionError: division by zero

इसलिए fix सिर्फ "divide मत करो" नहीं है — असली सवाल यह है: जब data ही नहीं है तो सही जवाब क्या होना चाहिए?

Fix 1 — Divide करने से पहले check करो (सबसे अच्छा)

def average(marks):
    if not marks:
        return 0.0        # या None — पर सोच कर चुनो
    return sum(marks) / len(marks)

print(average([80, 90]))   # 85.0
print(average([]))         # 0.0

if not marks खाली list, खाली tuple और None तीनों पकड़ लेता है। Percentage वाले code में भी यही pattern:

total = 0
passed = 0
percent = (passed / total * 100) if total else 0
print(percent)   # 0 — crash नहीं

Fix 2 — 0 और None में फर्क रखो

सबसे बड़ा सवाल design का है: "कोई marks नहीं" और "average 0 है" — क्या ये एक ही बात हैं? नहीं। Report card पर दोनों अलग दिखने चाहिए।

def average(marks):
    if not marks:
        return None       # "data hi nahi hai"
    return sum(marks) / len(marks)

avg = average(student_marks)
print("Average: N/A" if avg is None else f"Average: {avg:.1f}")

Galti जो सब करते हैं — except से bug छुपाना

try:
    avg = sum(marks) / len(marks)
except ZeroDivisionError:
    avg = 0        # ⚠️ अब "data nahi hai" और "average 0 hai" एक जैसे दिखेंगे

यह bug छुपाना है, fix करना नहीं। try/except तब सही है जब आप सच में उस स्थिति को handle कर रहे हो (log करना, user को message देना), न कि जब आप सिर्फ error को चुप करा रहे हो। साफ if check हमेशा बेहतर पढ़ा जाता है।

// और % भी crash करते हैं

print(10 // 0)   # ❌ ZeroDivisionError: integer division or modulo by zero
print(10 % 0)    # ❌ ZeroDivisionError: integer division or modulo by zero
print(10 / 0)    # ❌ ZeroDivisionError: division by zero

Message थोड़ा अलग है पर कारण वही। ध्यान दो: 10 / 0.0 भी ZeroDivisionError ही देता है — Python अपने आप inf नहीं बनाता (numpy बनाता है, plain Python नहीं)।

List comprehension के अंदर वाला case

nums = [10, 5, 0, 2]
results = [100 / n for n in nums]              # ❌ 0 पर crash
results = [100 / n for n in nums if n != 0]    # ✅ zeros छोड़ दो
results = [(100 / n if n else 0) for n in nums]  # ✅ या placeholder रखो

पहला तरीका item हटा देता है, दूसरा उसकी जगह 0 रखता है — index का मिलान ज़रूरी हो तो दूसरा चुनो।

अक्सर पूछे जाने वाले सवाल

ZeroDivisionError क्यों आता है?

क्योंकि Python में किसी संख्या को 0 से divide नहीं किया जा सकता। असली code में यह 0 आमतौर पर खुद बनता है — खाली list का len(), कोई counter जो कभी नहीं बढ़ा, या data से आया 0।

division by zero कैसे रोकें?

divide करने से पहले if से check करें — जैसे if not marks: return None। खाली list, 0 count या None तीनों इसी check में पकड़े जाते हैं।

try/except ZeroDivisionError लगाना सही है क्या?

सिर्फ तब जब आप सच में उस स्थिति को संभाल रहे हों (log करना या user को साफ message देना)। सिर्फ 0 return करके error चुप कराना bug छुपाना है, क्योंकि फिर 'data नहीं है' और 'average 0 है' एक जैसे दिखते हैं।

10 % 0 पर कौन सा error आता है?

ZeroDivisionError: integer division or modulo by zero — // और % दोनों पर यही message आता है, कारण वही है।

आगे पढ़ो