পাইথনের "অপ্রত্যাশিত ইনডেন্ট" ত্রুটিটি কীভাবে সংশোধন করব?
পাইথনের "অপ্রত্যাশিত ইনডেন্ট" ত্রুটিটি কীভাবে সংশোধন করব?
উত্তর:
কোড ব্লক কখন শুরু হয় এবং শেষ হয় তা নির্ধারণ করতে পাইথন লাইনের শুরুতে ব্যবধান ব্যবহার করে। ত্রুটিগুলি আপনি পেতে পারেন:
অপ্রত্যাশিত খাঁজ. কোডের এই লাইনটির শুরুতে আগেরটির চেয়ে বেশি স্পেস রয়েছে, তবে এর আগের একটিটি সাব-ব্লকের শুরু নয় (যেমন / যখন / বিবৃতি দেওয়ার জন্য)। কোনও ব্লকের কোডের সমস্ত লাইন অবশ্যই সাদা রঙের একই স্ট্রিং দিয়ে শুরু করতে হবে। এই ক্ষেত্রে:
>>> def a():
... print "foo"
... print "bar"
IndentationError: unexpected indent
আন্তঃসংযোগমূলকভাবে অজগরটি চালানোর সময় এটি একটি সাধারণ বিষয়: নিশ্চিত হয়ে নিন যে আপনি আপনার কমান্ডগুলির আগে কোনও অতিরিক্ত স্পেস রাখবেন না। (উদাহরণ কোডটি অনুলিপি এবং-পেস্ট করার সময় খুব বিরক্তিকর!)
>>> print "hello"
IndentationError: unexpected indent
আনইন্ডেন্ট কোনও বাহ্যিক ইনডেন্টেশন স্তরের সাথে মেলে না। কোডের এই লাইনটির শুরুতে আগের চেয়ে কম স্পেস রয়েছে তবে এটি সমানভাবে এটি অন্য কোনও ব্লকের সাথে মেলে না এটি এর অংশ হতে পারে। পাইথন কোথায় যায় তা সিদ্ধান্ত নিতে পারে না। উদাহরণস্বরূপ, নিম্নলিখিতটিতে, চূড়ান্ত মুদ্রণটি যদি অনুচ্ছেদের অংশ হিসাবে অনুমিত হয়, না?
>>> 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 টি অক্ষর দীর্ঘ, যা আপনার সম্পাদকের সাথে মেলে না। ট্যাবগুলিতে কেবল "না" বলুন। বেশিরভাগ সম্পাদক তাদের স্পেস দ্বারা স্বয়ংক্রিয়ভাবে প্রতিস্থাপনের অনুমতি দেয়।
এই সমস্যাগুলি এড়ানোর সর্বোত্তম উপায় হ'ল আপনি যখন সাব-ব্লকটি ইনডেন্ট করেন তখন সর্বদা অবিচ্ছিন্ন সংখ্যক স্পেস ব্যবহার করা এবং আদর্শভাবে একটি ভাল আইডিই ব্যবহার করা যা আপনার সমস্যার সমাধান করে। এটি আপনার কোডকে আরও পঠনযোগ্য করে তুলবে।
except
একটি try
ধারাটির অংশটি হারিয়েছে । কোডটি ঠিক দেখাচ্ছে (যেটিতে আনইন্ডেন্টেড লাইনটি try
ব্লকের বাইরে রয়েছে ) তবে পাইথন এটি 'অপ্রত্যাশিত ইনডেন্ট' ত্রুটি হিসাবে প্রতিবেদন করেছে। except
সম্ভবত এটি ব্যবহার করে এটি এখানে সংশোধন করা হয়েছেpass
( এখানে এখানে )
পাইথনে, ব্যবধানটি খুব গুরুত্বপূর্ণ, এটি আপনার কোড ব্লকগুলির কাঠামো দেয়। এই ত্রুটিটি ঘটে যখন আপনি আপনার কোডের কাঠামো বিশৃঙ্খলা করেন, উদাহরণস্বরূপ:
def test_function() :
if 5 > 3 :
print "hello"
আপনার ফাইলটিতে ট্যাব এবং স্পেসের মিশ্রণও থাকতে পারে।
আমি আপনার মত একটি পাইথন সিনট্যাক্স সচেতন সম্পাদক ব্যবহার সুপারিশ PyScripter , অথবা Netbeans
আপনি যেই সম্পাদক ব্যবহার করছেন তাতে দৃশ্যমান শ্বেত স্পেস চালু করুন এবং ফাঁকা স্থানগুলি সহ ট্যাবগুলি প্রতিস্থাপন করুন।
আপনি পাইথন মিক্সিং ট্যাব এবং স্পেসের সাথে ট্যাবগুলি ব্যবহার করতে গিয়ে সাধারণত আপনার ত্রুটি হয়। 4 স্পেসের সাথে ট্যাবগুলি প্রতিস্থাপন করা পাইথন কোড লেখার জন্য প্রস্তাবিত পদ্ধতি।
আপনি যদি সাবাইম ব্যবহার করে পাইথন লিখছেন এবং ইনডেন্টেশন ত্রুটি পেয়ে থাকেন,
দেখুন -> ইনডেন্টেশন -> ইনডেন্টেশনকে স্পেসে রূপান্তর করুন
আমি যে ইস্যুটি বর্ণনা করছি তা সাব্লাইম টেক্সট এডিটর দ্বারা সৃষ্ট। একই সমস্যা অন্যান্য সম্পাদকদের দ্বারাও হতে পারে। মূলত, পাইথনের সাথে অ্যাডেন্টেশনগুলি ট্র্যাকগুলির শর্তে ইনডেন্টেশনগুলি কোডিংয়ের বিপরীতে বিভিন্ন সম্পাদকের বিপরীতে স্পেসের ক্ষেত্রে ইন্ডেন্টেশনগুলি ব্যবহার করতে ইচ্ছুক ছিল with
নিশ্চিত হয়ে নিন যে আপনি আপনার সম্পাদকে "ট্যাবগুলির পরিবর্তে স্পেস সন্নিবেশ করান" বিকল্পটি ব্যবহার করছেন। তারপরে আপনি বেছে নিতে পারেন যে আপনি একটি ট্যাব প্রস্থ চান, উদাহরণস্বরূপ ৪. আপনি সম্পাদনা -> পছন্দসমূহ -> সম্পাদকের অধীনে এই বিকল্পগুলি gedit এ খুঁজে পেতে পারেন।
নীচের লাইন: ব্যবহার করুন স্পেসগুলি ট্যাব নয়
পাইথন ইন্টারপ্রেটারে (টার্মিনাল / কনসোল) কোনও কিছু আটকালেও এই ত্রুটি দেখা দিতে পারে।
মনে রাখবেন যে দোভাষা একটি শূন্য রেখাকে একটি এক্সপ্রেশনের শেষে হিসাবে ব্যাখ্যা করে, তাই যদি আপনি এমন কিছুতে পেস্ট করেন
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..
এখন 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]]
ধন্যবাদ!