## কন্ট্রোল ফ্লো একটি প্রোগ্রাম কিভাবে চলবে, কোন ধাপের পর কোন ধাপ অনুসরন করবে সেই সিদ্ধান্ত নেওয়াই কন্ট্রোল ফ্লো । আমরা এই চ্যাপ্টারে দেখবো কিভাবে আমরা একটি পাইথন প্রোগ্রামের ফ্লো কন্ট্রোল করতে পারি । ### ইফ স্টেটমেন্ট ইফ স্টেটমেন্ট ব্যবহার করে আমরা কোন একটি ভ্যালুর উপর নির্ভর করে প্রোগ্রাম এর ফ্লো কন্ট্রোল করতে পারি । ```python if x < 0: x = 0 print 'Negative changed to zero' elif x == 0: print 'Zero' elif x == 1: print 'Single' else: print 'More' ``` `if` এর পর আমরা একটি এক্সপ্রেশন ব্যবহার করি, যদি এই এক্সপ্রেশনের ভ্যালু বুলিয়ান `True` এর সমতুল্য হয় তাহলে এই স্টেটমেন্টের সাথে সংশ্লিষ্ট কোড ব্লকটি রান করে । আর যদি `True` না হয় তবে পাইথন ঐ কোড ব্লক স্কিপ করে যায় । `elif` ব্যবহার করে আমরা একাধিক `if` পার্ট যোগ করতে পারি । যদি `if` বা কোন `elif` ব্লকই এক্সিকিউটেড না হয় (অর্থাৎ কোনটার ভ্যালুই `True` না হয়) তাহলে `else` ব্লকের কোড রান করে । উল্লেখ্য `else` কিংবা `elif` অপশনাল । `elif` হলো `else if‍` এর সংক্ষিপ্ত রুপ । ### ফর স্টেটমেন্ট পাইথনে `for` একটি সিকুয়েন্স (যেমন: `list`, `set`, `dictionary`, `tuple` ইত্যাদি) এ থাকা আইটেমগুলো একটার পর একটা এ্যাক্সেস করে এবং প্রতিবার একটি লোকাল ভ্যারিয়েবলে ঐ আইটেমটি পাস করে দেয় । আমরা ফর স্টেটমেন্টের সাথে থাকা কোড ব্লকে এই ভ্যারিয়েবল নিয়ে কাজ করতে পারি । একটি আইটেম প্রসেস করা শেষ হলে ফর স্টেটমেন্টটি পরবর্তী আইটেম এ মুভ করে । এটাকে ইটারেশন বলা হয় । অর্থাৎ ফর স্টেটমেন্ট যে কোন সিকুয়েন্স বা ইটারেটর এর লুপিং বা ইটারেশনের কাজে ব্যবহার করা হয় । ```python words = ['cat', 'window', 'defenestrate'] for w in words: print w, len(w) ``` ### হোয়াইল স্টেটমেন্ট হোয়াইল স্টেটমেন্টে পাস করা এক্সপ্রেশন যতক্ষন পর্যন্ত `True` হয় ততক্ষন পর্যন্ত লুপ চলতে থাকে । পাইথন ইন্টারপ্রেটার প্রতিবার হোয়াইল লুপে ঢুকে প্রথমেই কন্ডিশন টা চেক করে নেয়, যদি `True` হয় তাহলে সাথে থাকা কোড ব্লক এক্সিকিউট করে, তারপর আবার কন্ডিশন চেক করে নতুন করে শুরু করে - এভাবেই লুপটি চলতে থাকে । যখন ঐ এক্সপ্রেশনের ভ্যালু `False` হয় তখন পাইথন কোড ব্লকটি স্কিপ করে পরবর্তী স্টেটমেন্ট বা এক্সপ্রেশনে চলে যায় । ```python i = 0 while i < 10: print i i = i + 1 ``` যেমন এখানে যতক্ষন পর্যন্ত `i` এর ভ্যালু 10 এর নিচে থাকবে ততক্ষন পর্যন্ত লুপ চলবে । প্রতিবারই `i` এর মান এক করে বাড়তে বাড়তে যখন 10 এর ছোট থাকবে না তখন লুপ শেষ হয়ে যাবে । ### ব্রেক, কন্টিনিউ এবং পাস কোন লুপ থেকে বের হতে `break` স্টেটমেন্টটি ব্যবহার করা হয় । যেমন: ```python for n in range(2, 10): for x in range(2, n): if n % x == 0: print n, 'equals', x, '*', n/x break ``` কোন লুপের কোন একটি ইটারেশন স্কিপ করে পরবর্তী ইটারেশনে মুভ করার জন্য `continue` স্টেটমেন্টটি ব্যবহার করা হয় । এক্ষেত্রে `continue` স্টেটমেন্ট এর পর থেকে ঐ ইটারেশনের আর কোন কোড এক্সিকিউট করা হয় না, বরং সরাসরি পরবর্তী ইটারেশনের শুরুতে চলে যায় । ```python for num in range(2, 10): if num % 2 == 0: print "Found an even number", num continue print "Found a number", num ``` `pass` স্টেটমেন্টটি বেশ মজার । এটি কোন কাজ করে না, এটাকে মূলত প্লেইস হোল্ডার হিসেবে ব্যবহার করা হয় । যেসব জায়গায় পাইথন কোন না কোন স্টেটমেন্ট আশা করে কিন্তু আমরা কোন স্টেটমেন্ট দিতে চাই না, তখন আমরা `pass` ব্যবহার করি । যেমন একটি ফাকা ফাংশন বডি: ```python def does_nothing(*args): pass ``` এমনিতে পাইথন ফাংশন এ অবশ্যই একটি বডি থাকা লাগবে যেখানে ফাংশনের মূল কাজটি করার কথা । কিন্তু আমরা আপাতত একটি ফাংশন চাই যেটা কোন কাজ করবে না, তাই আমরা `pass` ব্যবহার করলাম যাতে পাইথন ইন্টারপ্রেটার কোন এরর থ্রো না করে ।