offSchoolবেটা

তথ্য ও যোগাযোগ প্রযুক্তি · অধ্যায় ৬ · টপিক ৮

লুপ: for, নেস্টেড for, while, নেস্টেড while

  • for লুপ ও range ()
  • নেস্টেড for লুপ
  • while লুপ
  • নেস্টেড while লুপ

পড়ার নোট

একই কাজ বারবার করতে লুপ ব্যবহার করা হয়। প্রধান লুপ for ও while।

for লুপ ও range()

for লুপ তখন সুবিধাজনক, যখন আগে থেকে জানা থাকে কাজটি কতবার চলবে। গণনার জন্য একটি কাউন্টার ভ্যারিয়েবল থাকে। range(1, 6) মানে ১ থেকে ৫ পর্যন্ত, শেষ সংখ্যা (৬) ধরা হয় না।

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

১ থেকে ১০ পর্যন্ত যোগফল:

total = 0
for i in range(1, 11):
    total = total + i
print('Sum =', total)
Sum = 55

নামতা (৩ ইনপুট দিলে):

num = int(input('Enter a number: '))
for i in range(1, 11):
    print(num, '*', i, '=', num * i)
Enter a number: 3
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27
3 * 10 = 30

নেস্টেড for লুপ

একটি for লুপের ভেতরে আরেকটি for থাকলে তা নেস্টেড লুপ। ভেতরেরটি ইনার, বাইরেরটি আউটার লুপ। আউটারের প্রতিবার চলায় ইনার লুপ পুরোটা শেষ করে।

for i in range(1, 6):
    for j in range(1, i + 1):
        print(j, end="")
    print()
1
12
123
1234
12345

while লুপ

while লুপ শুরুতেই শর্ত যাচাই করে। শর্ত সত্য থাকা পর্যন্ত বডি চলে, মিথ্যা হলে লুপ শেষ। কাউন্টারের প্রারম্ভিক মান আগে দিতে হয় এবং ভেতরে তা বাড়াতে বা কমাতে হয়, নইলে লুপ কখনো থামবে না।

count = 1
while count <= 3:
    print('ICT')
    count = count + 1
ICT
ICT
ICT

১ থেকে ১০০ পর্যন্ত যোগফল while দিয়েও বের করা যায়:

total = 0
count = 1
while count <= 100:
    total = total + count
    count = count + 1
print('The sum is', total)
The sum is 5050

নেস্টেড while লুপ

while-এর ভেতরে আরেকটি while (বা for) থাকলে তা নেস্টেড while লুপ।

i = 1
while i <= 3:
    j = 1
    while j <= 2:
        print(i, j)
        j = j + 1
    i = i + 1
1 1
1 2
2 1
2 2
3 1
3 2

মনে রাখো: কতবার চলবে জানা থাকলে for, শর্ত সত্য থাকা পর্যন্ত চালাতে while; range(1, 6) শেষ সংখ্যা ধরে না।

২০২৬ সালের NCTB পাঠ্যবই অনুসরণ করে লেখা।

চালিয়ে দেখো

এই টপিকের পার্থক্য

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

  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. ফলে লুপের পরবর্তী পুনরাবৃত্তিগুলো আর চলে না এবং ১৬ মুদ্রিত হয়।

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

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

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