Home › Hindi › Syntax vs logical error
Python में syntax, runtime और logical error का फर्क — Hindi में
🌐 यह page Hindi में है · Read this in English →
तीनों errors का फर्कहर एक को ढूँढने का तरीकाFree browser practice
तीन तरह की galtiyan — एक table में
हर programming galti इन्हीं तीन में से एक होती है। किस तरह की है — यह पहचानते ही आधा debugging हो जाता है।
- Syntax error — Python code को पढ़ ही नहीं पाया। Program एक line भी नहीं चलता।
- Runtime error (exception) — Code चला, पर बीच में अटक गया। Traceback मिलता है।
- Logical error — Code पूरा चल गया, error कोई नहीं, पर answer गलत है। सबसे खतरनाक यही है।
पहचान का सबसे आसान तरीका: क्या program चला? नहीं चला → syntax। चला पर रुक गया → runtime। पूरा चला पर जवाब गलत → logical।
1. Syntax error — Python पढ़ ही नहीं पाया
for i in range(5)
print(i)
SyntaxError: expected ':'
यहाँ colon गायब है। ध्यान दो — कोई traceback नहीं है, क्योंकि program शुरू ही नहीं हुआ। Python ने पूरी file पहले पढ़ी, वहीं अटक गया।
सबसे आम syntax errors:
- Colon भूलना —
if,for,while,def,classके बाद - Bracket बंद न करना — error अक्सर अगली line पर दिखता है, इसलिए एक line ऊपर देखो
- Quotes का mismatch —
"hello' =और==का घालमेल —if x = 5:- Indentation गड़बड़ —
IndentationErrorइसी परिवार का है
ढूँढने का तरीका: error जिस line पर दिखे, उससे एक line ऊपर से शुरू करो। Python वहाँ रुकता है जहाँ उसे गड़बड़ पता चली, जहाँ हुई वहाँ नहीं।
2. Runtime error — चलते-चलते टूटा
Traceback (most recent call last):
File "main.py", line 3, in <module>
print(nums[5])
IndexError: list index out of range
यह galti code लिखने में नहीं, चलने में हुई। Syntax बिल्कुल सही है — पर list में इतने items थे ही नहीं।
आम runtime errors और उनका एक-लाइन मतलब:
NameError— यह नाम कहीं बना ही नहींTypeError— इन दो चीज़ों पर यह काम हो ही नहीं सकताIndexError— list में इतने items नहींKeyError— dictionary में यह key नहींValueError— type सही है पर value बेकार (int("abc"))ZeroDivisionError— zero से भागAttributeError— इस object में वह method/property है ही नहीं
ढूँढने का तरीका: traceback को नीचे से ऊपर पढ़ो। आखिरी line error का नाम बताती है, उससे ऊपर वाली line number और असली code दिखाती है।
3. Logical error — सबसे खतरनाक
# औसत निकालना था
marks = [80, 90, 100]
average = sum(marks) / len(marks) - 1 # ❌ -1 कहाँ से आया?
print(average) # 89.0 — कोई error नहीं, पर जवाब गलत है
Python खुश है, program पूरा चला, output भी आया — बस गलत आया। Python को नहीं पता कि आप क्या चाहते थे।
सबसे आम logical errors:
- Off-by-one:
range(1, 10)लिखकर 10 तक चाहना andकी जगहor: condition हमेशा True हो जाती है- Indentation एक level गलत: code loop के अंदर होना चाहिए था, बाहर चला गया
- Operator priority:
a + b / 2और(a + b) / 2अलग हैं - Integer division:
7 // 2का3,7 / 2का3.5
ढूँढने का तरीका: कोई message नहीं मिलेगा, इसलिए खुद जाँचना पड़ेगा —
- ऐसा छोटा input लो जिसका सही जवाब आपको पहले से पता हो
- बीच-बीच में
print()लगाकर देखो कि किस step तक value सही थी - जहाँ पहली बार value गलत हुई — galti वहीं है
एक ही program, तीनों galtiyan
# Syntax error — चलेगा ही नहीं
def average(nums)
return sum(nums) / len(nums)
# Runtime error — खाली list पर ZeroDivisionError
def average(nums):
return sum(nums) / len(nums)
average([])
# Logical error — चल जाएगा, जवाब गलत
def average(nums):
return sum(nums) / (len(nums) - 1) # ❌ एक कम से भाग
तीनों का इलाज अलग है: syntax के लिए editor की लाल underline देखो, runtime के लिए traceback पढ़ो, और logical के लिए छोटे input पर खुद test करो — तीसरे वाले के लिए कोई tool नहीं, सिर्फ practice है।
🛠️ Practice करो (free, browser में)
पढ़ना काफी नहीं — यही bug खुद fix करके देखो। नीचे के problems browser में ही चलते हैं, कोई install नहीं, कोई login नहीं।
- for loop में colon गायब — classic syntax error
- गड़बड़ indentation — IndentationError
- Quotes का mismatch — syntax error पकड़ो
- Condition में गलत operator — चुपचाप गलत जवाब
अक्सर पूछे जाने वाले सवाल
syntax error और logical error में क्या फर्क है?
Syntax error में program चलता ही नहीं क्योंकि Python code पढ़ नहीं पाया। Logical error में program पूरा चल जाता है और कोई error message भी नहीं आता, बस answer गलत होता है।
logical error कैसे पकड़ें जब कोई error message ही नहीं आता?
ऐसा छोटा input लो जिसका सही जवाब आपको पहले से पता हो, फिर बीच-बीच में print() लगाकर देखो कि किस step तक value सही थी। जहाँ पहली बार value बिगड़ी, galti वहीं है।
runtime error को exception क्यों कहते हैं?
क्योंकि Python उसे एक exception object बनाकर "उठाता" है, और आप उसे try/except से पकड़ सकते हो। Syntax error चलने से पहले ही आ जाता है, इसलिए उसे इस तरह नहीं पकड़ा जा सकता।
SyntaxError में बताई गई line अक्सर सही क्यों दिखती है?
क्योंकि असली galti आमतौर पर एक line ऊपर होती है — जैसे bracket या quote बंद न करना। Python तब तक पढ़ता रहता है जब तक उसे गड़बड़ का पक्का पता न चले, इसलिए हमेशा एक line ऊपर से जाँचो।