পাইথন for লুপ

কোন ডেটা স্ট্রাকচারের সব গুলো ডেটার মধ্যে লুপ চালানোর জন্য for লুপ ব্যবহার করা হয়। যেমন Python এই শব্দটির মধ্যে যত গুলো লেটার আছে, আমরা তার মধ্যে লুপ চালাবো, এবং লেটার গুলো একটা একটা করে প্রিন্ট করব। তার জন্যঃ

for letter in 'Python':
   print 'Current Letter :', letter

এখানে letter একটা ভ্যারিয়েবল। for letter in ‘Python’ দিয়ে “Python” এর প্রতিটা লেটারের জন্য আমরা লুপ চালিয়েছি। প্রথমবার letter এর মধ্যে Python এর P লেটার এসাইন করা হয়েছে, for letter in ‘Python’: এ লাইনের মধ্যে। যা অটোমেটিক এসাইন হয়। এরপর আমরা লেটারটি প্রিন্ট করেছি। দ্বিতীয়বার লুপেটি এক্সিকিউট করার সময় letter এ y লেটারটি এসাইন হয়েছে। যখন দেখেছে Python এ আর কোন লেটার অবশিষ্ঠ নেই, তখন লুপটির কাজ শেষ হয়েছে।

আমরা একটা অ্যারের মধ্যেও লুপ চালাতে পারি, তার জন্যঃ

friends = ['Rahim', 'Karim', 'Arif']
for friend in friends:
    print 'Happy New Year:', friend
print 'all done!'

friends হচ্ছে একটা অ্যারে, যেটার মধ্যে তোমার ফ্রেন্ডদের নাম রাখা আছে। ধরে নিচ্ছি তোমার তিনজন ফ্রেন্ড রয়েছে, এবং এদের নাম Rahim, Karim, Arif

তুমি হচ্ছ অলস মানুষ। সবাইকে পহেলা বৈশাখের শুভেচ্ছা জানাতে তোমার অনেক বার লিখতে হবে। তুমি এ জন্য তুমি বুদ্ধি করে একটা প্রোগ্রাম লিখে ফেলছ, যেটা প্রতিটা ফ্রেন্ডকে তোমার হয়ে এসএমএস পাঠিয়ে দিবে।

for লুপ দিয়ে ফ্রেডদের মধ্যে ইটারেশন করে এসএমএস বে, তার জন্য লিখছি for friend in friends: …

এখানে প্রথমবার friend এ থাকবে Rahim এর নাম। তখন প্রিন্ট করবে Happy New Year: Rahim
দ্বিতীয়বার friend এ থাকবে Karim এর নাম। তখন প্রিন্ট করবে Happy New Year:Karim
তৃতীয়বার friend এ থাকবে Arif এর নাম। তখন প্রিন্ট করবে Happy New Year: Arif

এর পরে আমাদের অ্যারেতে আর কোন ফ্রেন্ড নেই। তাই for লুপ থেকে বের হয়ে যাবে। এবং তোমাকে জানাবে, সবাইকে এসএমএস পাঠানো শেষ! all done!

এবার তুমি তোমার সব গুলো ফ্রেন্ড এর নাম নিয়ে একটা বিশাল অ্যারে তৈরি কর। উপরে প্রোগ্রামটা মডিফাই কর, এবং দেখো কি আউটপুট পাওয়া যায়।

while লুপ দিয়ে করা “ami r dustumi korbo na” প্রোগ্রামটি for দিয়েও লিখতে পারিঃ

for a in range(1,100):
 print "ami r dustumi korbo na"

এটা করবে কি, তোমার হয়ে তোমার জন্য ১০০ বার লিখে দিবে “ami r dustumi korbo na”

আমাদের ১ থেকে ১০০ পর্যন্ত প্রাইম নাম্বারের একটা লিস্ট আছে, যেমন নিচেঃ

 prime =[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

আমরা চাচ্ছি একটা একটা করে প্রিন্ট করতে। for লুপ দিয়ে ইটারেশন চালিয়ে আমরা লিখতে এভাবে প্রাইম গুলো প্রিন্ট করতে পারিঃ

 prime =[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
for number in prime:
     print number

তো এটা করবে কি উপরের প্রাইম নাম্বার গুলো থেকে একটা একটা করে প্রিন্ট করে দিবে।

তোমার মনে প্রশ্ন জাগতে পারে, ১ থেকে ১০০ পর্যন্ত কত গুলো প্রাইম আছে। তোমার কাছে যেহেতু লিস্ট আছে, একটা একটা করে গুনে দেখতে পারো। কিন্তু তুমি প্রোগ্রামার। অন্যদের মত বোকামি করলে তো সমস্যা। তুমি ছোট্ট একটা প্রোগ্রাম লিখে ফেলবে, তখন সেই তোমাকে বলে দিবে, ১ থেকে একশ এর মধ্যে কয়টা প্রাইম নাম্বার রয়েছে। তার জন্যঃ

prime =[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
count = 0;
for number in prime:
     count++
print 'Total Prime number in 1-100:,  count

এভাবে তোমার কাছে যত বড় লিস্টই থাকুক, তুমি সহজেই গুণে ফেলতে পারবে কয়টা প্রাইম রয়েছে।

প্রাইম নাম্বারের লিস্ট বের করা

আমদের কাছে এর আগে প্রাইম নাম্বারের লিস্ট ছিল। এখন যদি তোমার কাছে প্রাইম নাম্বারের লিস্ট না থাকে, তখন কি করবা? হ্যা, তখন আমরা প্রাইম নাম্বার গুলো প্রিন্ট করে নিব। কারণ আমরা এখন প্রোগ্রামিং জানি, যেমন আমরা ১ থেকে ১০০ এর মধ্যে প্রাইম নাম্বার গুলো প্রিন্ট করব। তার জন্যঃ

for num in range(1,100):
   if num > 1:
       for i in range(2,num):
           if (num % i) == 0:
               break
       else:
           print(num)

এখানে প্রথমে for num in range(1,100): লাইনে রেঞ্জ দেওয়া হয়েছে। আমরা কত থেকে কত রেঞ্জের সংখ্যা গুলোর মধ্যকার প্রাইম গুলো বের করব। এখানে 1-1000 পর্যন্ত সংখ্যা গুলোর মধ্যে যে প্রাইম গুলো রয়েছে, তাই আমরা বের করব। তুমি এখানে 1-1000 এর পরিবর্তে অন্য যে কোন রেঞ্জ যেমন 500-50000 দিয়ে দেখতে পারো।

প্রাইম নাম্বার গুলো হয় ১ থেকে বড়। আর প্রাইম নাম্বার নেগেটিভ হতে পারে না। তাই আমরা প্রথমেই চেক করে নিয়েছি আমাদের নাম্বারটিকি ১ থেকে বড় কিনা if num > 1: কন্ডিশন দিয়ে। যদি কন্ডিশন সত্য হয়, তাহলে এর ভেতরের কোড গুলো এক্সিকিউত হবে।

একটা সংখ্যা তখনই প্রাইম হবে, যখন ঐ সংখ্যাটি ১ ব্যতিত অন্য কোন সংখ্যা দিয়ে ভাগ না যায়। যদি কোন সংখ্যা অন্য কোন সংখ্যা দিয়ে ভাগ যায়, তাহলে ভাগ শেষ হবে ০, আমরা % দিয়ে চেক করতে পারি, একটা সংখ্যা কি ভাগ যায় কি যায় না। ভাগ যায়, তাহলে ০ হবে। আর যদি ভাগ না যায়, তাহলে অন্য কোন নাম্বার হবে। ভাগ যায় কিনা তা দেখার জন্য আমরা ২ থেকে ঐ সংখ্যার আগ পর্যন্ত সব গুলো সংখ্যা দিয়ে ভাগ করে দেখেছি। দ্বিতীয় ফর লুপ দিয়ে। যেমন ৫ প্রাইম কিনা, তা চেক করার জন্য আমরা ২-৪ পর্যন্ত সব গুলো সংখ্যা দিয়ে ভাগ করে দেখেছি ভাগ যায় কিনা। যদি ভাগ যায়, তাহলে ৫ প্রাইম নয়, আর যদি ভাগ না যায়, তাহলে ৫ প্রাইম নাম্বার।

এখন যদি কোন সংখ্যা তার থেকে ছোট যে কোন একটা সংখ্যা দিয়ে ভাগ যায়, তাহলে তা আর আমাদের লুপ চালাতে হবে না, কারণ ভাগ গেলেই তা আর প্রাইম নাম্বার না। তাই আমরা দ্বিতীয় ফর লুপ থেকে বের হয়ে যাবো, break দিয়ে।

আর যদি কোন সংখ্যা দিয়ে ভাগ না যায়, তা চেক করেছি else দিয়ে, তাহলে ঐ সংখ্যাটি প্রিন্ট করব।

যদি উপরের প্রোগ্রামটি বুঝতে অসুবিধে হয়, তাহলে আরেকটু সহজ একটা প্রোগ্রাম লিখতে পারি। যেখানে একটি সংখ্যা প্রাইম কি প্রাইম না, তা চেক করবে। তার জন্যঃ

num = 5

for i in range(2,num):
     if (num % i) == 0:
          print(num,"is not a prime number")
          break
else:
     print(num,"is a prime number")

উপরে num =5; এর জাগায় অন্য কোন সংখ্যা দিয়ে চেক করা যেতে পারে। প্রোগ্রামটি করবে কি, কোন সংখ্যা যদি প্রাইম হয়, তা বলবে। আর যদি প্রাইম না হয় তাও বলবে।
এবার উপরের প্রাইম লিস্ট বের করার কোড এবং প্রাইম চেক করার কোড গুলো মিলিয়ে দেখলে দেখা যাবে প্রায় একই রকম কোড। এখানে আমরা একটি নাম্বার চেক করেছি। আর লিস্টের ক্ষেত্রে আমরা for দিয়ে রেঞ্জের মধ্যে সব গুলো নাম্বার চেক করেছি। যদি দেখেছি প্রাইম, তখন তা প্রিন্ট করেছি।

নাম্বারটি আমরা চাইলে কনসোল/ইউজা থেকে ইনপুট নিতে পারি। প্রোগ্রামটি প্রথমে জিজ্ঞেস করবে একটি নাম্বার ইনপুট দিতেঃ

num = int(input("Enter a number: "))

for i in range(2,num):
     if (num % i) == 0:
          print(num,"is not a prime number")
          break
else:
     print(num,"is a prime number")

এখন ইনপুট দেওয়ার পর সংখ্যাটি প্রাইম কি প্রাইম না, তা বলে দিবে। এখন ব্যবহার কারী যদি ১ বা কোন ন্যাগেটিভ সংখ্যা ইনপুট দেয়, তাহলে সে গুলোতো আর প্রাইম হতে পারে না। তাই আমরা আমাদের প্রোগ্রামের শুরুতেই তা চেক করে নিবঃ

num = int(input("Enter a number: "))
if num > 1:
   # check for factors
   for i in range(2,num):
       if (num % i) == 0:
           print(num,"is not a prime number")
           break
   else:
       print(num,"is a prime number")       

else:
   print(num,"is not a prime number")

তুমি এবার প্রাইম লিস্ট বের করার প্রোগ্রামটি একটু মডিফাই করতে পারো, যেন তা ইউজার থেকে রেঞ্জটি ইনপুট নেয়। একটা হবে upper range একটা হবে lower range. যেমন আমাদের প্রাইম লিস্ট বের করার প্রোগ্রামে for num in range(1,100) এখানে 1 হচ্ছে lower range, 100 হচ্ছে upper range.


2 thoughts on “পাইথন for লুপ

  1. ami ai program ti run kori
    n=1,3,5,7,9,11,13,15
    count= 0;
    for nam in n:
    count++
    print(“total number count “,count)

    kinto ata dekacce.
    count++
    ^
    SyntaxError: invalid syntax

Leave a Reply

Your email address will not be published. Required fields are marked *