একই স্টেটমেন্ট বার বার রান করানোর জন্য while লুপ ব্যবহার করা হয়। একটি কন্ডিশন দেওয়া হয়, যদি কন্ডিশনটি সত্য হয়, তাহলে while লুপের ভেতরে থাকা কোড গুলো রান হবে। যদি কন্ডিশনটি মিথ্যে হয়, তাহলে while লুপের ভেতরের কোড গুলো রান হবে না। while লুপের সাধারণ ফর্ম হচ্ছেঃ
while expression: statement 1 statement 2 statement 3 ....
এখানে এক্সপ্রেশন বলতে একটা কন্ডিশন দেওয়া হয়। যেটা হয় সত্য হবে না হয় মিথ্যে। যতক্ষণ পর্যন্ত এই কন্ডিশনটি সত্য হবে, ততক্ষন পর্যন্ত while লুপটি চলবে। ছোট্ট একটা প্রোগ্রাম লিখিঃ
a = 1 while a <10: print (a) a=a+1 print ("all done!")
আমাদের এই প্রোগ্রামটি 1 থেকে 9 পর্যন্ত নাম্বার গুলো প্রিন্ট করবে। এবং শেষে প্রিন্ট করবে all done!
while a < 10 এখানে a < 10 হচ্ছে আমাদের কন্ডিশন। আমরা প্রথমে a = 1 ধরে নিয়েছি। যখন প্রোগ্রামটি রান হবে, তখন কন্ডিশনে এসে দেখবে a এর মান 10 থেকে ছোট। তাই এর পরে থাকা স্টেটমেন্ট গুলো এক্সিকিউট করবে। আমাদে এখানে দুইটা স্টেটমেন্ট রয়েছে, একটা দিয়ে a এর মান প্রিন্ট করেছি। আরেকটা স্টেটমেন্ট দিয়ে a এর মান এক বাড়িয়ে নিয়েছি। a = a + 1 মানে a এর আগের মানের সাথে 1 যুক্ত করে a এর মধ্যে এসাইন করা। এটাকে আরো সংক্ষিপ্ত ভাবে এভাবেও লেখা যায়ঃ a +=1 । a এর মান এক বাড়িয়ে নেওয়ার কারনে এখন a এর মান হচ্ছে 2।
এ দুইটা স্টেটমেন্ট রান হওয়ার পর আবার while লুপের কন্ডিশনটি চেক করবে। a এর 2, মানে 10 থেকে ছোট। তাই আবার while লুপের ভেতরে থাকা স্টেটমেন্ট দুইটি রান হবে। প্রথমে a এর মান প্রিন্ট করবে, তা হচ্ছে 2। এর পর আবার a এর মান এক বাড়িয়ে নিবে।
পরের ধাপে এসে একই কাজ কবে। এভাবে ৯ বার লুপটি রান হবে। নয় বার লুপটি রান শেষে a এর মান হবে 10, তখন আবার কন্ডিশনটি দেখবে। a কি 10 থেকে ছোট। তখন দেখবে, না a এর মান 10 থেকে ছোট নয়। তাই while লুপের ভেতরে আর প্রবেশ করবে না। লুপ থেকে বের হয়ে যাবে। লুপের পরে আমরা আরেকটা স্টেটমেন্ট লিখেছি। লুপ থেকে বের হয়ে তা প্রিন্ট করবে। print ("all done!")
এখানে while a < 10: এ 10 এর পরিবর্তে অন্য কোন নাম্বার বসিয়ে টেস্ট করে দেখতে পারেন। print (a) এর পরিবর্তে অন্য যে কোন কিছু প্রিন্ট করে দেখতে পারেন।
আমরা আরেকটা প্রোগ্রাম লিখতে পারি। ছোট বেলায় মাঝে মাঝে শিক্ষক একই লাইন বার বার লিখতে দিত। তখন যদি আমরা প্রোগ্রামিং জানতাম, আমাদের এত কষ্ট করতে হতো না। কয়েক লাইনের কোড লিখলেই যতবার ইচ্ছে, তত বার লেখা হয়ে যেতো। চাইলে তখন ১০০০ বার বা এক লক্ষ বার ও লিখে দেওয়া যেত। while লুপ দিয়ে এই প্রোগ্রামটি লিখি। প্রোগ্রামের ভেতর লিখলাম “Now is better than never.”
[python]
number = 1
while number <= 100:
print('Now is better than never.')
number +=1
[/python]
প্রোগ্রামটি রান করলে দেখব, কনসোলে ১০০ বার লেখা উঠবে "Now is better than never.”। এখানে আগের প্রোগ্রামের মত একই কাজই করা হয়েছে। আগের প্রোগ্রামে নাম্বার ভ্যারিয়েবলটি প্রিন্ট করা হয়েছে। এখন প্রিন্ট করা হয়েছে একটি স্ট্রিং।
প্রতিবার স্ট্রিং প্রিন্ট করার পর number ভ্যারিয়েবল এর মান এক করে বাড়িয়ে দেওয়া হয়েছে। এবং while লুপের প্রথমে গিয়ে কন্ডিশনটি চেক করা হয়েছে। যতক্ষন পর্যন্ত দেখল number এর মান ১০০ থেকে ছোট বা সমান, ততক্ষণ পর্যন্ত লুপটি চলেছে। এবং যখনি number এর মান ১০১ এক হয়েছে, তখন লুপের কাজ শেষ হয়েছে।
while লুপ দিয়ে আরেকটি প্রোগ্রাম লিখতে পারি। 1 থেকে 100 পর্যন্ত বিজোড় সংখ্যা গুলো প্রিন্ট করতে পারি। নিচের প্রোগ্রামটি দেখিঃ
[python]
number = 1
while number <= 100:
print(number)
number = number + 2
[/python]
এক এর সাথে দুই যোগ করলে হবে তিন। একটা বিজোড় সংখ্যা। তিনের সাথে আবার দুই যোগ করলে হবে ৫, আরেকটি বিজোড় সংখ্যা। এভাবে প্রতিবার ভ্যারিয়েবল এর মান দুই বাড়িয়ে দিলেই আমরা বিজোড় সংখ্যা গুলো পেতে পারি। উপরের প্রোগ্রামে সে কাজটিই করা হয়েছে। number = number + 2 দিয়ে প্রতিবার নাম্বার ভ্যারিয়েবলটির মান দুই করে বাড়িয়ে দেওয়া হয়েছে।
প্রথমে ভ্যারিয়েবলটির মান ছিল 1। number = 1 এর কথা বলছি। এরপর লুপের ভেতরে ঢুকলো। এবং কন্ডিশন চেক করা হল। যেহেতু কন্ডিশন সত্য, তাই লুপের ভেতরের কোড গুলো রান করল। number টি প্রিন্ট করল। পরের লাইনে number ভ্যারিয়েবল টির মান দুই বাড়িয়ে দেওয়া হলো। এভাবে এক সময় যখন number ভ্যারিয়েবলটির মান 100 থেকে বেশি হয়ে গেলো, তখন লুপটি কাজ করা শেষ করল।
উপরের প্রোগ্রামটিকে একটু পরিবর্তন করেই তো জোড় সংখ্যা গুলো বের করতে পারি তাই না? আমরা চাইলে একটা while লুপের ভেতর আরেকটা while লুপ বা if else বা যে কোন লুপ ব্যবহার করতে পারি।