কন্ডিশনাল (Conditionals)
If, Elif, Else — সিদ্ধান্তের ত্রয়ী (The Decision Trio)
কল্পনা করুন, আপনি একটি অফিসের বা ব্যাংকের দারোয়ান। আপনি একটি শর্ত যাচাই করেন ("আপনার নাম কি লিস্টে আছে?") এবং এরপর কী হবে তা সিদ্ধান্ত নেন। ঠিক এটাই পাইথনে if করে থাকে।
এর গঠন বেশ সহজ:
if— প্রথম শর্ত যাচাই করুন। যদি এটিTrueহয়, তবে এই ব্লকটি রান করুন।elif— "Else if" বা "অন্যথায় যদি" — এটি কেবল তখনই চেক করা হবে যখন পূর্ববর্তী শর্তটিFalseছিলো। আপনি চাইলেই একাধিকelifব্যবহার করতে পারেন।else— সবকিছু না মিললে যা হয়। উপরের কোনোটিইTrueনা হলে এটি রান করবে।
ইনডেন্টেশন (Indentation) খুব গুরুত্বপূর্ণ! পাইথনে কোড ব্লক সংজ্ঞায়িত করার জন্য ৪টি স্পেস ব্যবহার করা হয় (কার্লি ব্রেইস বা দ্বিতীয় বন্ধনী নয়)। একটি if এর অধীনে ইনডেন্ট করা সব কিছুই সেই শাখার অন্তর্গত।
মৌলিক কন্ডিশনাল (Basic Conditionals)
ট্রুথি এবং ফলসি ভ্যালু (Truthy & Falsy Values)
পাইথনে, সব সময় আপনাকে স্পষ্টভাবে True বা False উল্লেখ করতে হয় না। প্রতিটি ভ্যালুর মধ্যেই এক ধরণের "ট্রুথিনেস (truthiness)" আছে:
Falsy (ফলসি/মিথ্যা হিসেবে ধরা হয়):
False,None,0,0.0- ফাঁকা জিনিসগুলো:
"",[],{},(),set()
Truthy (ট্রুথি/সত্য হিসেবে ধরা হয়):
- বাকি সবকিছুই! নন-জিরো সংখ্যাগুলো, ফাঁকা নয় এমন স্ট্রিং, ফাঁকা নয় এমন লিস্ট ইত্যাদি।
কোনো কিছু আসলেই ফাঁকা নাকি এর কোনো অস্তিত্ব আছে কি না, তা বুঝতে এটি দারুণ কার্যকর।
ট্রুথি/ফলসি এবং টার্নারি এক্সপ্রেশন (Truthy/Falsy & Ternary Expressions)
নেস্টেড কন্ডিশন এবং লজিক একত্রিত করা (Nested Conditions & Combining Logic)
আপনি চাইলেই একটি if স্টেটমেন্টের ভেতরে আরেকটি if স্টেটমেন্ট রাখতে পারেন — তবে খুব বেশি গভীরে না যাওয়ার ব্যাপারে সতর্ক থাকুন! আপনি যদি ২ বা ৩ লেভেলের চেয়ে বেশি নেস্ট করেন বা ভেতরে ঢোকেন, তবে এটি একটি লক্ষণ যে আপনার and/or ব্যবহার করে এটিকে রিফ্যাক্টর করা উচিত অথবা একটি ফাংশন ব্যবহার করা উচিত।
নেস্টেড কন্ডিশন এবং লজিক একত্রিত করা (Nested Conditions & Combined Logic)
if valid: (বিশাল কোড ব্লক) লেখার বদলে if not valid: print("error"); return লেখার চেষ্টা করুন। একে গার্ড ক্লজ (guard clause) বলা হয় এবং এটি আপনার কোডকে সোজা এবং পড়তে সহজ রাখে।