কম্পিউটার টিউটোরিয়াল

পাইথন লুপ নিয়ন্ত্রণ আয়ত্ত করা:বিরতি ব্যবহার করে, চালিয়ে যান এবং কার্যকরীভাবে স্টেটমেন্ট পাস করুন

পরিচয়

লুপগুলির জন্য ব্যবহার করা হচ্ছে৷ এবং লুপ করার সময় পাইথনে আপনাকে স্বয়ংক্রিয় এবং দক্ষতার সাথে কাজগুলি পুনরাবৃত্তি করতে দেয়। এই লুপগুলি পাইথনের মৌলিক গঠন যা আপনাকে তালিকা, টিপলস এবং স্ট্রিংগুলির মতো সিকোয়েন্সের উপর পুনরাবৃত্তি করতে বা শর্তের উপর ভিত্তি করে বারবার কোডের একটি ব্লক কার্যকর করতে সক্ষম করে।

যাইহোক, এমন পরিস্থিতি রয়েছে যেখানে আপনার লুপগুলির প্রবাহের উপর আপনার আরও নিয়ন্ত্রণের প্রয়োজন। উদাহরণস্বরূপ, আপনি এমন একটি পরিস্থিতির সম্মুখীন হতে পারেন যেখানে আপনাকে সময়ের আগে একটি লুপ থেকে প্রস্থান করতে হবে, বর্তমান পুনরাবৃত্তি এড়িয়ে যেতে হবে বা ভবিষ্যতের কোডের জন্য কেবল একটি স্থানধারক থাকতে হবে। পাইথন এই কেসগুলি পরিচালনা করার জন্য তিনটি শক্তিশালী বিবৃতি প্রদান করে:break , continue , এবং pass .

  • break বিবৃতি আপনাকে একটি নির্দিষ্ট শর্ত পূরণ করার সময় সম্পূর্ণরূপে একটি লুপ থেকে প্রস্থান করার অনুমতি দেয়, কার্যকরভাবে লুপ সম্পাদন বন্ধ করে৷
  • continue বিবৃতি আপনাকে বর্তমান পুনরাবৃত্তির জন্য লুপের মধ্যে বাকি কোডটি এড়িয়ে যেতে এবং পরবর্তী পুনরাবৃত্তিতে যেতে দেয়৷
  • pass বিবৃতি একটি নাল অপারেশন; এটি লুপ, ফাংশন, ক্লাস বা শর্তসাপেক্ষে একটি স্থানধারক হিসাবে ব্যবহৃত হয় যেখানে কোড সিনট্যাক্টিক্যালি প্রয়োজন কিন্তু আপনার কার্যকর করার কিছু নেই৷

এই বিবৃতিগুলি বোঝা এবং ব্যবহার করা লুপ নিয়ন্ত্রণ প্রবাহ পরিচালনা করার আপনার ক্ষমতাকে উল্লেখযোগ্যভাবে উন্নত করতে পারে, আপনার কোডটিকে আরও দক্ষ এবং সহজে পড়তে পারে। এই নিবন্ধটি পাইথনের break ব্যবহার করার জন্য একটি ব্যাপক নির্দেশিকা প্রদান করে , continue , এবং pass কার্যকরভাবে প্রবাহ নিয়ন্ত্রণ করতে loops মধ্যে বিবৃতি. এটি ব্যবহারিক কোড উদাহরণ এবং আউটপুট প্রদর্শন সহ প্রতিটি বিবৃতির উদ্দেশ্য এবং আচরণ ব্যাখ্যা করে। নিবন্ধটি মাল্টি-লেভেল লুপ প্রস্থানের পদ্ধতি সহ উন্নত লুপ নিয়ন্ত্রণ কৌশলগুলিও অন্বেষণ করে এবং কম পরিচিত else প্রবর্তন করে ক্লিনার পোস্ট-লুপ যুক্তির জন্য লুপ সহ ধারা। বাস্তব-বিশ্বের পরিস্থিতি যেমন ডাটা পার্সিং, ফাইল স্ক্যানিং এবং ম্যাট্রিক্স ট্রাভার্সাল ব্যবহারিক পাইথন প্রোগ্রামিং-এ এই ধারণাগুলি কীভাবে প্রযোজ্য তা দেখানোর জন্য অন্তর্ভুক্ত করা হয়েছে।

একটি পাইথন প্রকল্প স্থাপন করতে হবে এবং এটি দ্রুত লাইভ করতে হবে? DigitalOcean অ্যাপ প্ল্যাটফর্ম দেখুন এবং মিনিটের মধ্যে GitHub থেকে সরাসরি একটি পাইথন প্রকল্প স্থাপন করুন।

প্রধান টেকওয়ে

  • break পাইথনের বিবৃতি আপনাকে একটি নির্দিষ্ট শর্ত পূরণ করার সাথে সাথে একটি লুপ থেকে প্রস্থান করার অনুমতি দেয়, যা বিশেষত অনুসন্ধান বা যাচাইকরণ ক্রিয়াকলাপের সময় তাড়াতাড়ি বন্ধ করার জন্য দরকারী৷
  • continue বিবৃতিটি বর্তমান পুনরাবৃত্তির বাকি অংশগুলি এড়িয়ে যায় এবং লুপের পরবর্তী চক্রে চলে যায়, গভীরভাবে নেস্টেড শর্তাবলী এড়াতে এবং লুপের স্বচ্ছতা উন্নত করতে সহায়তা করে৷
  • pass স্টেটমেন্ট হল একটি সিনট্যাকটিক প্লেসহোল্ডার যেটি কোন ক্রিয়া সম্পাদন করে না, সাধারণত ব্যবহৃত হয় যখন কোডের একটি ব্লক সিনট্যাক্টিকভাবে প্রয়োজন হয় কিন্তু যুক্তিটি এখনও কার্যকর করা হয়নি।
  • যেহেতু পাইথনে একাধিক নেস্টেড লুপ ভাঙার জন্য স্থানীয় সমর্থনের অভাব রয়েছে, তাই শর্ত ট্র্যাক করতে এবং বাইরের লুপ আচরণ নিয়ন্ত্রণ করার জন্য একটি ফ্ল্যাগ ভেরিয়েবল ব্যবহার করা একটি বাস্তব সমাধান।
  • একটি ফাংশনে লুপ লজিক এনক্যাপসুলেট করা এবং return ব্যবহার করা আপনাকে পরিষ্কারভাবে পুনরাবৃত্তির একাধিক স্তর থেকে প্রস্থান করার অনুমতি দেয় এবং কোড মডুলারিটি এবং রক্ষণাবেক্ষণযোগ্যতা উন্নত করে৷
  • যদিও ব্যতিক্রমগুলি নেস্টেড লুপগুলি থেকে প্রস্থান করতে ব্যবহার করা যেতে পারে, তবে সেগুলি সত্যিই ব্যতিক্রমী অবস্থার জন্য সংরক্ষিত হওয়া উচিত এবং কর্মক্ষমতা এবং পাঠযোগ্যতার উদ্বেগের কারণে নিয়মিত লুপ নিয়ন্ত্রণের জন্য নির্ভর করা উচিত নয়৷
  • else for-এ ধারা এবং while লুপগুলি শুধুমাত্র তখনই কার্যকর হয় যখন লুপটি break হিট না করেই স্বাভাবিকভাবে সম্পূর্ণ হয় , স্পষ্ট এবং সংক্ষিপ্ত "পাওয়া যায়নি" যুক্তি প্রয়োগ করার জন্য এটি আদর্শ।

পূর্বশর্ত

আপনার কম্পিউটার বা সার্ভারে পাইথন 3 ইনস্টল করা এবং একটি প্রোগ্রামিং পরিবেশ থাকা উচিত। আপনার যদি কোনো প্রোগ্রামিং এনভায়রনমেন্ট সেট আপ না থাকে, আপনি আপনার অপারেটিং সিস্টেমের (উবুন্টু, সেন্টোস, ডেবিয়ান, ইত্যাদি) জন্য উপযুক্ত আপনার সার্ভারে একটি স্থানীয় পাইথন প্রোগ্রামিং এনভায়রনমেন্ট সেট আপ করার জন্য ইনস্টলেশন এবং সেটআপ গাইড দেখতে পারেন।

ব্রেক স্টেটমেন্ট

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

তথ্য: এই টিউটোরিয়ালে উদাহরণ কোড সহ অনুসরণ করতে, python3 চালিয়ে আপনার স্থানীয় সিস্টেমে একটি পাইথন ইন্টারেক্টিভ শেল খুলুন আদেশ তারপরে আপনি >>>-এর পরে উদাহরণ যোগ করে কপি, পেস্ট বা সম্পাদনা করতে পারেন প্রম্পট।

আসুন একটি উদাহরণ দেখি যা break ব্যবহার করে একটি for এ বিবৃতি লুপ:

number = 0
for number in range(10):
 if number == 5:
 break # break here
 print('Number is ' + str(number))
print('Out of loop')

পরিবর্তনশীল number এই ছোট প্রোগ্রামে 0 এ আরম্ভ করা হয়। তারপর, একটি for range(10) দ্বারা সংজ্ঞায়িত হিসাবে 0 থেকে 9 সংখ্যার মাধ্যমে পুনরাবৃত্তি করার জন্য লুপ তৈরি করা হয় .

দ্রষ্টব্য :যদিও number প্রাথমিকভাবে 0 এ সেট করা হয়েছে, এই মানটি অবিলম্বে for দ্বারা ওভাররাইট করা হয়েছে লুপ, যা range() থেকে নতুন মান নির্ধারণ করে প্রতিটি পুনরাবৃত্তিতে।

for-এর মধ্যে লুপ, একটি if বিবৃতি শর্ত উপস্থাপন করে যে if পরিবর্তনশীল number পূর্ণসংখ্যা 5 এর সমতুল্য, তখন লুপ ভেঙ্গে যাবে। আপনি for ব্যবহার সম্পর্কে আরও জানতে পাইথনে ব্যবহার করার জন্য() লুপের এই টিউটোরিয়ালটি দেখতে পারেন লুপ।

লুপের মধ্যেও একটি print() আছে বিবৃতি যা for এর প্রতিটি পুনরাবৃত্তির সাথে কার্যকর হবে লুপ ভাঙ্গা না হওয়া পর্যন্ত লুপ করুন, যেহেতু এটি break এর পরে বিবৃতি।

একটি চূড়ান্ত print() রাখি for এর বাইরের বিবৃতি আপনি যখন লুপের বাইরে আছেন তা জানতে লুপ করুন৷

যখন আপনি এই কোডটি চালান, আপনি নিম্নলিখিত আউটপুট পাবেন:

Number is 0
Number is 1
Number is 2
Number is 3
Number is 4
Out of loop

এটি দেখায় যে একবার পূর্ণসংখ্যা number 5 এর সমতুল্য হিসাবে মূল্যায়ন করা হয়, লুপটি ভেঙে যায়, কারণ প্রোগ্রামটিকে break দিয়ে তা করতে বলা হয় বিবৃতি।

break বিবৃতি একটি প্রোগ্রাম একটি লুপ থেকে বিরতি ঘটায়।

বিবৃতি চালিয়ে যান

continue স্টেটমেন্ট আপনাকে একটি লুপের অংশটি এড়িয়ে যেতে দেয় যেখানে একটি বাহ্যিক অবস্থা ট্রিগার হয়, কিন্তু বাকি লুপ সম্পূর্ণ করতে যেতে। লুপের বর্তমান পুনরাবৃত্তি ব্যাহত হবে, কিন্তু প্রোগ্রামটি লুপের শীর্ষে ফিরে আসবে৷

continue বিবৃতিটি লুপ স্টেটমেন্টের অধীনে কোড ব্লকের মধ্যে থাকবে, সাধারণত শর্তসাপেক্ষ if এর পরে বিবৃতি।

একই for ব্যবহার করে লুপ প্রোগ্রাম যেমন break উপরে বিবৃতি বিভাগে, আমরা একটি continue ব্যবহার করব একটি break এর পরিবর্তে বিবৃতি বিবৃতি:

number = 0
for number in range(10):
 if number == 5:
 continue # continue here
 print('Number is ' + str(number))
print('Out of loop')

continue ব্যবহারে পার্থক্য একটি break এর পরিবর্তে বিবৃতি বিবৃতি হল যে পরিবর্তনশীল number হলে বাধা সত্ত্বেও আমাদের কোড চলতে থাকবে 5 এর সমতুল্য হিসাবে মূল্যায়ন করা হয়। আসুন আমাদের আউটপুট পর্যালোচনা করি:

Number is 0
Number is 1
Number is 2
Number is 3
Number is 4
Number is 6
Number is 7
Number is 8
Number is 9
Out of loop

এখানে, Number is 5 আউটপুটে কখনই ঘটে না, তবে লুপটি ছাড়ার আগে 6-9 নম্বরের লাইনগুলি মুদ্রণের জন্য সেই পয়েন্টের পরে লুপ চলতে থাকে।

আপনি continue ব্যবহার করতে পারেন গভীরভাবে নেস্টেড কন্ডিশনাল কোড এড়াতে বা ঘন ঘন ঘটতে থাকা কেসগুলিকে আপনি প্রত্যাখ্যান করতে চান তা বাদ দিয়ে একটি লুপ অপ্টিমাইজ করার জন্য বিবৃতি৷

continue স্টেটমেন্টের কারণে একটি প্রোগ্রাম কিছু ফ্যাক্টর এড়িয়ে যায় যা একটি লুপের মধ্যে আসে কিন্তু তারপর বাকি লুপের মাধ্যমে চালিয়ে যায়।

পাস স্টেটমেন্ট

যখন একটি বাহ্যিক অবস্থা ট্রিগার হয়, তখন pass স্টেটমেন্ট আপনাকে কোনো অপারেশন না করেই কোড ব্লকের জন্য পাইথনের সিনট্যাক্টিক্যাল প্রয়োজনীয়তা পূরণ করতে দেয়; break না হলে সমস্ত কোড পড়া চলতে থাকবে অথবা অন্য বিবৃতি ঘটে।

অন্যান্য বিবৃতিগুলির মতো, pass বিবৃতিটি লুপ স্টেটমেন্টের অধীনে কোড ব্লকের মধ্যে থাকবে, সাধারণত শর্তসাপেক্ষ if বিবৃতি।

উপরের মত একই কোড ব্লক ব্যবহার করে, আসুন break প্রতিস্থাপন করি অথবা continue একটি pass সহ বিবৃতি বিবৃতি:

number = 0
for number in range(10):
 if number == 5:
 pass # pass here
 print('Number is ' + str(number))
print('Out of loop')

if এর পরে শর্তসাপেক্ষ বিবৃতি, pass স্টেটমেন্ট প্রোগ্রামটিকে লুপ চালানো চালিয়ে যেতে এবং ভেরিয়েবল number উপেক্ষা করতে বলে। এটির একটি পুনরাবৃত্তির সময় 5 এর সমতুল্য হিসাবে মূল্যায়ন করে।

আপনি প্রোগ্রামটি চালাবেন এবং নিম্নলিখিত আউটপুট পাবেন:

Number is 0
Number is 1
Number is 2
Number is 3
Number is 4
Number is 5
Number is 6
Number is 7
Number is 8
Number is 9
Out of loop

pass ব্যবহার করে এই প্রোগ্রামের বিবৃতিতে, আপনি লক্ষ্য করেছেন যে প্রোগ্রামটি ঠিক সেভাবেই চলে যদি প্রোগ্রামে কোন শর্তসাপেক্ষ বিবৃতি না থাকে। pass বিবৃতি প্রোগ্রামটিকে সেই শর্তটি উপেক্ষা করতে এবং যথারীতি প্রোগ্রাম চালানো চালিয়ে যেতে বলে৷

pass বিবৃতিটি ন্যূনতম ক্লাস তৈরি করতে পারে, বা নতুন কোডে কাজ করার সময় এবং বিশদ বিবরণ দেওয়ার আগে একটি অ্যালগরিদমিক স্তরে চিন্তা করার সময় একটি স্থানধারক হিসাবে কাজ করতে পারে৷

পারফরম্যান্স ইমপ্লিকেশন:ব্যতিক্রম বনাম পতাকা বনাম ফাংশন

পাইথনে লুপগুলির প্রবাহ নিয়ন্ত্রণ করার সময়, আপনি নিজেকে ব্যতিক্রম ব্যবহার করার মধ্যে সিদ্ধান্ত নিতে পারেন , পতাকা , অথবা return এর সাথে ফাংশন একটি লুপ থেকে তাড়াতাড়ি প্রস্থান করতে, বিশেষ করে নেস্টেড লুপ বা জটিল লজিক অবস্থার ক্ষেত্রে। প্রতিটি পদ্ধতির বিভিন্ন কার্যক্ষমতা এবং পঠনযোগ্যতার প্রভাব রয়েছে এটি কীভাবে ব্যবহার করা হয় তার উপর নির্ভর করে।

আসুন উদাহরণ সহ প্রতিটি পদ্ধতির অন্বেষণ করি এবং আলোচনা করি যে কখন একটিকে অন্যের উপর ব্যবহার করা ভাল।

লুপ থেকে প্রস্থান করার জন্য ব্যতিক্রম ব্যবহার করা

পাইথনে, ব্যতিক্রমগুলি ইচ্ছাকৃতভাবে গভীরভাবে নেস্টেড লুপগুলি থেকে বেরিয়ে আসতে পারে। যদিও এই পদ্ধতিটি কাজ করে, এটি সবচেয়ে কার্যকর নয় নিয়মিত নিয়ন্ত্রণ প্রবাহের জন্য।

class ExitLoop(Exception):
 pass
try:
 for i in range(5):
 for j in range(5):
 if i == 2 and j == 3:
 raise ExitLoop()
 print(f"i={i}, j={j}")
except ExitLoop:
 print("Exited nested loops using an exception.")
i=0, j=0
i=0, j=1
i=0, j=2
i=0, j=3
i=0, j=4
i=1, j=0
i=1, j=1
i=1, j=2
i=1, j=3
i=1, j=4
i=2, j=0
i=2, j=1
i=2, j=2
Exited nested loops using an exception.

দ্রষ্টব্য: পাইথনে ব্যতিক্রমগুলি উত্থাপন এবং ধরা তুলনামূলকভাবে ধীর কারণ এর জন্য স্ট্যাক আনওয়াইন্ডিং এবং অবজেক্ট তৈরির প্রয়োজন। ব্যতিক্রমগুলি সত্যিই ব্যতিক্রমী অবস্থার জন্য আদর্শ, নিয়মিত নিয়ন্ত্রণ যুক্তির জন্য নয়৷

নেস্টেড লুপ থেকে প্রস্থান করতে পতাকা ব্যবহার করা

ফ্ল্যাগ হল নেস্টেড লুপ থেকে প্রস্থান করার একটি সহজ এবং পঠনযোগ্য উপায়। তারা একটি ভেরিয়েবল (সাধারণত একটি বুলিয়ান) সেট করে কাজ করে যখন একটি শর্ত পূরণ হয়, তারপর সেই পতাকাটিকে বাইরের লুপে চেক করে৷

found = False
for i in range(5):
 for j in range(5):
 if i == 2 and j == 3:
 found = True
 break
 print(f"i={i}, j={j}")
 if found:
 break
print("Exited nested loops using a flag.")
i=0, j=0
i=0, j=1
i=0, j=2
i=0, j=3
i=0, j=4
i=1, j=0
i=1, j=1
i=1, j=2
i=1, j=3
i=1, j=4
i=2, j=0
i=2, j=1
i=2, j=2
Exited nested loops using a flag.

লুপ কন্ট্রোলের ক্ষেত্রে ব্যতিক্রমগুলির তুলনায় পতাকাগুলি আরও দক্ষ এবং একটি ভাল পছন্দ যখন:

  • আপনাকে একাধিক লুপ থেকে বিরতি নিতে হবে।
  • আপনি পরিষ্কার, পঠনযোগ্য কোড চান।
  • আপনি অতিরিক্ত ফাংশন বা ক্লাস সংজ্ঞা প্রবর্তন করতে চান না।

return এর সাথে ফাংশন ব্যবহার করা তাড়াতাড়ি প্রস্থান করতে

আপনার লুপ লজিককে একটি ফাংশনে মোড়ানো এবং return ব্যবহার করা প্রস্থান করা হল একটি পাইথনিক এবং কার্যকরী পদ্ধতি যা একটি শর্ত পূরণ হলে মৃত্যুদন্ড বন্ধ করার জন্য।

def search():
 for i in range(5):
 for j in range(5):
 if i == 2 and j == 3:
 print("Condition met. Exiting function.")
 return
 print(f"i={i}, j={j}")
search()
i=0, j=0
i=0, j=1
i=0, j=2
i=0, j=3
i=0, j=4
i=1, j=0
i=1, j=1
i=1, j=2
i=1, j=3
i=1, j=4
i=2, j=0
i=2, j=1
i=2, j=2
Condition met. Exiting function.

একটি ফাংশন ব্যবহার করে লজিক মডুলার করে এবং ফ্ল্যাগ বা ব্যতিক্রম ক্লাস সহ বাইরের স্কোপের বিশৃঙ্খলা এড়ায়। এটি একটি দুর্দান্ত পদ্ধতি যখন:

  • আপনি একটি ফাংশনের ভিতরে লুপ এনক্যাপসুলেট করতে পারেন।
  • আপনি কম পার্শ্বপ্রতিক্রিয়া সহ পরিষ্কার প্রস্থান চান।
  • আপনি যুক্তিটি পুনরায় ব্যবহার করার বা স্বাধীনভাবে পরীক্ষা করার পরিকল্পনা করছেন৷

নিম্নলিখিত টেবিলটি পাইথনে লুপ থেকে প্রস্থান করার প্রতিটি পদ্ধতির জন্য পঠনযোগ্যতা, কার্যকারিতা এবং আদর্শ ব্যবহারের ক্ষেত্রে তুলনা করে, যা আপনাকে আপনার দৃশ্যের জন্য সবচেয়ে কার্যকর পদ্ধতি বেছে নিতে সহায়তা করে।

পদ্ধতি পঠনযোগ্যতা পারফরম্যান্স কেস সুপারিশ ব্যবহার করুন ব্যতিক্রম লুপ নিয়ন্ত্রণের জন্য LowSlowAvoid; সত্য ব্যতিক্রমের জন্য ব্যবহার করুনপতাকা নেস্টেড লুপের জন্য মিডিয়ামফাস্টগুড; ফাংশন অনুসরণ করা সহজ মডুলার এবং টেস্টেবল লুপ লজিকের জন্য HighFastBest

বেশিরভাগ পরিস্থিতিতে যেখানে আপনাকে নেস্টেড লুপ বা জটিল অবস্থা থেকে প্রস্থান করতে হবে, ফাংশন বা ফ্ল্যাগগুলি তাদের স্বচ্ছতা এবং কার্যকারিতার কারণে পছন্দের পদ্ধতি। ব্যতিক্রম ব্যবহার করা এড়িয়ে চলুন প্রকৃত ত্রুটি বা অপ্রত্যাশিত পরিস্থিতি পরিচালনা না করা পর্যন্ত।

else ব্যবহার করা ক্লিনার প্রস্থানের জন্য লুপ সহ ক্লজ

পাইথন একটি else অনুমতি দেয় for উভয়ের সাথেই ব্যবহার করা হবে এবং while loops যদিও এই বৈশিষ্ট্যটি প্রথমে অস্বাভাবিক বলে মনে হতে পারে, এটি ক্লিনার এবং আরও পঠনযোগ্য কোডের দিকে নিয়ে যেতে পারে, বিশেষ করে যখন break এর মত নিয়ন্ত্রণ প্রবাহ বিবৃতির সাথে মিলিত হয় .

লুপ বোঝা else আচরণ

else লুপের সাথে যুক্ত ব্লক শুধুমাত্র তখনই কার্যকর করা হয় যখন লুপটি break এর সম্মুখীন না হয়েই সম্পূর্ণ হয় বিবৃতি এটি সার্চ অপারেশনের জন্য বিশেষভাবে উপযোগী, যেখানে আপনি একটি সিকোয়েন্সের উপর পুনরাবৃত্তি করছেন এবং একটি শর্ত পূরণ হলে একটি ক্রিয়া সম্পাদন করছেন বা এটি না হলে বিকল্প ব্যবস্থা গ্রহণ করছেন৷

এই বৈশিষ্ট্যটি প্রায়শই কম ব্যবহার করা হয়, কিন্তু সঠিকভাবে প্রয়োগ করা হলে, এটি অপ্রয়োজনীয় স্টেট ভেরিয়েবল (যেমন পতাকা) এড়াতে সাহায্য করে এবং লুপ নির্মাণের সুযোগের মধ্যে সম্পর্কিত যুক্তি রাখে।

উদাহরণ:একটি তালিকায় একটি মান অনুসন্ধান করা

আসুন একটি সাধারণ ব্যবহারের ক্ষেত্রে বিবেচনা করি:একটি তালিকায় একটি আইটেম অনুসন্ধান করা।

items = ["apple", "banana", "cherry", "date"]
for item in items:
 if item == "cherry":
 print("Found cherry!")
 break
else:
 print("Cherry not found.")

এটি কিভাবে কাজ করে:

  • for লুপ তালিকার উপর পুনরাবৃত্তি করে।
  • যদি "cherry" পাওয়া যায়, break বিবৃতি সাথে সাথে লুপ বন্ধ করে দেয়।
  • যদি লুপটি break এর সম্মুখীন না হয়েই সম্পন্ন হয় , else ব্লক রান।

আউটপুট:

Found cherry!

যদি আমরা অনুসন্ধান শব্দটিকে এমন কিছুতে পরিবর্তন করি যা তালিকায় নেই:

for item in items:
 if item == "fig":
 print("Found fig!")
 break
else:
 print("Fig not found.")

আউটপুট:

Fig not found.

এই পদ্ধতিটি আইটেমটি পাওয়া গেছে কিনা তা নির্ধারণ করতে একটি বাহ্যিক পতাকা পরিবর্তনশীলের প্রয়োজনীয়তা দূর করে৷

কেন else ব্যবহার করুন লুপ সহ?

else ছাড়া ধারা, আপনি সাধারণত একটি পতাকা ব্যবহার করে একই যুক্তি পরিচালনা করবেন যা অপ্রয়োজনীয়ভাবে নিয়ন্ত্রণ প্রবাহকে জটিল করে তুলতে পারে:

found = False
for item in items:
 if item == "cherry":
 print("Found cherry!")
 found = True
 break
if not found:
 print("Cherry not found.")

এটি কাজ করার সময়, এটির জন্য একটি অতিরিক্ত পরিবর্তনশীল (found) প্রবর্তন এবং পরিচালনা করা প্রয়োজন ) else ব্যবহার করে ক্লজটি লুপ কনস্ট্রাক্টের মধ্যে লজিককে সম্পূর্ণরূপে এনক্যাপসুলেট করতে সাহায্য করে, যা সহজ এবং আরও ফোকাসড কোডের দিকে নিয়ে যায়, বিশেষ করে ছোট অনুসন্ধান বা শর্তসাপেক্ষ পুনরাবৃত্তিতে।

ব্যবহারিক ব্যবহারের ক্ষেত্রে:একটি কীওয়ার্ডের জন্য একটি ফাইল স্ক্যান করা

ধরুন আপনি একটি ফাইল লাইন বাই লাইন পড়ছেন এবং এটিতে একটি নির্দিষ্ট কীওয়ার্ড আছে কিনা তা পরীক্ষা করতে চান। একটি for-else ব্যবহার করা কাঠামো আপনাকে উভয় ফলাফল পরিষ্কারভাবে পরিচালনা করতে দেয়:

with open("example.txt") as f:
 for line in f:
 if "error" in line:
 print("Error found in file.")
 break
 else:
 print("No errors detected.")

এখানে:

  • লুপ প্রতিটি লাইন স্ক্যান করে।
  • যদি কীওয়ার্ড "error" পাওয়া যায়, এটি একটি বার্তা প্রিন্ট করে এবং লুপ থেকে তাড়াতাড়ি প্রস্থান করে।
  • যদি এমন কোনো লাইন না থাকে, তাহলে else লুপ শেষ হওয়ার পর ক্লজ এক্সিকিউট হয়।

এই প্যাটার্নটি ফাইল স্ক্যানিং, লগ বিশ্লেষণ বা সার্চ-থ্রু-সিকোয়েন্স পরিস্থিতিতে বিশেষভাবে কার্যকর হতে পারে।

else ব্যবহার করা while সহ লুপস

else ক্লজ while এর সাথে কাজ করে একই ভাবে loops. break এর সম্মুখীন না হয়েই লুপ কন্ডিশন মিথ্যা হয়ে গেলেই এটি চলে .

count = 0
while count < 5:
 if count == 3:
 print("Condition met. Exiting early.")
 break
 count += 1
else:
 print("Loop completed without meeting condition.")

এই উদাহরণে:

  • যদি count 3 এ পৌঁছায়, লুপটি break এর মাধ্যমে প্রস্থান করে , এবং else ধারাটি বাদ দেওয়া হয়েছে৷
  • যদি লুপটি break ট্রিগার না করেই সম্পূর্ণভাবে চলে , else ব্লক এক্সিকিউট।

এটি সহায়ক হতে পারে যখন আপনি সনাক্ত করতে চান যে লুপটি তার পুনরাবৃত্তির সম্পূর্ণ পরিসর সম্পন্ন করেছে বা একটি নির্দিষ্ট অবস্থার কারণে অকালে শেষ হয়েছে।

নিচের সারণীটি সংক্ষিপ্ত করা হয়েছে যখন লুপের সাথে সংযুক্ত অন্য ধারাটি কার্যকর হবে, লুপটি কীভাবে প্রস্থান করা হয় তার উপর নির্ভর করে।

দৃশ্য হলো else মৃত্যুদন্ড কার্যকর করা হয়েছে? লুপ সমস্ত পুনরাবৃত্তি সম্পূর্ণ করে YesLoop একটি break দিয়ে প্রস্থান করে NoLoop একটি ব্যতিক্রমের কারণে প্রস্থান করে না (যদি না পরিচালনা করা হয়) লুপ শূন্য বার চলে হ্যাঁ

else লুপ সহ ক্লজ শর্তসাপেক্ষ বা ব্যতিক্রমগুলির প্রতিস্থাপন নয়, তবে এটি পরিচালনা করার একটি পরিষ্কার এবং পাইথনিক উপায় "পাওয়া যায়নি" বহিরাগত রাষ্ট্র পরিচালনা ছাড়াই কেস বা পোস্ট-পুনরাবৃত্তি যুক্তি।

মাল্টি-লেভেল লুপ ব্রেকসের জন্য বাস্তব-বিশ্বের পরিস্থিতি

অনেক বাস্তব-বিশ্বের প্রোগ্রামিং পরিস্থিতিতে, আপনি নেস্টেড লুপগুলির সাথে কাজ করতে পারেন, বিশেষ করে যখন স্ট্রাকচার্ড ডেটা পরিচালনা করা, ফাইলগুলি প্রক্রিয়া করা বা গ্রিডের মাধ্যমে অনুসন্ধান করা। কখনও কখনও, একটি নির্দিষ্ট শর্ত পূরণ হলে আপনাকে একবারে একাধিক স্তরের লুপ থেকে প্রস্থান করতে হবে, যেমন একটি মিল খুঁজে পাওয়া বা অবৈধ ডেটার সম্মুখীন হওয়া৷

পাইথনে বিল্ট-ইন break outer নেই কিছু ভাষার মত, তাই আপনি প্রায়ই return এর সাথে পতাকা, ফাংশনের মত কৌশল ব্যবহার করবেন , অথবা নেস্টেড লুপগুলি পরিষ্কারভাবে প্রস্থান করার জন্য ব্যতিক্রম।

মাল্টি-লেভেল লুপ ব্রেক কখন এবং কীভাবে কার্যকরভাবে ব্যবহার করতে হয় তা বোঝার জন্য চলুন বেশ কয়েকটি ব্যবহারিক উদাহরণের মাধ্যমে চলুন।

স্ট্রাকচার্ড ডেটা পার্সিং (যেমন, CSV বা JSON)

ধরুন আপনি ট্যাবুলার ডেটা পার্স করছেন (যেমন একটি CSV ফাইল থেকে সারির তালিকা), এবং আপনি একটি নির্দিষ্ট মান খুঁজে পেতে চান। একবার আপনি এটি খুঁজে পেলে, স্ক্যানিং চালিয়ে যাওয়ার দরকার নেই।

এখানে একটি 2D তালিকা রয়েছে যা একটি সাধারণ ডেটাসেটের সারি এবং কলামগুলিকে অনুকরণ করে:

data = [
 ["id", "name", "status"],
 ["001", "Alice", "active"],
 ["002", "Bob", "inactive"],
 ["003", "Carol", "active"]
]

ধরা যাক আপনি "Bob" কিনা তা খুঁজে পেতে চান ডেটাসেটে বিদ্যমান:

target = "Bob"
found = False
for row in data:
 for item in row:
 if item == target:
 print(f"Found target '{target}' in row: {row}")
 found = True
 break # Exit inner loop
 if found:
 break # Exit outer loop
Found target 'Bob' in row: ['002', 'Bob', 'inactive']

এটি কেন কাজ করে:

  • অভ্যন্তরীণ লুপ প্রতিটি আইটেম পরীক্ষা করে।
  • যখন এটি লক্ষ্য খুঁজে পায়, এটি found সেট করে True-এ ফ্ল্যাগ করুন এবং ভিতরের লুপ থেকে বেরিয়ে আসে।
  • বাহ্যিক লুপ পতাকা চেক করে এবং ভেঙে যায়।

এই কৌশলটি প্রয়োজনের চেয়ে বেশি ডেটা স্ক্যান করা এড়ায়, বড় ডেটাসেটের কর্মক্ষমতা উন্নত করে৷

নেস্টেড ডিরেক্টরিতে ফাইল অনুসন্ধান করা

লগ বিশ্লেষণ, বিষয়বস্তু অনুসন্ধান, বা নিরাপত্তা অডিটের মতো বাস্তব-বিশ্বের অ্যাপ্লিকেশনগুলিতে কাজ করার সময়, আপনাকে একাধিক নেস্টেড ডিরেক্টরি জুড়ে ছড়িয়ে থাকা শত শত পাঠ্য ফাইলগুলির মাধ্যমে অনুসন্ধান করতে হতে পারে। লক্ষ্য প্রায়ই একটি নির্দিষ্ট কীওয়ার্ড, যেমন একটি API কী, একটি পাসওয়ার্ড, বা একটি ব্যবহারকারী আইডি খুঁজে বের করা হয়। যেকোন ফাইলে কীওয়ার্ড পাওয়া গেলে, সময় এবং সম্পদ বাঁচাতে অনুসন্ধানটি অবিলম্বে বন্ধ করা উচিত।

পাইথন os.walk() নামে একটি বিল্ট-ইন ফাংশন প্রদান করে এটি আপনাকে রুট ডিরেক্টরির মধ্যে সমস্ত ফাইল এবং ফোল্ডারগুলিকে পুনরাবৃত্তি করতে দেয়, যার অর্থ এটি সাবডিরেক্টরিতেও যাবে৷

একটি উদাহরণ দেখা যাক। আপনাকে পুনরাবৃত্তিমূলকভাবে সমস্ত .txt স্ক্যান করতে হবে একটি ডিরেক্টরিতে ফাইল, একটি কীওয়ার্ডের জন্য প্রতিটি লাইন অনুসন্ধান করুন এবং কীওয়ার্ড পাওয়া গেলে অবিলম্বে থামুন এবং ফাইলের নাম রিপোর্ট করুন।

import os
def search_file(root_dir, keyword):
 for folder, subfolders, files in os.walk(root_dir):
 for file in files:
 if file.endswith(".txt"):
 with open(os.path.join(folder, file)) as f:
 for line in f:
 if keyword in line:
 print(f"Found '{keyword}' in {file}")
 return # Exit all loops by returning from the function
 print("Keyword not found.")

আপনি এই মত ফাংশন কল করতে পারেন:

search_file("./documents", "password123")

এখানে একটি ফাংশন কেন ব্যবহার করুন:

  • return ফাংশন থেকে অবিলম্বে প্রস্থান করে, যা কাজে লাগে যখন নেস্টেড লুপ জড়িত থাকে।
  • কোডের একাধিক স্তর জুড়ে পতাকা ব্যবহারের চেয়ে পরিষ্কার।
  • যখন যুক্তিকে মডুলারাইজ করা যায় তখন আদর্শ।

গ্রিড বা ম্যাট্রিক্স অনুসন্ধান (যেমন, গেমস বা পাথফাইন্ডিংয়ে)

একটি 2D গ্রিড (তালিকাগুলির তালিকা), যেমন একটি গেম মানচিত্র বা আসনের চার্টের সাথে কাজ করার কল্পনা করুন এবং প্রথম বাধা বা দখলকৃত আসন খুঁজে বের করার প্রয়োজন। অপ্রয়োজনীয়ভাবে প্রতিটি অবশিষ্ট সেল চেক করার পরিবর্তে আপনি প্রথম বাধা পাওয়া মাত্রই গ্রিড স্ক্যান করা বন্ধ করতে চান৷

আসুন গ্রিডটি সংজ্ঞায়িত করি যেখানে 0 একটি খালি স্থান প্রতিনিধিত্ব করে, 1 একটি বাধা প্রতিনিধিত্ব করে:

grid = [
 [0, 0, 0, 1],
 [0, 1, 0, 0],
 [0, 0, 0, 0],
]

ধরা যাক আপনার কাজ হল প্রথম বাধা খুঁজে বের করা (1 ) এবং তারপর থামুন।

found = False
for row_index, row in enumerate(grid):
 for col_index, cell in enumerate(row):
 if cell == 1:
 print(f"Obstacle found at ({row_index}, {col_index})")
 found = True
 break # Exit inner loop
 if found:
 break # Exit outer loop
Obstacle found at (0, 3)

কি হচ্ছে:

  • নেস্টেড for ব্যবহার করে প্রতিটি সেল চেক করা হয় লুপ।
  • প্রথম 1 found ব্যবহার করে উভয় লুপ থেকে বিরতি ট্রিগার করে পতাকা।

গোলকধাঁধা-সমাধান, ম্যাট্রিক্স স্ক্যানিং বা মাইনসুইপারের মতো গেমগুলিতে এই ধরনের অনুসন্ধান সাধারণ৷

নেস্টেড ডেটা ফিল্ড যাচাই করা হচ্ছে

বাস্তব-বিশ্বের অ্যাপ্লিকেশনে, বিশেষ করে ফর্ম হ্যান্ডলিং, API প্রক্রিয়াকরণ, বা ব্যবহারকারী ব্যবস্থাপনা সিস্টেমে, আপনি প্রায়শই অভিধানের তালিকা নিয়ে কাজ করেন, প্রতিটি অভিধান একাধিক ক্ষেত্র সহ একটি রেকর্ড উপস্থাপন করে।

সমস্ত প্রয়োজনীয় ক্ষেত্রগুলি পূরণ করা হয়েছে তা যাচাই করতে আপনি এই রেকর্ডগুলি স্ক্যান করতে চাইতে পারেন। যদি কোনো ক্ষেত্র খালি থাকে, আপনার আবেদন অবিলম্বে প্রক্রিয়াকরণ বন্ধ করা উচিত এবং ব্যবহারকারীকে সতর্ক করা উচিত বা ত্রুটিটি লগ করা উচিত৷

একটি উদাহরণ দেখা যাক। আমাদের কাছে ব্যবহারকারীদের একটি তালিকা রয়েছে যেখানে প্রতিটি ব্যবহারকারীর একটি name থাকতে হবে এবং একটি email; আমাদের লক্ষ্য হল সমস্ত ব্যবহারকারীদের স্ক্যান করা, তাদের প্রতিটি ক্ষেত্র পরীক্ষা করা, এবং কোনো ক্ষেত্র অনুপস্থিত হওয়ার সাথে সাথে প্রক্রিয়াকরণ বন্ধ করা, ঠিক কোন ক্ষেত্রটি অনুপস্থিত এবং কোন ব্যবহারকারীর জন্য রিপোর্ট করা।

নিম্নলিখিত নমুনা ইনপুট বিবেচনা করুন:

users = [
 {"name": "Alice", "email": "alice@example.com"},
 {"name": "Bob", "email": ""},
 {"name": "Carol", "email": "carol@example.com"},
]

এখানে, ববের ইমেল ক্ষেত্র খালি। আমরা সেটা ধরতে চাই।

invalid = False
for user in users:
 for key, value in user.items():
 if not value:
 print(f"Invalid entry: Missing {key} for user {user['name']}")
 invalid = True
 break
 if invalid:
 break
Invalid entry: Missing email for user Bob

প্রোগ্রামটি সঠিকভাবে সনাক্ত করে যে ববের ইমেলটি অনুপস্থিত এবং আরও পরীক্ষা করা বন্ধ করে দেয়; ক্যারলকে কখনই মূল্যায়ন করা হয় না, কারণ আমরা তাড়াতাড়ি লুপ থেকে বেরিয়ে এসেছি।

এই প্যাটার্নটি কেন দরকারী:

  • একটি ত্রুটি ধরা পড়লে আপনি অপ্রয়োজনীয় চেক প্রতিরোধ করেন।
  • ব্যর্থ-দ্রুত আচরণ প্রয়োগ করতে সাহায্য করে , যেখানে কিছু ভুল হলে সিস্টেম তাড়াতাড়ি বন্ধ হয়ে যায়।

আপনার কখন মাল্টি-লেভেল ব্রেক ব্যবহার করা উচিত?

মাল্টি-লেভেল ব্রেক ব্যবহার করুন যখন:

  • লুপ চালিয়ে গেলে সময় বা সম্পদ নষ্ট হবে।
  • আপনি যা খুঁজছেন তা ইতিমধ্যেই পেয়ে গেছেন।
  • প্রাথমিক প্রস্থান যুক্তিকে বোঝা এবং বজায় রাখা সহজ করে তোলে।

আপনার পদ্ধতিটি বিজ্ঞতার সাথে চয়ন করুন:

পদ্ধতি সেরা যখন… পতাকা আপনি একটি লুপের ভিতরে আছেন কিন্তু ফাংশন থেকে প্রস্থান করতে চান না৷ফাংশন৷ আপনার যুক্তি মডুলার এবং একটি রুটিন থেকে তাড়াতাড়ি ফিরে আসতে পারে৷ব্যতিক্রম৷ আপনি গভীরভাবে নেস্টেড যুক্তি এবং একটি সত্য "ব্যতিক্রম" কেস আছে.

FAQs

1. কিভাবে pass ব্যবহার করবেন , continue , এবং break পাইথনে?

  • pass :pass বিবৃতি কিছুই করে না; এটি একটি স্থানধারক হিসাবে ব্যবহৃত হয় যখন একটি বিবৃতি সিনট্যাক্টিকভাবে প্রয়োজন হয় কিন্তু কোন কর্মের প্রয়োজন হয় না। যেমন:

    for i in range(5):
     if i == 3:
     pass # Placeholder for future code
     print(i)
    
  • continue :continue বিবৃতি বর্তমান পুনরাবৃত্তিতে বাকি কোডটি এড়িয়ে যায় এবং লুপের পরবর্তী পুনরাবৃত্তিতে চলে যায়। উদাহরণ:

    for i in range(5):
     if i == 3:
     continue # Skip the current iteration when i == 3
     print(i)
    
  • break :break বিবৃতি পুনরাবৃত্তি অবস্থা নির্বিশেষে লুপ থেকে অবিলম্বে প্রস্থান করে। উদাহরণ:

    for i in range(5):
     if i == 3:
     break # Exit the loop when i == 3
     print(i)
    

2. আপনি কিভাবে break ব্যবহার করতে পারেন এবং continue একটি for এ বিবৃতি লুপ?

break বিবৃতি একটি for এর ভিতরে ব্যবহার করা যেতে পারে একটি নির্দিষ্ট শর্ত পূরণ হলে তাড়াতাড়ি এটি বন্ধ করতে loop. উদাহরণ:

for i in range(10):
 if i == 5:
 break # Exit the loop when i == 5
 print(i)

continue বিবৃতি বর্তমান পুনরাবৃত্তির বাকি অংশ এড়িয়ে যায় এবং পরবর্তী পুনরাবৃত্তিতে চলে যায়। উদাহরণ:

for i in range(10):
 if i % 2 == 0:
 continue # Skip even numbers
 print(i) # Only prints odd numbers

3. আপনি একটি break পরে একটি লুপ পুনরায় শুরু করতে পারেন ?

একবার একটি break স্টেটমেন্ট এক্সিকিউট হয়, লুপ শেষ হয় এবং লুপ এক্সিকিউট হওয়ার পর কোড। আপনি যদি ভাঙার পরে একটি লুপ "চালিয়ে যেতে" চান তবে আপনাকে লুপটি পুনরায় চালু করতে হবে।

উদাহরণের জন্য:

for i in range(3): # First loop
 if i == 1:
 break # Break out of the loop when i == 1
 print(f"First loop iteration: {i}")
# Restarting the loop
for i in range(3, 6): # Second loop
 print(f"Second loop iteration: {i}")

4. আমি কিভাবে একটি break ব্যবহার করতে পারি লুপের জন্য আমার পাইথনে বিবৃতি?

break বিবৃতি একটি নির্দিষ্ট শর্ত পূরণ হলে এটি বন্ধ করার জন্য লুপে ব্যবহার করা সহজ:

for i in range(5):
 print(f"Checking value: {i}")
 if i == 2:
 print("Condition met. Breaking out of the loop.")
 break # Exit the loop immediately
print("Loop ended.")

5. কিভাবে Python এ লুপ কোড করবেন?

পাইথনে, লুপগুলি for ব্যবহার করে লেখা যেতে পারে অথবা while . উদাহরণ:

একটি for ব্যবহার করা লুপ:

for i in range(5):
 print(i) # Prints numbers from 0 to 4

একটি while ব্যবহার করা লুপ:

count = 0
while count < 5:
 print(count) # Prints numbers from 0 to 4
 count += 1

for ব্যবহার সম্পর্কে আরও জানতে লুপ এবং while পাইথনে লুপ, আপনি নীচের টিউটোরিয়ালগুলি দেখতে পারেন:

  • পাইথনে লুপের জন্য ব্যবহার করা হচ্ছে
  • পাইথনে থাকাকালীন লুপ ব্যবহার করা হচ্ছে

6. pass কি করে একটি পাইথন for এ করুন লুপ?

pass বিবৃতি একটি স্থানধারক হিসাবে কাজ করে এবং কোন কাজ করে না। এটি প্রায়ই ব্যবহৃত হয় যখন কোডের একটি ব্লক সিনট্যাক্টিকভাবে প্রয়োজন হয় কিন্তু এখনও প্রয়োগ করা হয়নি:

for i in range(5):
 if i == 3:
 pass # Placeholder
 print(i)
0
1
2
3
4

7. পাইথন break করে সমস্ত লুপ থেকে প্রস্থান করুন?

না, break বিবৃতি শুধুমাত্র ভিতরের লুপ থেকে প্রস্থান করে যেখানে এটি কার্যকর করা হয়। নেস্টেড লুপ থেকে প্রস্থান করতে, আপনি অতিরিক্ত নিয়ন্ত্রণ ব্যবস্থা ব্যবহার করতে পারেন, যেমন পতাকা বা ফাংশন। উদাহরণ:

for i in range(3):
 for j in range(3):
 if i == 1 and j == 1:
 break # Exits the inner loop
 print(f"i={i}, j={j}")
i=0, j=0
i=0, j=1
i=0, j=2
i=1, j=0
i=2, j=0
i=2, j=1
i=2, j=2

সমস্ত লুপ থেকে প্রস্থান করতে, আপনি একটি পতাকা ব্যবহার করতে পারেন বা একটি ফাংশনে লুপগুলি মোড়ানো এবং return ব্যবহার করতে পারেন :

# Using a flag
flag = False
for i in range(3):
 for j in range(3):
 if i == 1 and j == 1:
 flag = True
 break
 print(f"i={i}, j={j}")
 if flag:
 break
# Using a function
def nested_loops():
 for i in range(3):
 for j in range(3):
 if i == 1 and j == 1:
 return # Exit all loops
 print(f"i={i}, j={j}")
nested_loops()

8. পাইথনে একাধিক নেস্টেড লুপ থেকে কীভাবে বিরতি করবেন?

পাইথন break 2 এর মত একটি অন্তর্নির্মিত সিনট্যাক্স সমর্থন করে না একবারে একাধিক নেস্টেড লুপ থেকে প্রস্থান করতে। পরিবর্তে, আপনি নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করে নেস্টেড লুপগুলি থেকে বেরিয়ে আসতে পারেন:

  1. একটি পতাকা পরিবর্তনশীল ব্যবহার করুন:

    found = False
    for i in range(3):
     for j in range(3):
     if some_condition(i, j):
     found = True
     break # Break inner loop
     if found:
     break # Break outer loop
    
  2. লুপগুলিকে একটি ফাংশনে মোড়ানো এবং return ব্যবহার করুন :

    def search():
     for i in range(3):
     for j in range(3):
     if some_condition(i, j):
     print("Condition met.")
     return # Exits both loops
    search()
    

এই ফাংশন-ভিত্তিক পদ্ধতিটি প্রায়ই পঠনযোগ্যতা এবং মডুলারিটির জন্য পছন্দ করা হয়।

9. পাইথন লুপে কি কোনো বিরতি স্তরের প্যারামিটার আছে?

না, পাইথনের break নেই লেভেল বা লেবেল-ভিত্তিক লুপ কন্ট্রোল অন্যান্য ভাষার মতো (যেমন জাভা বা পিএইচপি)। break পাইথনে স্টেটমেন্ট সর্বদা শুধুমাত্র সবচেয়ে ভিতরের লুপ থেকে বের হয় যেখানে এটি ব্যবহার করা হয়।

নেস্টিংয়ের একাধিক স্তর থেকে প্রস্থান করতে, আপনাকে ব্যবহার করতে হবে:

  • একটি পতাকা বাইরের লুপ সংকেত দিতে।
  • একটি ফাংশন return সহ .
  • একটি ব্যতিক্রম , যদিও এটি সাবধানে ব্যবহার করা উচিত এবং শুধুমাত্র যখন উপযুক্ত।

10. কিভাবে একটি অভ্যন্তরীণ লুপের ভিতর থেকে একটি বাইরের লুপ থেকে প্রস্থান করবেন?

একটি অভ্যন্তরীণ লুপের ভিতর থেকে একটি বাইরের লুপ থেকে প্রস্থান করতে, আপনি এটি করতে পারেন:

  1. একটি পতাকা ভেরিয়েবল ব্যবহার করুন যা ভিতরের লুপের ভিতরে সেট করা হয় এবং বাইরের লুপে চেক করা হয়:

    exit_outer = False
    for i in range(5):
     for j in range(5):
     if i == 2 and j == 3:
     exit_outer = True
     break
     if exit_outer:
     break
    
  2. একটি ফাংশনে লুপ এনক্যাপসুলেট করুন এবং return ব্যবহার করুন একটি পরিষ্কার এবং আরো পাইথনিক পদ্ধতির জন্য:

    def process():
     for i in range(5):
     for j in range(5):
     if i == 2 and j == 3:
     print("Exiting from nested loop.")
     return
    process()
    

11. লুপ ভাঙ্গার জন্য ব্যতিক্রম ব্যবহার করা কি একটি ভাল অনুশীলন?

লুপগুলি ভেঙে ফেলার জন্য ব্যতিক্রমগুলি ব্যবহার করা প্রযুক্তিগতভাবে সম্ভব তবে স্বাভাবিক নিয়ন্ত্রণ প্রবাহের জন্য ভাল অনুশীলন হিসাবে বিবেচিত হয় না৷

class BreakOut(Exception):
 pass
try:
 for i in range(3):
 for j in range(3):
 if i == 1 and j == 1:
 raise BreakOut()
except BreakOut:
 print("Exited nested loops using exception.")

যখন এটি কাজ করে, ব্যতিক্রমগুলি অপ্রত্যাশিত বা ব্যতিক্রমী অবস্থার জন্য বোঝানো হয়, স্ট্যান্ডার্ড লুপ নিয়ন্ত্রণ নয়। এইভাবে ব্যতিক্রমগুলি ব্যবহার করা আপনার কোড পড়া, বজায় রাখা এবং ডিবাগ করা কঠিন করে তুলতে পারে। পতাকা বা ফাংশন-ভিত্তিক প্রস্থান পছন্দ করুন যদি না আপনি সত্যিই ব্যতিক্রমী ক্ষেত্রে মোকাবিলা করছেন।

উপসংহার

আপনি পাইথনে মূল লুপ নিয়ন্ত্রণ বিবৃতি অন্বেষণ করেছেন:break , continue , এবং pass , স্পষ্ট উদাহরণ এবং ব্যবহারিক ব্যবহারের ক্ষেত্রে তাদের আচরণ ব্যাখ্যা করা। আমরা আরও উন্নত নিয়ন্ত্রণ প্রবাহ কৌশলগুলিও অন্বেষণ করেছি, যেমন ফ্ল্যাগ এবং ফাংশন রিটার্ন ব্যবহার করে নেস্টেড লুপগুলি ভেঙে ফেলা এবং তাদের ট্রেড-অফ সহ লুপ সমাপ্তির জন্য ব্যতিক্রমগুলির ব্যবহার নিয়ে আলোচনা করেছি৷

উপরন্তু, আমরা else চালু করেছি ক্লজ অন লুপ, হাইলাইট করে যে এটি অতিরিক্ত পতাকার প্রয়োজনীয়তা দূর করে নির্দিষ্ট অনুসন্ধান প্যাটার্নগুলিকে কীভাবে সহজ করতে পারে। বাস্তব-বিশ্বের উদাহরণ যেমন ডেটা পার্সিং, ফাইল স্ক্যানিং, গ্রিড অনুসন্ধান এবং ইনপুট যাচাইকরণ ব্যবহার করা হয়েছিল এই কৌশলগুলি অনুশীলনে কীভাবে প্রযোজ্য তা দেখানোর জন্য। একসাথে, এই ধারণাগুলি আপনাকে পাইথনে আরও কাঠামোগত, পঠনযোগ্য এবং দক্ষ লুপ লজিক লিখতে সাহায্য করে।

পাইথন লুপ এবং মূল প্রোগ্রামিং ধারণা সম্পর্কে আপনার আরও বোঝার জন্য, এই সহায়ক টিউটোরিয়ালগুলি দেখুন:

  • লুপের জন্য পাইথন
  • শিশুদের জন্য একটি ব্যবহারিক পাইথন টিউটোরিয়াল
  • পাইথনে তালিকা সংযুক্ত করার ৬টি উপায়
  • পাইথন 3-এ লুপ থাকার সময় কীভাবে তৈরি করবেন
  • কিভাবে Python 3 এবং Tweepy লাইব্রেরি দিয়ে একটি Twitterbot তৈরি করবেন।

পাইথন লুপ নিয়ন্ত্রণ আয়ত্ত করা:বিরতি ব্যবহার করে, চালিয়ে যান এবং কার্যকরীভাবে স্টেটমেন্ট পাস করুন এই ক্রিয়েটিভ লাইসেন্সের অধীনে কাজ করে" অ্যাট্রিবিউশন-অবাণিজ্যিক- শেয়ারঅ্যালাইক 4.0 আন্তর্জাতিক লাইসেন্স।


  1. ব্যাখ্যা কর কিভাবে Matplotlib Python ব্যবহার করে quiver প্লট তৈরি করা যায়?

  2. কিভাবে জাভাস্ক্রিপ্ট স্ক্রোল ডাউন জন্য লুপ থামাতে?

  3. জাভাতে একটি JTable এর অনুসন্ধান কার্যকারিতা কিভাবে বাস্তবায়ন করবেন?

  4. অ্যান্ড্রয়েড টেক্সটভিউতে কাউন্ট অ্যানিমেশন কীভাবে তৈরি করবেন?