Lesson ৭ মিনিট পড়া

লুপ (Loops)

একই কোড ১০০ বার না লিখে বারবার কাজগুলো করুন

For লুপ — যখন আপনি জানেন কতবার করতে হবে (When You Know How Many Times)

একটি for লুপ হলো একজন ট্যুর গাইডের মতো, যে এক এক করে জিনিসগুলোর মধ্যে দিয়ে হেঁটে যায়। "এই হলো ১ নম্বর জিনিস, এবার ২ নম্বর, এবার ৩ নম্বর..." যতক্ষণ না আর কিছু বাকি থাকে।

আপনি যেকোনো ইটারেবল (iterable) বা যার ওপর দিয়ে লুপ ঘুরানো যায় এমন কিছুর ওপর লুপ চালাতে পারেন: লিস্ট, স্ট্রিং, রেঞ্জ, ডিকশনারি — এমনকি ফাইলের ওপরও। for-এর পরের ভ্যারিয়েবলটি একে একে ওই জিনিসগুলোর ভ্যালু নিয়ে নেয়।

Click chart to zoom
For লুপগুলো একটি পরিচিত সিকোয়েন্সের ওপর দিয়ে ইটারেট করে; আর কোনো শর্ত False না হওয়া পর্যন্ত While লুপ বারবার চলতে থাকে

For লুপ এবং range() (For Loops & range())

# Loop over a list
pets = ["cat", "dog", "hamster", "parrot"]
for pet in pets:
print(f"I love my {pet}!")
print() # blank line
# Loop over a range of numbers
# range(5) gives: 0, 1, 2, 3, 4
for i in range(5):
print(f"Count: {i}")
print() # blank line
# range(start, stop, step)
for i in range(2, 11, 2):
print(i, end=" ") # Even numbers from 2 to 10
Output
I love my cat!
I love my dog!
I love my hamster!
I love my parrot!

Count: 0
Count: 1
Count: 2
Count: 3
Count: 4

2 4 6 8 10 

While লুপ — যখন আপনি জানেন না কতবার করতে হবে (When You Don't Know How Many Times)

একটি while লুপ হলো এমন একজন প্রহরীর মতো, যে কেবল একটি শর্ত যাচাই করতে থাকে: "এখনও কি বৃষ্টি হচ্ছে? হ্যাঁ → ভেতরে থাকুন। এখনও কি বৃষ্টি হচ্ছে? হ্যাঁ → ভেতরে থাকুন। এখনও কি বৃষ্টি হচ্ছে? না → বাইরে যান!"

আপনার যখন আগে থেকে জানা থাকে না যে কতবার লুপটি চলতে হবে, তখন while ব্যবহার করুন। শুধু সতর্ক থাকবেন — যদি শর্তটি কখনো False না হয়, তবে আপনি একটি অসীম লুপ বা ইনফিনিট লুপ (infinite loop) তৈরি করে ফেলবেন!

While লুপ (While Loops)

# Countdown timer
countdown = 5
while countdown > 0:
print(f"{countdown}...")
countdown -= 1
print("Liftoff! 🚀")
print()
# Guessing game logic
import random
secret = random.randint(1, 10)
guess = 0
attempts = 0
while guess != secret:
guess = random.randint(1, 10) # simulate guessing
attempts += 1
print(f"Found {secret} in {attempts} attempts!")
Output
5...
4...
3...
2...
1...
Liftoff! 🚀

Found 7 in 3 attempts!

ব্রেক, কন্টিনিউ এবং এনিউমারেট (Break, Continue & Enumerate)

কখনো কখনো আপনার লুপের ভেতরে আরও নিয়ন্ত্রণের প্রয়োজন হয়:

  • breakলুপটি পুরোপুরি বন্ধ করে দেয়। কাজ থামিয়ে লুপ থেকে বের হয়ে যান। অনেকটা দোকানে আপনার প্রয়োজনীয় জিনিসটি পেয়ে গেলে দোকান থেকে বেরিয়ে যাওয়ার মতো।
  • continueবর্তমান ইটারেশনটি বাবারের কাজটিকে এড়িয়ে যায় (skip) এবং পরেরটিতে চলে যায়। অনেকটা প্লেলিস্টের কোনো গান স্কিপ করার মতো।
  • enumerate() — প্রতিটি ইটারেশনে বা লুপ ঘোরার সময় আপনাকে ইনডেক্স এবং ভ্যালু উভয়ই দেয়। যখন আপনার জিনিসের অবস্থানটি জানা প্রয়োজন হয়, তখন এটি দারুন কার্যকর।

ব্রেক, কন্টিনিউ এবং এনিউমারেট (Break, Continue & Enumerate)

# break — stop when you find what you need
numbers = [4, 7, 2, 9, 1, 5]
for n in numbers:
if n == 9:
print(f"Found 9! Stopping.")
break
print(f"Checking {n}...")
print()
# continue — skip odd numbers
for i in range(10):
if i % 2 != 0:
continue # skip odd numbers
print(i, end=" ")
print("\n")
# enumerate — get index AND value
fruits = ["আম", "জাম", "কাঁঠাল"]
for index, fruit in enumerate(fruits):
print(f"{index + 1}. {fruit}")
print()
# enumerate with custom start
for rank, fruit in enumerate(fruits, start=1):
print(f"#{rank}: {fruit}")
Output
Checking 4...
Checking 7...
Checking 2...
Found 9! Stopping.

0 2 4 6 8 

1. আম
2. জাম
3. কাঁঠাল

#1: আম
#2: জাম
#3: কাঁঠাল

নেস্টেড লুপ (Nested Loops)

আপনি একটি লুপের ভেতরে আরেকটি লুপ বসাতে পারেন। ভেতরের লুপটি বাইরের লুপের প্রতিটি ইটারেশনের জন্য সম্পূর্ণরূপে রান করে। এটিকে একটি ঘড়ির মতো চিন্তা করুন: ঘন্টার কাঁটার (বাইরের লুপ) প্রতিটি টিকের জন্য মিনিটের কাঁটা (ভেতরের লুপ) ৬০ বার ঘুরে আসে।

নেস্টেড লুপ (Nested Loops)

# Multiplication table (3×3)
for row in range(1, 4):
for col in range(1, 4):
result = row * col
print(f"{result:4d}", end="")
print() # new line after each row
print()
# Finding pairs that sum to 10
numbers = [2, 4, 6, 8, 3, 7]
for i in range(len(numbers)):
for j in range(i + 1, len(numbers)):
if numbers[i] + numbers[j] == 10:
print(f"{numbers[i]} + {numbers[j]} = 10")
Output
   1   2   3
   2   4   6
   3   6   9

2 + 8 = 10
4 + 6 = 10
3 + 7 = 10
Note: আপনি যদি কখনো শুধু ইনডেক্স পাওয়ার জন্য for i in range(len(my_list)) লেখেন, তবে এখনই থামুন! এর পরিবর্তে enumerate(my_list) ব্যবহার করুন। এটি আরও বেশি পাইথনিক, সহজে পড়া যায় এবং ভুল হওয়ার সম্ভাবনা কম।
চ্যালেঞ্জ

ছোট কুইজ

range(2, 8, 2) কী তৈরি করে?

পড়া চালিয়ে যান

ConditionalsLists & Tuples