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 हो जाता है।

पहचान का सबसे आसान तरीका: क्या program चला? नहीं चला → syntax। चला पर रुक गया → runtime। पूरा चला पर जवाब गलत → logical।

1. Syntax error — Python पढ़ ही नहीं पाया

for i in range(5)
    print(i)

SyntaxError: expected ':'

यहाँ colon गायब है। ध्यान दो — कोई traceback नहीं है, क्योंकि program शुरू ही नहीं हुआ। Python ने पूरी file पहले पढ़ी, वहीं अटक गया।

सबसे आम syntax errors:

ढूँढने का तरीका: 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 और उनका एक-लाइन मतलब:

ढूँढने का तरीका: 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:

ढूँढने का तरीका: कोई message नहीं मिलेगा, इसलिए खुद जाँचना पड़ेगा —

  1. ऐसा छोटा input लो जिसका सही जवाब आपको पहले से पता हो
  2. बीच-बीच में print() लगाकर देखो कि किस step तक value सही थी
  3. जहाँ पहली बार 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 नहीं।

सारे free problems देखो →

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

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 ऊपर से जाँचो।

आगे पढ़ो