मैं अजगर में "अप्रत्याशित इंडेंट" त्रुटि को कैसे ठीक करूं?
मैं अजगर में "अप्रत्याशित इंडेंट" त्रुटि को कैसे ठीक करूं?
जवाबों:
कोड ब्लॉक शुरू होने और समाप्त होने पर निर्धारित करने के लिए पायथन लाइन की शुरुआत में रिक्ति का उपयोग करता है। आपके द्वारा प्राप्त त्रुटियाँ हैं:
अप्रत्याशित मांगपत्र। कोड की इस पंक्ति में पहले की तुलना में अधिक स्थान हैं, लेकिन पहले वाला सबब्लॉक की शुरुआत नहीं है (उदाहरण के लिए / जबकि / बयान के लिए)। एक ब्लॉक में कोड की सभी पंक्तियों को व्हाट्सएप के बिल्कुल समान स्ट्रिंग से शुरू होना चाहिए। उदाहरण के लिए:
>>> def a():
... print "foo"
... print "bar"
IndentationError: unexpected indent
यह एक विशेष रूप से सामान्य है जब अंतःक्रियात्मक रूप से चल रहा है: सुनिश्चित करें कि आपने अपने आदेशों से पहले कोई अतिरिक्त स्थान नहीं रखा है। (उदाहरण के कोड को कॉपी-पेस्ट करने पर बहुत कष्टप्रद!)
>>> print "hello"
IndentationError: unexpected indent
Unindent किसी भी बाहरी इंडेंटेशन स्तर से मेल नहीं खाता है। कोड की इस पंक्ति में पहले की तुलना में शुरुआत में कम स्थान हैं, लेकिन समान रूप से यह किसी अन्य ब्लॉक से मेल नहीं खाता है जो इसका हिस्सा हो सकता है। अजगर तय नहीं कर सकता कि वह कहाँ जाता है। उदाहरण के लिए, निम्नलिखित में, अंतिम प्रिंट अगर क्लॉज का हिस्सा माना जाता है, या नहीं?
>>> if user == "Joey":
... print "Super secret powers enabled!"
... print "Revealing super secrets"
IndendationError: unindent does not match any outer indentation level
एक दांतेदार ब्लॉक की उम्मीद की उम्मीद थी। कोड की इस लाइन में शुरुआत में पहले की तरह ही रिक्त स्थान है, लेकिन अंतिम पंक्ति में ब्लॉक शुरू होने की उम्मीद थी (जैसे कि / जबकि / बयान के लिए, फ़ंक्शन परिभाषा)।
>>> def foo():
... print "Bar"
IndentationError: expected an indented block
यदि आप ऐसा फ़ंक्शन चाहते हैं जो कुछ भी नहीं करता है, तो "नो-ऑप" कमांड पास का उपयोग करें :
>>> def foo():
... pass
टैब और रिक्त स्थान को मिलाने की अनुमति है (कम से कम मेरे पायथन के संस्करण पर), लेकिन पायथन मान लेता है कि टैब 8 वर्ण लंबे हैं, जो आपके संपादक से मेल नहीं खा सकते हैं। टैब के लिए बस "नहीं" कहें। अधिकांश संपादक उन्हें स्वचालित रूप से रिक्त स्थान द्वारा प्रतिस्थापित करने की अनुमति देते हैं।
इन मुद्दों से बचने का सबसे अच्छा तरीका यह है कि जब आप सबब्लॉक का इंडेंट करें, तो लगातार स्पेस का उपयोग करें और आदर्श रूप से एक अच्छी IDE का उपयोग करें जो आपके लिए समस्या का हल करे। यह आपके कोड को अधिक पठनीय भी बनाएगा।
पायथन में, रिक्ति बहुत महत्वपूर्ण है, यह आपके कोड ब्लॉक की संरचना देता है। यह त्रुटि तब होती है जब आप अपनी कोड संरचना को गड़बड़ करते हैं, उदाहरण के लिए:
def test_function() :
if 5 > 3 :
print "hello"
आपकी फ़ाइल में टैब और रिक्त स्थान का मिश्रण भी हो सकता है।
मेरा सुझाव है कि आप PyScripter , या Netbeans की तरह एक अजगर वाक्यविन्यास जागरूक संपादक का उपयोग करें
जो भी संपादक आप उपयोग कर रहे हैं उसमें दृश्य व्हाट्सएप चालू करें और टैब को रिक्त स्थान के साथ चालू करें।
जबकि आप पायथन मिश्रण टैब के साथ टैब का उपयोग कर सकते हैं और अंतरिक्ष आमतौर पर उस त्रुटि की ओर जाता है जिसे आप अनुभव कर रहे हैं। 4 स्थानों के साथ टैब को बदलना पायथन कोड लिखने के लिए अनुशंसित दृष्टिकोण है।
यदि आप उदात्त का उपयोग करके पायथन लिख रहे हैं और इंडेंटेशन त्रुटियों को प्राप्त कर रहे हैं,
दृश्य -> इंडेंटेशन -> इंडेंटेशन को स्पेस में बदलें
मैं जिस समस्या का वर्णन कर रहा हूं वह सबलेम टेक्स्ट एडिटर के कारण है। यही समस्या अन्य संपादकों के कारण भी हो सकती है। अनिवार्य रूप से, इस मुद्दे को पायथन को रिक्त स्थान के संदर्भ में इंडेंटेशन का इलाज करना चाहता है, विभिन्न संपादकों को टैब के संदर्भ में इंडेंटेशन को कोड करना है।
सुनिश्चित करें कि आप अपने संपादक में "टैब के बजाय रिक्त स्थान डालें" विकल्प का उपयोग करें। तब आप चुन सकते हैं कि आप टैब की चौड़ाई चाहते हैं, उदाहरण के लिए 4. आप संपादित करें के तहत gedit में उन विकल्पों को पा सकते हैं -> वरीयताएँ -> संपादक।
निचला रेखा: USE SPACES टैब नहीं है
पायथन इंटरप्रेटर (टर्मिनल / कंसोल) में कुछ चिपकाने पर यह त्रुटि भी हो सकती है।
ध्यान दें कि दुभाषिया एक अभिव्यक्ति के अंत के रूप में एक खाली रेखा की व्याख्या करता है, इसलिए यदि आप किसी चीज़ में पेस्ट करते हैं
def my_function():
x = 3
y = 7
दुभाषिया y = 7
अभिव्यक्ति के अंत से पहले खाली लाइन की व्याख्या करेगा , यानी कि आप अपने कार्य को परिभाषित कर रहे हैं, और अगली पंक्ति में - y = 7
गलत इंडेंटेशन होगा क्योंकि यह एक नई अभिव्यक्ति है।
एक मुद्दा जिसका उल्लेख नहीं किया गया है, वह यह है कि यह त्रुटि कोड की समस्या के कारण उत्पन्न हो सकती है, जिसका इंडेंटेशन से कोई लेना-देना नहीं है।
उदाहरण के लिए, निम्नलिखित स्क्रिप्ट लें:
def add_one(x):
try:
return x + 1
add_one(5)
IndentationError: unexpected unindent
जब समस्या निश्चित रूप से एक गायब except:
बयान है तो यह वापस आ जाता है।
मेरा बिंदु: ऊपर कोड की जाँच करें जहाँ अप्रत्याशित (संयुक्त) इंडेंट की सूचना दी गई है!
यदि इंडेंटेशन ठीक दिखता है, तो यह देखने के लिए एक नज़र रखें कि क्या आपके संपादक के पास "व्हॉट्सएप" विकल्प है। इसे सक्षम करने से यह पता लगाने की अनुमति मिलनी चाहिए कि रिक्त स्थान और टैब कहाँ मिश्रित हैं।
एक चाल है कि हमेशा मेरे लिए काम किया है:
यदि आपको मिला और अप्रत्याशित इंडेंट है और आप देखते हैं कि सभी कोड पूरी तरह से इंडेंट हैं, तो इसे दूसरे संपादक के साथ खोलने का प्रयास करें और आप देखेंगे कि कोड की कौन सी लाइन इंडेंट नहीं है।
मेरे साथ ऐसा तब हुआ जब मैंने विम, गेदिट या संपादकों का इस्तेमाल किया।
अपने कोड के लिए केवल 1 संपादक का उपयोग करने का प्रयास करें।
बस अपनी स्क्रिप्ट को कॉपी करें और "" आपका पूरा कोड "" "...
इस लाइन को एक चर में निर्दिष्ट करें .. जैसे,
a = """ your python script """
print a.replace('here please press tab button it will insert some space"," here simply press space bar four times")
# here we replacing tab space by four char space as per pep 8 style guide..
अब इस कोड को निष्पादित करें, Sublime Editor में ctrl + b का उपयोग करके, अब यह कंसोल में इंडेंटेड कोड प्रिंट करेगा। बस
आपको केवल निम्नलिखित कोड की शुरुआत से रिक्त स्थान या टैब रिक्त स्थान निकालने की आवश्यकता है
from django.contrib import admin
# Register your models here.
from .models import Myapp
admin.site.register(Myapp)
इसे हल करने के लिए निम्नलिखित कमांड चलाएँ:
autopep8 -i <filename>.py
यह आपके कोड को अपडेट करेगा और सभी इंडेंटेशन त्रुटियों को हल करेगा :)
उम्मीद है कि यह हल हो जाएगा
नोटपैड ++ टैब स्पेस को सही दे रहा था, लेकिन इंडेंटेशन की समस्या आखिरकार सबलाइम टेक्स्ट एडिटर में पाई गई।
उदात्त पाठ संपादक का उपयोग करें और लाइन से लाइन पर जाएं
कई अन्य प्रोग्रामिंग भाषाओं के विपरीत, पायथन में इंडेंटेशन महत्वपूर्ण है और यह कोड पठनीयता के लिए नहीं है। यदि लगातार आदेशों के बीच आपके कोड में कोई सफेद स्थान या टैब है, तो अजगर यह त्रुटि देगा क्योंकि पायथन इस के प्रति संवेदनशील है। जब हम किसी पायथन पर कोड की कॉपी और पेस्ट करते हैं तो हमें यह त्रुटि मिलने की संभावना होती है। नोटपैड ++ जैसे टेक्स्ट एडिटर का उपयोग करके इन स्पेस को पहचानना और निकालना सुनिश्चित करें या कोड की लाइन से व्हाट्सएप को मैन्युअल रूप से हटा दें जहां आपको एक त्रुटि मिल रही है।
Step1 :Gives error
L = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]
print(L[2: ])
Step2: L = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]print(L[2: ])
Step3: No error after space was removed
L = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]
print(L[2: ])
OUTPUT: [[7, 8, 9, 10]]
धन्यवाद!