লিখেছেন: কাজী মুশফিকুর রহমান || সফটওয়্যার প্রকৌশলী, টেকনিয়াস (সফটওয়্যার নির্মাণ প্রতিষ্ঠান) || তারিখঃ 17 নভে., 2024
পাইথনে jump স্টেটমেন্টগুলি লুপের ফ্লো কন্ট্রোল করতে ব্যবহৃত হয়। অর্থাৎ লুপের একটি নির্দিষ্ট পার্ট (অংশ) স্কিপ করতে অথবা লুপ বন্ধ করতে এগুলি সহায়ক। jum স্টেটমেন্টের প্রকার নিচে দেয়া হলো:
এখন আমি এদের প্রত্যেকটি নিয়ে বিস্তারিত আলোচনা করব।
break ও continue স্টেটমেন্টের ব্যবহার
break ও continue উভয়টি ব্যবহার করে লুপের ফ্লো কন্ট্রোল করা যায়। যতক্ষণ পর্যন্ত কন্ডিশন মিথ্যা না হয় ততক্ষণ লুপ একটি নির্দিষ্ট কোড ব্লকের উপরে চলতে থাকে। কিন্তু কখনো আমাদের কারেন্ট ইটারেশন স্টপ করার প্রয়োজন হয়, এমনকি কন্ডিশন চেক করা ছাড়াই আমরা সমগ্র লুপটি বাতিল করতে চাই। এসকল ক্ষেত্রে break ও continue কাজে লাগে। (এগুলো হোয়াইল লুপের ক্ষেত্রেও ব্যবহৃত হয়, পরবর্তীতে আমি এটি নিয়ে বিস্তারিত আলোচনা করব)। এখন আমরা উদাহরণসহ এদের ব্যবহার দেখব।
break স্টেটমেন্টের ব্যবহার
ফর লুপ বন্ধ করতে break স্টেটমেন্ট ব্যবহৃত হয়, এটি যে লুপের মধ্যে থাকে তাকে ব্রেক করে দেয় (ভেঙে দেয়)। অর্থাৎ ইটারেবল অবজেক্ট বা সিকোয়েন্সের আইটেম শেষ না হলেও লুপ বন্ধ হয়ে যায়। এটি যদি নেস্টেড লুপের ভেতরে থাকে তাহলে সবচেয়ে ইনার (ভেতরের) লুপটি ভেঙে দেয়।
সিনটেক্স (Syntax)
for ভ্যারিয়েবল in সিকোয়েন্স:
if কন্ডিশন:
break
কোড:
print('Using break statement')
for number in range(10,20):
if number == 14:
break
print(number)
এখন উপরের কোডটি রান করলে নিচের মত আউটপুট পাব।
আউটপুট:
Using break statement
10
11
12
13
উপরের কোডের প্রথম লাইনে আমি একটি স্ট্রিং প্রিন্ট করেছি। দ্বিতীয় লাইনে একটি ফর লুপ ডিফাইন করেছি যা (10 থেকে 19 পর্যন্ত) ১০টি সংখ্যা প্রিন্ট করবে। তৃতীয় লাইনে ‘ if ’ এর পরে একটি কন্ডিশন (number == 14: অর্থ: যদি নাম্বারটি 14 হয়) দিয়ে চেক করেছি যে, যদি নাম্বারটি 14 হয়, তাহলে চতুর্থ লাইনটি (break স্টেটমেন্ট) এক্সিকিউট কর। অর্থাৎ লুপটি বন্ধ করে দাও।
continue স্টেটমেন্টের ব্যবহার
continue স্টেটমেন্টের সাহায্যে লুপের কারেন্ট (বর্তমান) ইটারেশনের কোড স্কিপ করে পরবর্তী ইটারেশনে মুভ করা যায়। এক্ষেত্রে লুপ বন্ধ হয় না, বরং এটি পরবর্তী ইটারেশনে মুভ করে। এখন আমরা উদাহরণসহ এর ব্যবহার দেখব।
সিনটেক্স (Syntax)
for ভ্যারিয়েবল in সিকোয়েন্স:
if কন্ডিশন:
continue
কোড:
print('Using continue statement')
for number in range(10,17):
if number == 15:
continue
print(number)
এখন উপরের কোডটি রান করলে নিচের মত আউটপুট পাব।
আউটপুট:
Using continue statement
10
11
12
13
14
16
উপরের কোডের প্রথম লাইনে আমি একটি স্ট্রিং প্রিন্ট করেছি। দ্বিতীয় লাইনে একটি ফর লুপ ডিফাইন করেছি যা (10 থেকে 16 পর্যন্ত) ৭টি সংখ্যা প্রিন্ট করবে। তৃতীয় লাইনে ‘ if ’ এর পরে একটি কন্ডিশন (number == 15: অর্থ: যদি নাম্বারটি 15 হয়) দিয়ে চেক করেছি যে, যদি নাম্বারটি 15 হয়, তাহলে চতুর্থ লাইনটি (continue স্টেটমেন্ট) এক্সিকিউট কর। অর্থাৎ 15 প্রিন্ট না করে পরবর্তী সংখ্যা 16 প্রিন্ট কর।
pass স্টেটমেন্টের ব্যবহার
পাইথনে pass স্টেটমেন্ট কিছুই করে না। এটি একটি নাল (null) স্টেটমেন্ট, ইন্টারপ্রেটার এটি রিড করে কিন্তু কোন অপারেশন পারফর্ম করে না। যখন আপনি কোন একটি কোড লিখেন কিন্তু সেটি ইমপ্লিমেন্ট করতে চান না, বরং পরবর্তীতে এক্সিকিউট করতে চান, তখন ‘pass’ ব্যবহার করতে পারেন। যখন প্রোগ্রামার কোডের একটি নির্দিষ্ট অংশ এক্সিকিউট করতে চায় না, তখন এটি ব্যবহার করে থাকে। এটি একটি null (নাল) অপারেশন, সুতরাং যখন স্টেটমেন্টটি রান হবে তখন কিছুই ঘটবে না। এর ইউজ তখনই হয় যখন ডেভেলপারের উদ্দেশ্য হয় শুধু সিন্ট্যাক্সের এক্সপ্রেশন, প্রোগ্রামের এক্সিকিউশন নয়। ‘pass স্টেটমেন্ট’ আর ‘কমেন্ট’ এর মধ্যে পার্থক্য হলো: ইন্টারপ্রেটার pass স্টেটমেন্ট স্কিপ করে চলে যায়, কিন্তু কমেন্ট স্কিপ করে না। এখন আমরা পাইথন কোডে এর ব্যবহার দেখব।
ধরুন, আমরা একটি লুপ বা ফাংশন ডিফাইন করব কিন্তু এখনই সেগুলো ইমপ্লিমেন্ট করার ইচ্ছা নাই, বরং অন্য কোন সময় এক্সিকিউট করব। এখনতো লুপ বা ফাংশন বডি খালি (empty) রাখলে ইন্টারপ্রেটার এরর দিবে। সুতরাং এই বডি ডিফাইন করতে আমরা pass স্টেটমেন্ট ব্যবহার করব, যা কিছুই করবে না।
কোড:
def my_function():
pass
my_function()
উপরে কোডের প্রথম লাইনে আমি my_function নামে একটি ফাংশন ডিফাইন করেছি। দ্বিতীয় লাইনে (ফাংশন বডিতে) pass স্টেটমেন্টটি ব্যবহার করেছি, এর অর্থ হলো: আমি ফাংশন ডিফাইন করেছি ঠিকই কিন্তু কোনো কোড এক্সিকিউট করতে চাচ্ছি না। তাই আমি ফাংশন বডিতে কোনো কোড লিখিনি। তৃতীয় লাইনে ফাংশনটি কল করেছি, কিন্তু কোডটি রান করে কোন আউটপুট পাইনি।
আউটপুট:
এখন আমরা pass স্টেটমেন্ট ব্যবহার করে আরেকটি প্রোগ্রাম লিখব।
কোড:
language = 'Bangla'
for letter in language:
if letter == 'g':
pass
else:
print(letter)
উপরের কোডের প্রথম লাইনে আমি একটি স্ট্রিং ডিফাইন করেছি। দ্বিতীয় লাইনে একটি ফর লুপ ডিফাইন করেছি, যেখানে letter ইটারেটর language নামক স্ট্রিং থেকে একেকটি করে সবগুলো ক্যারেক্টর গ্রহণ করবে। তৃতীয় লাইনে ‘ if ’ এর পরে একটি কন্ডিশন (letter == 'g': অর্থ: যদি ক্যারেক্টারটি g হয়) দিয়ে চেক করেছি যে, যদি যদি ক্যারেক্টারটি g হয়, তাহলে চতুর্থ লাইনটি (pass স্টেটমেন্ট) এক্সিকিউট কর। অর্থাৎ কিছুই ঘটবে না। তাইতো কোডটি রান করলে g ছাড়া ‘Bangla’ স্ট্রিংয়ের সবগুলো ক্যারেক্টার প্রিন্ট হয়েছে।
আউটপুট:
B
a
n
l
a
ক্লাস ডিফাইন করতেও আমরা একই কাজ করতে পারি।
class Student:
pass
0