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 आता है, कारण वही है।