offSchoolবেটা

তথ্য ও যোগাযোগ প্রযুক্তি · প্রোগ্রামিংয়ের মাধ্যমে সমস্যার সমাধান

for ও while লুপের পার্থক্য (পাইথন উদাহরণসহ)

সর্বশেষ হালনাগাদ ২২ অক্টোবর ২০২৬

সংক্ষেপে

for লুপ ব্যবহার উপযোগী যখন আগে থেকেই জানা থাকে লুপ কতবার চলবে; পাইথনে সাধারণত range() দিয়ে কাউন্টারের মানগুলো ঠিক করে দেওয়া হয়, আর কাউন্টার নিজে থেকেই বাড়ে। while লুপ প্রতিবার শুরুতে একটি শর্ত যাচাই করে, শর্ত সত্য থাকা পর্যন্ত চলে; কাউন্টার থাকলে তার প্রারম্ভিক মান আগে দিতে হয় আর লুপের ভেতরে নিজে বদলাতে হয়, নইলে লুপ থামে না।

for লুপ ও while লুপ: পার্থক্যের ছক
তুলনার বিষয়for লুপwhile লুপ
কখন ব্যবহার

লুপ কতবার চলবে আগে থেকে জানা থাকলে

কতবার চলবে আগে জানা না থাকলে, শর্তের ওপর নির্ভর করলে

লেখার ধরন

for i in range(1, 6):

while count <= 5:

কাউন্টার

range() থেকে নিজে নিজে পরের মান নেয়

থাকলে আগে প্রারম্ভিক মান দিতে হয়, ভেতরে নিজে বাড়াতে বা কমাতে হয়

থামে কখন

range()-এর সব মান শেষ হলে

শর্ত মিথ্যা হলে

অসীম লুপের ঝুঁকি

সাধারণত নেই

আছে, কাউন্টার বাড়াতে ভুলে গেলে

উদাহরণ কাজ

কোনো শব্দ ৫০ বার দেখানো, নামতা লেখা

সঞ্চয় ১০০ টাকা না হওয়া পর্যন্ত জমানো

for লুপ

পাইথনে কোনো স্টেটমেন্ট দুই বা ততোধিক বার চালাতে for লুপ ব্যবহার হয়। লুপ কতবার চলবে তা জানা থাকলেই for লুপ সবচেয়ে সুবিধাজনক। range(1, 6) মানে ১ থেকে ৫; শেষ সংখ্যা ৬ ধরা হয় না।

for i in range(1, 6):
    print(i)

while লুপ

while লুপের শুরুতেই শর্ত যাচাই হয়; শর্ত সত্য হলে লুপের ভেতরের অংশ চলে, মিথ্যা হলে লুপ থেকে বের হয়ে যায়। ওপরের কাজটিই while দিয়ে:

count = 1
while count <= 5:
    print(count)
    count = count + 1

দুটিই ১ থেকে ৫ পর্যন্ত দেখায়। লক্ষ করো, while-এ count = 1 আগে লিখতে হয়েছে, আর count = count + 1 ভেতরে।

while কোথায় বেশি মানায়

প্রতিদিন ৩০ টাকা জমালে কত দিনে মাটির ব্যাংকে অন্তত ১০০ টাকা হবে? লুপ কতবার চলবে তা ঠিক করছে একটি শর্ত (মোট ১০০ টাকা হওয়া), তাই while মানানসই:

total = 0
days = 0
while total < 100:
    total = total + 30
    days = days + 1
print(days, total)

ফলাফল 4 120: চার দিনে ১২০ টাকা।

সাধারণ ভুল

  • while লুপে কাউন্টার বাড়াতে ভুলে যাওয়া। তখন শর্ত কখনো মিথ্যা হয় না, লুপ চলতেই থাকে।
  • range(1, 10)-এ ১০ ধরে নেওয়া। এতে মান ১ থেকে ৯ পর্যন্ত।

পরীক্ষায় যেভাবে লিখবে

SSC-র আইসিটি বোর্ড পরীক্ষায় সৃজনশীল প্রশ্ন নেই; নম্বর আসে বহুনির্বাচনি (২৫) আর ব্যবহারিক (২৫) থেকে। MCQ-তে সাধারণত একটি ছোট প্রোগ্রাম দিয়ে জানতে চাওয়া হয় লুপ কতবার চলবে বা আউটপুট কী: যেমন range(1, 6) লুপ ৫ বার চলে, শেষ মান ৬ ধরা হয় না। ব্যবহারিকে একটি কাজ for আর while দুইভাবেই লিখতে বলা হতে পারে। for থেকে while করার নিয়ম: range()-এর শুরুর মান লুপের আগে কাউন্টারে দাও, শেষ মান থেকে শর্ত বানাও (range(1, 11) হলে count <= 10), আর ভেতরের শেষ লাইনে কাউন্টার বাড়াও।

স্কুলের লিখিত পরীক্ষায় পার্থক্য চাইলে লিখতে পারো:

for লুপwhile লুপ
১. লুপ কতবার চলবে জানা থাকলে ব্যবহার হয়।১. শর্তের ওপর ভিত্তি করে চলে।
২. কাউন্টার range() থেকে নিজে বাড়ে।২. কাউন্টার থাকলে ভেতরে নিজে বাড়াতে হয়।

নিজে চালিয়ে দেখো

অনুশীলনের প্রশ্ন

  1. নিচের কোডের আউটপুট কী?

    for i in range(1, 8):
        if i % 3 == 0:
            continue
        print(i, end=" ")
    
    1. ক

      ১ ২

    2. খ

      ৩ ৬

    3. গ

      ১ ২ ৪ ৫ ৭ ৮

    4. ঘ

      ১ ২ ৪ ৫ ৭

    উত্তর ও ব্যাখ্যা
    সঠিক উত্তর:

    ঘ) ১ ২ ৪ ৫ ৭

    1. range(1, 8) দেয় ১ থেকে ৭ (৮ বাদ)। যখন i % 3 == 0 (অর্থাৎ ৩ ও ৬), continue চলে এবং ওই পাক বাদ যায়, কিন্তু লুপ শেষ হয় না।
    2. তাই ৩ ও ৬ বাদে বাকিগুলো প্রিন্ট হয়: 1 2 4 5 7। break হলে 1 2 প্রিন্ট হয়ে লুপ থামত। (python৩-এ চালিয়ে যাচাই করা হয়েছে।)
  2. পাইথনে range(2, 10, 2)-এর ক্ষেত্রে—

    i. প্রথম মানটি হবে ২

    ii. প্রতি ধাপে মান ২ করে বৃদ্ধি পাবে

    iii. শেষ মানটি হবে ১০

    নিচের কোনটি সঠিক?

    1. ক

      i ও ii

    2. খ

      i ও iii

    3. গ

      ii ও iii

    4. ঘ

      i, ii ও iii

    উত্তর ও ব্যাখ্যা
    সঠিক উত্তর:

    ক) i ও ii

    1. range(start, stop, step) ফাংশনটি start (২) থেকে শুরু হয় এবং প্রতি ধাপে step (২) করে বৃদ্ধি পায়।
    2. পাইথনে stop সীমাটি অন্তর্ভুক্ত থাকে না; তাই অনুক্রমটি ২ থেকে শুরু হয়ে ৮ পর্যন্ত চলবে (২, ৪, ৬, ৮), শেষ মান ১০ হবে না।
  3. প্রোগ্রামটি নির্বাহ (run) করলে আউটপুট কত হবে?

    1. ক

      ৯

    2. খ

      ১৫

    3. গ

      ১৬

    4. ঘ

      ২৫

    উত্তর ও ব্যাখ্যা
    সঠিক উত্তর:

    গ) ১৬

    1. লুপটিতে বিজোড় সংখ্যাগুলোর জন্য total-এর মান ক্রমান্বয়ে যোগ হয়: 11, 1+3=41 + 3 = 4, 4+5=94 + 5 = 9 এবং 9+7=169 + 7 = 16।
    1+3+5+7=161 + 3 + 5 + 7 = 16
    1. যখন n = 7, তখন total-এর মান ১৬ হওয়ায় শর্ত total > 15 সত্য হয় এবং break স্টেটমেন্টের কারণে লুপ তাৎক্ষণিকভাবে বন্ধ হয়ে যায়।
    2. ফলে লুপের পরবর্তী পুনরাবৃত্তিগুলো আর চলে না এবং ১৬ মুদ্রিত হয়।

প্রায়ই জিজ্ঞাসিত প্রশ্ন

range(1, 6) কোন কোন মান দেয়?

১, ২, ৩, ৪, ৫। শেষ সংখ্যা ৬ ধরা হয় না।

while লুপ কখনো না থামলে কী ভুল হয়েছে?

সম্ভবত লুপের ভেতরে কাউন্টার বাড়ানো বা কমানো হয়নি, তাই শর্ত কখনো মিথ্যা হয়নি।

এই টপিক নিয়ে প্রশ্ন আছে?

মেন্টরকে বাংলায় বা ইংরেজিতে জিজ্ঞেস করো, বা খাতার ছবি দাও। সিমুলেশন চালিয়ে বুঝিয়ে দেবে।

মেন্টরকে জিজ্ঞেস করো