for Loop
Python-এ for loop ব্যবহার করে কোনো sequence (list, string, range ইত্যাদি) এর প্রতিটি element-এর উপর একই কাজ বারবার করা যায়। এটি Python-এর সবচেয়ে বেশি ব্যবহৃত loop:
# list-এর উপর iterate
fruits = ["আম", "জাম", "লিচু", "কাঁঠাল"]
for fruit in fruits:
print(fruit)
# Output:
# আম
# জাম
# লিচু
# কাঁঠাল
# string-এর প্রতিটি character
for ch in "Python":
print(ch, end=" ")
# Output: P y t h o n
range() ফাংশন
range() নির্দিষ্ট সংখ্যক বার loop চালাতে ব্যবহৃত হয়। তিনটি রূপ আছে:
| সিনট্যাক্স | কাজ | উদাহরণ | Output |
|---|---|---|---|
range(stop) | 0 থেকে stop-1 পর্যন্ত | range(5) | 0, 1, 2, 3, 4 |
range(start, stop) | start থেকে stop-1 পর্যন্ত | range(2, 7) | 2, 3, 4, 5, 6 |
range(start, stop, step) | start থেকে step পরপর | range(0, 10, 2) | 0, 2, 4, 6, 8 |
range(start, stop, -step) | উল্টোদিকে | range(5, 0, -1) | 5, 4, 3, 2, 1 |
# range() উদাহরণ
for i in range(5):
print(i, end=" ") # 0 1 2 3 4
print()
for i in range(1, 11):
print(i, end=" ") # 1 2 3 4 5 6 7 8 9 10
print()
# জোড় সংখ্যা
for i in range(2, 21, 2):
print(i, end=" ") # 2 4 6 8 10 12 14 16 18 20
print()
# উল্টো গণনা
for i in range(10, 0, -1):
print(i, end=" ") # 10 9 8 7 6 5 4 3 2 1
enumerate() — index সহ iterate
Loop-এ element-এর সাথে তার index-ও দরকার হলে enumerate() ব্যবহার করুন:
# enumerate — index ও value একসাথে
students = ["রহিম", "করিম", "জামাল", "কামাল"]
for index, name in enumerate(students):
print(f"{index + 1}. {name}")
# Output:
# 1. রহিম
# 2. করিম
# 3. জামাল
# 4. কামাল
# start parameter দিয়ে index শুরুর মান
for i, name in enumerate(students, start=1):
print(f"{i}. {name}")
while Loop
while loop condition True থাকা পর্যন্ত বারবার চলতে থাকে। কতবার চলবে আগে থেকে জানা না গেলে while ব্যবহার করা হয়:
# বেসিক while loop
count = 1
while count <= 5:
print(f"গণনা: {count}")
count += 1 # এটি না দিলে infinite loop হবে!
# Output:
# গণনা: 1
# গণনা: 2
# গণনা: 3
# গণনা: 4
# গণনা: 5
Counter Pattern ও User Input Loop
# ব্যবহারকারীর কাছ থেকে বারবার input নেওয়া
while True:
command = input("কমান্ড দিন (exit দিলে বন্ধ): ")
if command == "exit":
print("বিদায়! 👋")
break
print(f"আপনি লিখেছেন: {command}")
# সংখ্যা অনুমান খেলা
import random
secret = random.randint(1, 100)
attempts = 0
while True:
guess = int(input("অনুমান করুন (1-100): "))
attempts += 1
if guess < secret:
print("আরো বড় সংখ্যা! ⬆️")
elif guess > secret:
print("আরো ছোট সংখ্যা! ⬇️")
else:
print(f"🎉 সঠিক! {attempts} বার চেষ্টায় পেয়েছেন!")
break
| বৈশিষ্ট্য | for Loop | while Loop |
|---|---|---|
| কখন ব্যবহার | কতবার চলবে আগে জানা থাকলে | আগে জানা না থাকলে |
| Iterate করে | Sequence-এর উপর | Condition-এর উপর |
| Infinite loop | সাধারণত হয় না | সতর্ক না হলে হতে পারে |
| Counter দরকার | না (range ব্যবহার) | হ্যাঁ, ম্যানুয়ালি বাড়াতে হয় |
| বেশি ব্যবহৃত | ✅ (Pythonic) | নির্দিষ্ট ক্ষেত্রে |
break ও continue
Loop-এর প্রবাহ নিয়ন্ত্রণ করতে দুটি বিশেষ keyword ব্যবহৃত হয়:
| Keyword | কাজ | ব্যবহার |
|---|---|---|
break | পুরো loop বন্ধ করে দেয় | নির্দিষ্ট শর্তে loop থেকে বের হতে |
continue | বর্তমান iteration এড়িয়ে পরবর্তীতে যায় | নির্দিষ্ট element skip করতে |
pass | কিছুই করে না — placeholder | খালি block রাখতে |
# break — প্রথম ঋণাত্মক সংখ্যা পেলে থামো
numbers = [10, 25, -3, 40, -7, 50]
for num in numbers:
if num < 0:
print(f"ঋণাত্মক সংখ্যা পাওয়া গেছে: {num}")
break
print(f"প্রক্রিয়াকরণ: {num}")
# Output:
# প্রক্রিয়াকরণ: 10
# প্রক্রিয়াকরণ: 25
# ঋণাত্মক সংখ্যা পাওয়া গেছে: -3
# continue — ঋণাত্মক সংখ্যা skip করো
for num in numbers:
if num < 0:
continue # skip করে পরবর্তী iteration-এ যায়
print(f"ধনাত্মক: {num}")
# Output:
# ধনাত্মক: 10
# ধনাত্মক: 25
# ধনাত্মক: 40
# ধনাত্মক: 50
Nested Loops
একটি loop-এর ভিতরে আরেকটি loop-কে Nested Loop বলে। বাইরের loop-এর প্রতিটি iteration-এ ভিতরের loop পুরোটা চলে:
# নামতা (Multiplication Table)
for i in range(1, 6):
for j in range(1, 11):
print(f"{i}×{j}={i*j:2d}", end=" ")
print() # প্রতি সারীর পর নতুন লাইন
# Output:
# 1×1= 1 1×2= 2 1×3= 3 ...
# 2×1= 2 2×2= 4 2×3= 6 ...
# ...
তারকা প্যাটার্ন (Star Patterns)
# ত্রিভুজ প্যাটার্ন
n = 5
for i in range(1, n + 1):
print("*" * i)
# Output:
# *
# **
# ***
# ****
# *****
# উল্টো ত্রিভুজ
for i in range(n, 0, -1):
print("*" * i)
# পিরামিড
for i in range(1, n + 1):
spaces = " " * (n - i)
stars = "*" * (2 * i - 1)
print(spaces + stars)
- বাইরের loop = সারি (row), ভিতরের loop = কলাম (column)
- সময় জটিলতা: বাইরের n × ভিতরের m = O(n×m)
- Nested loop-এ
breakশুধু ভিতরের loop বন্ধ করে, বাইরেরটা নয় - অতিরিক্ত nesting (3+ স্তর) এড়িয়ে চলুন — কোড জটিল হয়ে যায়
Loop-else
Python-এর একটি বিশেষ feature হলো loop-এর সাথে else ব্যবহার করা যায়। loop যদি break ছাড়া সম্পূর্ণ শেষ হয়, তাহলে else block চলে:
# break না হলে else চলে
numbers = [2, 4, 6, 8, 10]
for num in numbers:
if num % 2 != 0:
print(f"বিজোড় সংখ্যা পাওয়া গেছে: {num}")
break
else:
print("সব সংখ্যা জোড়! ✅")
# Output: সব সংখ্যা জোড়! ✅
# break হলে else চলে না
numbers = [2, 4, 5, 8, 10]
for num in numbers:
if num % 2 != 0:
print(f"বিজোড় সংখ্যা পাওয়া গেছে: {num}")
break
else:
print("সব সংখ্যা জোড়!")
# Output: বিজোড় সংখ্যা পাওয়া গেছে: 5
মৌলিক সংখ্যা পরীক্ষা — loop-else দিয়ে
# মৌলিক সংখ্যা পরীক্ষা (loop-else ব্যবহার)
num = 29
if num < 2:
print(f"{num} মৌলিক নয়")
else:
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
print(f"{num} মৌলিক নয় (ভাজক: {i})")
break
else:
print(f"{num} একটি মৌলিক সংখ্যা! ✅")
# Output: 29 একটি মৌলিক সংখ্যা! ✅
Loop-এর চারটি মূল component: For (sequence iterate), While (condition-based), Break (বন্ধ করো), Continue (পরেরটায় যাও)। FWBC = "Fly With Big Confidence" — লুপ নিয়ে আত্মবিশ্বাসী হন!
ব্যবহারিক উদাহরণ
সংখ্যা প্যাটার্ন
# সংখ্যা ত্রিভুজ
for i in range(1, 6):
for j in range(1, i + 1):
print(j, end=" ")
print()
# Output:
# 1
# 1 2
# 1 2 3
# 1 2 3 4
# 1 2 3 4 5
মৌলিক সংখ্যা খোঁজা
# 1 থেকে 50 পর্যন্ত মৌলিক সংখ্যা
print("মৌলিক সংখ্যা (1-50):")
for num in range(2, 51):
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
break
else:
print(num, end=" ")
# Output: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
যোগফল ক্যালকুলেটর
# ব্যবহারকারীর দেওয়া সংখ্যার যোগফল
total = 0
count = 0
print("সংখ্যা দিন (0 দিলে শেষ):")
while True:
num = float(input("> "))
if num == 0:
break
total += num
count += 1
if count > 0:
print(f"\nমোট {count}টি সংখ্যার যোগফল: {total}")
print(f"গড়: {total/count:.2f}")
else:
print("কোনো সংখ্যা দেওয়া হয়নি!")