- Loop কী এবং কেন দরকার?
- for Loop — নির্দিষ্টভাবে পুনরাবৃত্তি
- range() ফাংশন — সংখ্যার ক্রম তৈরি
- while Loop — শর্ত সত্য থাকা পর্যন্ত
- break — Loop থেকে বের হওয়া
- continue — পরের ধাপে চলে যাওয়া
- pass — কিছু না করা
- for...else ও while...else
- Nested Loop — Loop-এর ভেতরে Loop
- প্র্যাকটিক্যাল প্রজেক্ট — Number Guessing Game
- সারাংশ ও অনুশীলন
কল্পনা করো তোমাকে ১ থেকে ১০০ পর্যন্ত সংখ্যা প্রিন্ট করতে হবে। print(1), print(2)... এভাবে ১০০টি লাইন লেখা কি কখনও বুদ্ধিমানের কাজ? অবশ্যই না! এই ধরনের পুনরাবৃত্তিমূলক কাজের জন্যই Python-এ আছে Loop।
Loop হলো একটি কোড Block যা বারবার চলতে থাকে। প্রতিটি চক্রকে বলে Iteration।
বাস্তব জীবনে Loop-এর উদাহরণ:
🔄 প্রতিদিন সকালে উঠে ব্রাশ করা — যতদিন বেঁচে আছি ততদিন।
🔄 একটি ক্লাসের ৫০ জন শিক্ষার্থীর রোল কল করা।
🔄 ATM-এ PIN ৩ বার চেষ্টার সুযোগ দেওয়া।
| Loop | কখন ব্যবহার করবে | উদাহরণ |
|---|---|---|
| for | কতবার চলবে আগে থেকে জানা থাকলে | ১ থেকে ১০০ পর্যন্ত প্রিন্ট |
| while | কতবার চলবে জানা নেই, শর্তের উপর নির্ভর | সঠিক পাসওয়ার্ড না দেওয়া পর্যন্ত চাও |
for loop কোনো Sequence (যেমন List, String, range) এর প্রতিটি উপাদানের উপর একে একে কাজ করে।
প্রতিটি উপাদানে যা করবে
fruits = ["আম", "কলা", "লিচু", "আনারস"] for fruit in fruits: print(f"ফল: {fruit}") print("সব ফল প্রিন্ট শেষ!")
ফল: আম ফল: কলা ফল: লিচু ফল: আনারস সব ফল প্রিন্ট শেষ!
word = "Python" for letter in word: print(letter, end=" ") print() # নতুন লাইনে যাও print(f"'{word}'-এ মোট {len(word)} অক্ষর আছে।")
P y t h o n 'Python'-এ মোট 6 অক্ষর আছে।
numbers = [10, 25, 7, 42, 13] total = 0 for num in numbers: total += num # total = total + num print(f"যোগ করলাম {num}, এখন total = {total}") print(f"\nমোট যোগফল: {total}") print(f"গড়: {total / len(numbers):.2f}")
যোগ করলাম 10, এখন total = 10 যোগ করলাম 25, এখন total = 35 যোগ করলাম 7, এখন total = 42 যোগ করলাম 42, এখন total = 84 যোগ করলাম 13, এখন total = 97 মোট যোগফল: 97 গড়: 19.40
range() ফাংশন একটি সংখ্যার ক্রম তৈরি করে। for loop-এর সাথে ব্যবহার করলে নির্দিষ্ট সংখ্যকবার loop চালানো যায়।
range(start, stop) # start থেকে stop-1 পর্যন্ত
range(start, stop, step) # step-এ step-এ বাড়বে
# ১ থেকে ১০ পর্যন্ত for i in range(1, 11): print(i, end=" ") print() # শুধু জোড় সংখ্যা (step = 2) print("জোড়:", end=" ") for i in range(2, 21, 2): print(i, end=" ") print() # উল্টোদিকে (countdown) print("Countdown:", end=" ") for i in range(10, 0, -1): print(i, end=" ") print("🚀") # range দিয়ে index ট্র্যাক করা students = ["রাহিম", "করিম", "সালমা"] for i in range(len(students)): print(f"রোল {i+1}: {students[i]}")
1 2 3 4 5 6 7 8 9 10 জোড়: 2 4 6 8 10 12 14 16 18 20 Countdown: 10 9 8 7 6 5 4 3 2 1 🚀 রোল 1: রাহিম রোল 2: করিম রোল 3: সালমা
cities = ["ঢাকা", "চট্টগ্রাম", "সিলেট", "রাজশাহী"] for index, city in enumerate(cities, start=1): print(f"{index}. {city}")
1. ঢাকা 2. চট্টগ্রাম 3. সিলেট 4. রাজশাহী
enumerate() ব্যবহার করলে আলাদাভাবে range(len(...)) লিখতে হয় না। এটি Python-এর বেশি Pythonic পদ্ধতি।
while loop শর্ত True থাকা পর্যন্ত চলতে থাকে। শর্ত False হলে loop শেষ হয়।
কাজ করো
# শর্ত পরিবর্তন না হলে Infinite Loop হবে!
count = 1 while count <= 5: print(f"count = {count}") count += 1 # এই লাইন না থাকলে Infinite Loop! print("Loop শেষ হয়েছে।")
count = 1 count = 2 count = 3 count = 4 count = 5 Loop শেষ হয়েছে।
Infinite Loop সাবধান! while loop-এ শর্ত কখনও False না হলে প্রোগ্রাম চিরকাল চলতে থাকবে। সবসময় নিশ্চিত করো loop-এর ভেতরে কোনোভাবে শর্ত পরিবর্তন হচ্ছে। থামাতে চাইলে Ctrl + C চাপো।
password = "" while password != "python123": password = input("পাসওয়ার্ড দাও: ") if password != "python123": print("❌ ভুল পাসওয়ার্ড, আবার চেষ্টা করো।") print("✅ সঠিক পাসওয়ার্ড! স্বাগতম।")
পাসওয়ার্ড দাও: hello ❌ ভুল পাসওয়ার্ড, আবার চেষ্টা করো। পাসওয়ার্ড দাও: python123 ✅ সঠিক পাসওয়ার্ড! স্বাগতম।
| পরিস্থিতি | ব্যবহার করো |
|---|---|
| নির্দিষ্ট সংখ্যকবার (যেমন ১০০ বার) | for |
| List বা String-এর প্রতিটি উপাদানে | for |
| শর্ত পূরণ না হওয়া পর্যন্ত | while |
| সঠিক input না পাওয়া পর্যন্ত চাও | while |
| কতবার চলবে জানা নেই | while |
Loop সম্পূর্ণ থামিয়ে দেয়। Loop-এর বাইরে চলে যায়।
বর্তমান iteration skip করে পরের iteration-এ যায়।
কিছু করে না। Placeholder হিসেবে ব্যবহার হয়।
students = ["রাহিম", "করিম", "সালমা", "জামাল", "নাসরিন"] target = "সালমা" for student in students: print(f"খুঁজছি: {student}") if student == target: print(f"✅ '{target}' পাওয়া গেছে! Loop থামছে।") break # ১ থেকে ১০০ পর্যন্ত প্রথম ৭ দ্বারা বিভাজ্য সংখ্যা for n in range(1, 101): if n % 7 == 0: print(f"প্রথম ৭-এর গুণিতক: {n}") break
খুঁজছি: রাহিম খুঁজছি: করিম খুঁজছি: সালমা ✅ 'সালমা' পাওয়া গেছে! Loop থামছে। প্রথম ৭-এর গুণিতক: 7
# বিজোড় সংখ্যা skip করে শুধু জোড় প্রিন্ট print("জোড় সংখ্যা:", end=" ") for n in range(1, 11): if n % 2 != 0: continue # বিজোড় হলে skip print(n, end=" ") print() # ফাঁকা নাম বাদ দিয়ে প্রিন্ট names = ["রাহিম", "", "করিম", "", "সালমা"] for name in names: if name == "": continue # ফাঁকা হলে skip print(f"নাম: {name}")
জোড় সংখ্যা: 2 4 6 8 10 নাম: রাহিম নাম: করিম নাম: সালমা
pass একটি placeholder। যখন Syntax-এর জন্য কোনো Statement দরকার কিন্তু এখনো কোড লেখোনি, তখন pass ব্যবহার করো।
for i in range(5): if i == 3: pass # পরে এখানে কিছু যোগ করব print(i, end=" ") print()
0 1 2 3 4
Python-এ Loop-এর সাথে else ব্যবহার করা যায়। Loop সম্পূর্ণ শেষ হলে (break দিয়ে না থামলে) else block চলে।
n = int(input("একটি সংখ্যা দাও: ")) if n < 2: print("মৌলিক সংখ্যা নয়।") else: for i in range(2, n): if n % i == 0: print(f"{n} মৌলিক নয় ({i} দ্বারা বিভাজ্য)।") break # break দিলে else চলবে না else: print(f"✅ {n} একটি মৌলিক সংখ্যা।") # break না হলেই চলবে
একটি সংখ্যা দাও: 17 ✅ 17 একটি মৌলিক সংখ্যা।
একটি সংখ্যা দাও: 15 15 মৌলিক নয় (3 দ্বারা বিভাজ্য)।
Loop-এর else তখনই চলে যখন loop break ছাড়া স্বাভাবিকভাবে শেষ হয়। এটি "খুঁজে পাওয়া গেছে কিনা" যাচাই করার দারুণ পদ্ধতি।
একটি Loop-এর ভেতরে আরেকটি Loop রাখলে সেটি Nested Loop। বাইরের Loop একবার চললে ভেতরের Loop সম্পূর্ণ একবার শেষ করে।
print("গুণনীয়ক সারণি (১ থেকে ৫)") print("─" * 30) for i in range(1, 6): for j in range(1, 6): print(f"{i*j:4}", end="") # 4 character wide print() # প্রতিটি সারির পর নতুন লাইন
গুণনীয়ক সারণি (১ থেকে ৫) ────────────────────────────── 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 5 10 15 20 25
# ডানদিকে বড় হওয়া ত্রিভুজ for i in range(1, 6): print("★ " * i) print() # বাম-ডান সিমেট্রিক ত্রিভুজ n = 5 for i in range(1, n + 1): print(" " * (n - i) + "★ " * i)
★
★ ★
★ ★ ★
★ ★ ★ ★
★ ★ ★ ★ ★
★
★ ★
★ ★ ★
★ ★ ★ ★
★ ★ ★ ★ ★
এই পর্বের সব Loop ধারণা ব্যবহার করে একটি সম্পূর্ণ Number Guessing Game বানাই। প্রোগ্রাম একটি সংখ্যা মনে রাখবে, তুমি অনুমান করবে — সংখ্যাটি বের করার জন্য।
১ থেকে ১০০-এর মধ্যে একটি সংখ্যা মনে রাখা আছে। তোমাকে সর্বোচ্চ ৭ বারের মধ্যে অনুমান করতে হবে। প্রতিটি ভুল অনুমানে "বেশি" বা "কম" hint দেওয়া হবে।
import random # সিক্রেট সংখ্যা তৈরি secret = random.randint(1, 100) max_try = 7 attempts = 0 won = False print("╔══════════════════════════════╗") print("║ Number Guessing Game 🎮 ║") print("╚══════════════════════════════╝") print(f"১ থেকে ১০০-এর মধ্যে একটি সংখ্যা ভাবা আছে।") print(f"তোমার সুযোগ: {max_try} বার\n") while attempts < max_try: baki = max_try - attempts guess = int(input(f"অনুমান করো ({baki} সুযোগ বাকি): ")) attempts += 1 if guess == secret: print(f"\n🎉 অভিনন্দন! {attempts} বারে সংখ্যাটি বের করেছ!") won = True break elif guess < secret: print("📈 আরও বেশি!") else: print("📉 আরও কম!") if not won: print(f"\n😔 সুযোগ শেষ! সংখ্যাটি ছিল: {secret}") # স্কোর হিসাব if won: score = (max_try - attempts + 1) * 10 print(f"তোমার স্কোর: {score}/70")
╔══════════════════════════════╗ ║ Number Guessing Game 🎮 ║ ╚══════════════════════════════╝ ১ থেকে ১০০-এর মধ্যে একটি সংখ্যা ভাবা আছে। তোমার সুযোগ: 7 বার অনুমান করো (7 সুযোগ বাকি): 50 📈 আরও বেশি! অনুমান করো (6 সুযোগ বাকি): 75 📉 আরও কম! অনুমান করো (5 সুযোগ বাকি): 63 📈 আরও বেশি! অনুমান করো (4 সুযোগ বাকি): 69 🎉 অভিনন্দন! 4 বারে সংখ্যাটি বের করেছ! তোমার স্কোর: 40/70
এই প্রজেক্টে while loop, break, if/elif/else, Assignment Operators এবং random module — এক সাথে ব্যবহার হয়েছে। random module পর্ব ১২-তে বিস্তারিত শিখব।
- Loop কী এবং কখন কোনটি ব্যবহার করতে হয়
- for loop — List, String ও range-এর উপর
- range(stop), range(start, stop), range(start, stop, step)
- enumerate() — index ও value একসাথে
- while loop — শর্ত সত্য থাকা পর্যন্ত
- Infinite Loop এর বিপদ ও সাবধানতা
- break — loop থামিয়ে দেয়
- continue — বর্তমান iteration skip করে
- pass — placeholder, কিছু করে না
- for...else ও while...else
- Nested Loop — গুণনীয়ক সারণি ও star pattern
- Number Guessing Game প্রজেক্ট
- FizzBuzz: ১ থেকে ৫০ পর্যন্ত — ৩-এর গুণিতক হলে "Fizz", ৫-এর গুণিতক হলে "Buzz", উভয়ের গুণিতক হলে "FizzBuzz", বাকিগুলো সংখ্যা প্রিন্ট করো
- Factorial: একটি সংখ্যার Factorial বের করো। যেমন ৫! = ৫×৪×৩×২×১ = ১২০
- Fibonacci: প্রথম ১৫টি Fibonacci সংখ্যা প্রিন্ট করো (০, ১, ১, ২, ৩, ৫, ৮...)
- Number Pattern: নিচের প্যাটার্ন তৈরি করো:
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5 - ATM আপগ্রেড: পর্ব ৪-এর ATM-এ while loop যোগ করো — ৩ বারের বেশি ভুল PIN দিলে "Card Blocked" দেখাও
- Function কী এবং কেন ব্যবহার করব
- def দিয়ে নিজের Function তৈরি করা
- Parameters ও Arguments — ডেটা পাঠানো
- return Statement — ফলাফল ফেরত দেওয়া
- Default ও Keyword Arguments
- *args ও **kwargs

0 Comments