Lesson ৬ মিনিট পড়া

কন্ডিশনাল (Conditionals)

চুজ-ইয়োর-ওউন-অ্যাডভেঞ্চার বইয়ের মতো আপনার কোডকে সিদ্ধান্ত নেওয়া শেখান

If, Elif, Else — সিদ্ধান্তের ত্রয়ী (The Decision Trio)

কল্পনা করুন, আপনি একটি অফিসের বা ব্যাংকের দারোয়ান। আপনি একটি শর্ত যাচাই করেন ("আপনার নাম কি লিস্টে আছে?") এবং এরপর কী হবে তা সিদ্ধান্ত নেন। ঠিক এটাই পাইথনে if করে থাকে।

এর গঠন বেশ সহজ:

  • if — প্রথম শর্ত যাচাই করুন। যদি এটি True হয়, তবে এই ব্লকটি রান করুন।
  • elif — "Else if" বা "অন্যথায় যদি" — এটি কেবল তখনই চেক করা হবে যখন পূর্ববর্তী শর্তটি False ছিলো। আপনি চাইলেই একাধিক elif ব্যবহার করতে পারেন।
  • else — সবকিছু না মিললে যা হয়। উপরের কোনোটিই True না হলে এটি রান করবে।

ইনডেন্টেশন (Indentation) খুব গুরুত্বপূর্ণ! পাইথনে কোড ব্লক সংজ্ঞায়িত করার জন্য ৪টি স্পেস ব্যবহার করা হয় (কার্লি ব্রেইস বা দ্বিতীয় বন্ধনী নয়)। একটি if এর অধীনে ইনডেন্ট করা সব কিছুই সেই শাখার অন্তর্গত।

Click chart to zoom
পাইথন শর্তগুলোকে ওপর থেকে নিচে মূল্যায়ন করে — শুধুমাত্র প্রথম True শাখাটিই রান হয়

মৌলিক কন্ডিশনাল (Basic Conditionals)

temperature = 35
if temperature >= 30:
print("It's hot! Get some ice cream 🍦")
print("Don't forget sunscreen!")
elif temperature >= 20:
print("Nice weather for a walk")
elif temperature >= 10:
print("Better grab a jacket")
else:
print("Stay inside, it's freezing!")
# Only ONE branch runs — the first one that's True
print("\n--- Grade Calculator ---")
score = 87
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
else:
grade = "F"
print(f"Score {score} → Grade {grade}")
Output
It's hot! Get some ice cream 🍦
Don't forget sunscreen!

--- Grade Calculator ---
Score 87 → Grade B

ট্রুথি এবং ফলসি ভ্যালু (Truthy & Falsy Values)

পাইথনে, সব সময় আপনাকে স্পষ্টভাবে True বা False উল্লেখ করতে হয় না। প্রতিটি ভ্যালুর মধ্যেই এক ধরণের "ট্রুথিনেস (truthiness)" আছে:

Falsy (ফলসি/মিথ্যা হিসেবে ধরা হয়):

  • False, None, 0, 0.0
  • ফাঁকা জিনিসগুলো: "", [], {}, (), set()

Truthy (ট্রুথি/সত্য হিসেবে ধরা হয়):

  • বাকি সবকিছুই! নন-জিরো সংখ্যাগুলো, ফাঁকা নয় এমন স্ট্রিং, ফাঁকা নয় এমন লিস্ট ইত্যাদি।

কোনো কিছু আসলেই ফাঁকা নাকি এর কোনো অস্তিত্ব আছে কি না, তা বুঝতে এটি দারুণ কার্যকর।

ট্রুথি/ফলসি এবং টার্নারি এক্সপ্রেশন (Truthy/Falsy & Ternary Expressions)

# Using truthiness to check for empty values
username = ""
if username:
print(f"Welcome, {username}!")
else:
print("Please enter a username")
# Checking a list
inventory = ["sword", "shield"]
if inventory:
print(f"You have {len(inventory)} items")
else:
print("Your inventory is empty")
# Ternary expression (one-liner if/else)
age = 15
status = "adult" if age >= 18 else "minor"
print(f"Age {age}: {status}")
# Ternary in an f-string
coins = 0
print(f"You have {coins} coin{'s' if coins != 1 else ''}")
Output
Please enter a username
You have 2 items
Age 15: minor
You have 0 coins

নেস্টেড কন্ডিশন এবং লজিক একত্রিত করা (Nested Conditions & Combining Logic)

আপনি চাইলেই একটি if স্টেটমেন্টের ভেতরে আরেকটি if স্টেটমেন্ট রাখতে পারেন — তবে খুব বেশি গভীরে না যাওয়ার ব্যাপারে সতর্ক থাকুন! আপনি যদি ২ বা ৩ লেভেলের চেয়ে বেশি নেস্ট করেন বা ভেতরে ঢোকেন, তবে এটি একটি লক্ষণ যে আপনার and/or ব্যবহার করে এটিকে রিফ্যাক্টর করা উচিত অথবা একটি ফাংশন ব্যবহার করা উচিত।

নেস্টেড কন্ডিশন এবং লজিক একত্রিত করা (Nested Conditions & Combined Logic)

# Amusement park ride checker
age = 12
height = 140 # cm
has_parent = True
# Nested approach (works but gets messy)
if age >= 10:
if height >= 130:
print("You can ride! 🎢")
else:
print("Sorry, too short for this ride")
else:
print("Sorry, too young for this ride")
# Cleaner with 'and' / 'or'
can_ride_alone = age >= 10 and height >= 130
can_ride_with_parent = age >= 6 and has_parent
if can_ride_alone:
print("Hop on!")
elif can_ride_with_parent:
print("You can ride with a parent")
else:
print("Maybe next year!")
Output
You can ride! 🎢
Hop on!
Note: প্রো টিপ (Pro tip): নেস্টিংয়ের গভীরে যাওয়া এড়াতে শর্তগুলোকে উল্টে দিন। if valid: (বিশাল কোড ব্লক) লেখার বদলে if not valid: print("error"); return লেখার চেষ্টা করুন। একে গার্ড ক্লজ (guard clause) বলা হয় এবং এটি আপনার কোডকে সোজা এবং পড়তে সহজ রাখে।
চ্যালেঞ্জ

ছোট কুইজ

পাইথনে এগুলোর মধ্যে কোন ভ্যালুটি ট্রুথি (truthy)?
Strings & FormattingLoops