পাইথন ইন্ডেন্টেশন (Indentation)

লিখেছেন: কাজী মুশফিকুর রহমান || সফটওয়্যার প্রকৌশলী, টেকনিয়াস (সফটওয়্যার নির্মাণ প্রতিষ্ঠান) || তারিখঃ 04 মে, 2024


পাইথন একটি প্রসিডিউরাল ল্যাঙ্গুয়েজ। অর্থাৎ কোড একটি নির্দিষ্ট স্ট্রাকচার অনুযায়ী কাজ করে, অন্যথায় ইন্টারপ্রেটার এরর রেইজ করে প্রোগ্রামটির এক্সিকিউশন বন্ধ করে দেয়। অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজে কোডের ব্লক তৈরি করা হয় সেকেন্ড ব্রাকেট ‘{ }’ ব্যবহার করে, তবে পাইথনে এই কাজটি করা হয় ইন্ডেন্টেশন (কোডের লাইনের শুরুতে ৪ টি হোয়াইট স্পেস) এর মাধমে। কিবোর্ডের ট্যাব বাটন ক্লিক করেও ইন্ডেন্টেশন তৈরী করা যায়, আবার পাইথন এডিটরে কোড লিখলে ডিফল্টভাবে এটি তৈরী হয়। সুতরাং কোড লিখার সময় যথাযথ ইন্ডেন্টেশন মেইনটেইন  না করলে প্রোগ্রামটি বন্ধ হয়ে যায় এবং একটি এরর ম্যাসেজ শো করে।

 

 

উপরের কোডের প্রথম লাইনে number ভ্যারিয়েবল এর মধ্যে 10 এসাইন করা হয়েছে, দ্বিতীয় লাইনে চেক করা হয়েছে যে, নাম্বারটি 10 এর সমান কি না। যেহেতু এক্ষেত্রে নাম্বারটি 10 এর সমান, তাই এ কন্ডিশনটি True হবে এবং এর অধীনে পরবর্তী লাইন প্রিন্ট হবে (কাজ করবে)। তৃতীয় লাইনে কোডটি স্পেস দিয়ে শুরু হয়েছে, এটাই হলো কোডের ইন্ডেন্টেশন (কোডের লাইনের শুরুতে ৪ টি হোয়াইট স্পেস)। চতুর্থ লাইনে (else অর্থ: অন্যথায়) চেক করা হয়েছে যে, যদি নাম্বারটি 10 এর সমান না হয়, তাহলে কন্ডিশনটি False হবে। যেহেতু এক্ষেত্রে নাম্বারটি 10 এর সমান নয়, তাই এ কন্ডিশনটি False হয়েছে এবং এর অধীনে পরবর্তী লাইন (কাজ করেনি) প্রিন্ট হয়নি।

এখানে উল্লেখ্য যে, ‘==’ চিহ্নটি দুটি ভ্যালু সমান কি না সেটা চেক করার জন্য ব্যবহৃত হয়। আর ‘=’ চিহ্নটি হচ্ছে এসাইনমেন্ট অপারেটর, যার মাধ্যমে একটি নির্দিষ্ট ভ্যালু কে কোন একটি ভ্যারিয়েবলের মধ্যে এসাইন (স্টোর) করা যায়। এখন কোডটি রান করলে নিচের মত আউটপুট দিবে।

আউটপুট:

number is:  10

 

বিশেষ দ্রষ্টব্যঃ If-else স্টেটমেন্ট নিয়ে আমি পরবর্তীতে বিস্তারিত আলোচনা করব, এখন শুধু ইন্ডেন্টেশন বুঝার জন্য যতটুকু না হলে নয় ততটুকু বলেছি।

 

ইন্ডেন্টেশন এরর (IndentationError)

সাধারণত বিগিনার শিক্ষার্থীরা পাইথন প্রোগ্রাম লিখার ক্ষেত্রে খুব বেশি ইন্ডেন্টেশন এররের সম্মুখীন হয়। এ সমস্যা সমাধানে নিম্নলিখিত সতর্কতা অবলম্বন করা যেতে পারে:

  • কোড লিখার সময় খেয়াল রাখতে হবে, যেন স্পেস এবং ট্যাব উভয়টি একসাথে ব্যবহার করা না হয়।
  • নরমালি কম্পাউন্ড স্টেটমেন্ট (যেমন: if-else, ফর লুপ, হোয়াইল লুপ ইত্যাদি) এর ক্ষেত্রে ইন্ডেন্টেশন বেশি মিস হয়। (পরবর্তীতেকম্পাউন্ড স্টেটমেন্ট নিয়ে আমি বিস্তারিত আলোচনা করব)।
  • ফাংশন এবং ক্লাস ডিফাইন করার ক্ষেত্রে এই ভুলটি অধিক হয়। (পরবর্তীতে ফাংশন এবং ক্লাস  নিয়ে আমি বিস্তারিত আলোচনা করব)।

 

এখন আমরা কোডের মাধ্যমে ইন্ডেন্টেশন এরর  এর একটি উদাহরণ দেখব।

কোড:

number = 10

if number == 10:

print('number is: ', number)

 

এখানে আমি হুবহু উপরের কোডই ব্যবহার করেছি, তবে তৃতীয় লাইনে ইন্ডেন্টেশন (কোডের লাইনের শুরুতে ৪ টি হোয়াইট স্পেস) মেইনটেইন করিনি। তাই পাইথন একটি এরর মেসেজ (IndentationError: expected an indented block) শো করবে। মেসেজটির অর্থ হলো: ‘একটি ইন্ডেন্টেড ব্লক প্রত্যাশিত’, অর্থাৎ লাইনটি ৪ টি হোয়াইট স্পেস দিয়ে শুরু হতে হবে। এখন কোডটি রান করলে নিচের মত আউটপুট দিবে।

আউটপুট: