You are on page 1of 92

পাইথন প্রাগ্রাম িং বই

বইয়ের সূমিপত্র

• ভূ ম কা
• প্রাগ্রাম িং ও পাইথন
• পাইথন মিয়ে রথ প্রাগ্রা
• ভযামরয়েবল, প্েটা টাইপ ও গামিমিক অপায়রশন
• কন্ডিশনাল লন্ডিক
• টাটট য়লর সয়ে পমরিে
• লুপ
• ফািংশন
• মরিং
• মলস্ট ও টাপল
• প্সট ও মেকশনামর
• মেউল ও পযায়কি
• অবয়িক্ট ও ক্লাস
• বই ও ওয়েবসাইয়টর িামলকা
• প্লখক পমরমিমি

Online Version: http://pybook.subeen.com/


ভূ ম কা
Published by subeen on April 23, 2018

পাইথন প্রাগ্রাম িং বই
পাইথন মিয়ে প্রাগ্রাম িং প্শখার বই। যারা আয়গ কখনও প্রাগ্রাম িং কয়র মন, িায়ির িনয বইটট
উপয়যাগী। বইটট অনলাইয়ন মি পড়া যায়ব এবিং মলঙ্ক প্শোর করা যায়ব। িয়ব প্লখয়কর অনু মি
ছাড়া বইয়ের প্কায়না অিংশ নকল কয়র মনয়ির ব্লয়গ বা অনয প্কাথাও রকাশ করা যায়ব না।

উৎসর্ গ

ু ম্মি িাফর ইকবাল – আ ার মশক্ষক ও মরে ানুষ, আ ার বই প্লখার অনুয়ররিা। সযায়রর



উৎসাহ না থাকয়ল আ ার কখনও প্লখায়লমখ করা হয়িা না। সযায়রর িনয ভায়লাবাসা।

ভূ মিকা
বিট ান মবয়ে পাইথন একটট অিযন্ত িনমরে প্রাগ্রাম িং ভাষা। মবয়ের অনযানয প্িয়শর য়িা
বািংলায়িয়শও পাইথয়নর রমি আগ্রহ মিনমিন বৃন্ডি পায়ে। আম মনয়ি ২০০৭ সায়ল পাইথন প্শখা
শুরু কমর। প্সস ে ায়ে য়যয একটট ব্লয়গ (Life is short – you need python) পাইথন মবষেক
প্লখায়লমখ করিা , প্যটট প্সই স য়ে প্বশ িনমরে মছল। পরবমিট কায়ল ২০১৩ সায়ল পাইথন মনয়ে
একটট মভমেও টটউয়টামরোল মসমরি তিমর কমর, আর প্সই মভমেওর কনয়টন্ট মনয়ে ২০১৫ সায়ল
একটট বইও রকাশ কমর – পাইথন পমরমিমি নায় । বইটটয়ি পাইথন ২ বযবহার করা হয়েমছল এবিং
এটট মছল যারা প্রাগ্রাম িং করয়ি পায়র, িায়ির িনয। বইটট প্ াটা ুটট িনমরেিা অিটন কয়র।
বিট ায়ন পাইথন ২ এর বযবহার হ্রাস পায়ে।

এমিয়ক যারা নিু ন প্রাগ্রাম িং মশখয়ব, িায়ির িনয ২০১১ সায়ল আ ার কম্পিউটার প্রাগ্রাম িং ১
খণ্ড বইটট রকামশি হে – প্যটট সারা পৃমথবীর বািংলাভাষাভাষী মশক্ষাথীয়ির কায়ছ মবপুল িনমরেিা
অিটন কয়র। বইটটর অনলাইন সিংস্করি ইন্টারয়নয়ট মি পাওো যাে মসমপবুক ওয়েবসাইয়ট। বইয়ি
মস প্রাগ্রাম িং ভাষা বযবহার কয়র মশক্ষাথীয়িরয়ক প্রাগ্রাম িংয়ের সয়ে পমরিে কমরয়ে প্িওো
হয়েয়ছ। প্রাগ্রাম িং শুরু করার িনয অয়নক বছর প্থয়কই মস প্রাগ্রাম িং ভাষা সারা পৃমথবীিুয়ড়
বযবহার করা হয়ে। িয়ব প্বশ কয়েকবছর যয়র অয়নক িােগায়িই রথ প্রাগ্রাম িং ভাষা মহয়সয়ব
পাইথন বযবহার করা শুরু হয়েয়ছ – যার ফয়ল আয়রা অমযক সিংখযক মশক্ষাথী প্রাগ্রাম িং প্শখাে
আগ্রহী হয়ে। িাই বািংলায়িয়শও প্যন মশক্ষাথীরা পাইথন মিয়ে প্রাগ্রাম িং প্শখা শুরু করয়ি পায়র,
প্সিনয ২০১৭ সায়ল মিম ক রকাশনী প্থয়ক আ ার প্লখা পাইথন মিয়ে প্রাগ্রাম িং প্শখা বইটট
রকামশি হে।

এই বইটটও মশক্ষাথীয়ির কায়ছ অল্প স য়েই িনমরে হে। একই বছর আম এই বইয়ের মিিীে
খণ্ড: পাইথন মিয়ে প্রাগ্রাম িং প্শখা ২ে খণ্ড – অবয়িক্ট ওমরয়েয়ন্টে প্রাগ্রাম িং ও ওয়েব
ক্রমলিং বইটট রকাশ কমর। আবার ২০১৭ সায়লই পমলয়টকমনক ইনমস্টটটউটগুয়লার মসয়লবায়স
পাইথন মনয়ে আসা হে, আর প্সকারয়ি িাহম ি রামফ’র সয়ে ম য়ল প্রাগ্রাম িং এয়সনমশোলস –
পাইথন ৩ নায় একটট বই মলমখ, িায়ির মসয়লবায়সর সয়ে ম ল প্রয়খ। ২০১৮ সায়লর িানুোমর
ায়স “পাইথন মিয়ে প্রাগ্রাম িং প্শখা ৩ে খণ্ড – প্েটা রাকিার ও অযালগমরি ” বইটট রকামশি
হয়ব, যা মশক্ষাথীয়িরয়ক িক্ষ প্রাগ্রা ার মহয়সয়ব গয়ড় উঠয়ি সহােিা করয়ব বয়ল আ ার মবোস।

পাইথন মনয়ে প্লখা বইগুয়লা বািংলায়িয়শর প্ভিয়র িনমরেিা অিটন করয়লও নানান কারয়ি
প্িয়শর বাইয়র ( ায়ে- য়যয প্িয়শর প্ভিয়রও) মশক্ষাথীয়ির কায়ছ বইগুয়লা প্প ৌঁছয়ি পারয়ছ না –
যার ূল কারি হয়ে পাইথন এখনও মশক্ষাথীয়ির কায়ছ যয়থষ্ট পমরমিি নে, িার ওপর বািংলায়িয়শর
মশক্ষাথীরা বই প্কনার বযাপায়র অমনেু ক – িারা মনন্ডিি না হয়ে বই মকনয়ি িাে না। প্সিনয আম
পাইথন মিয়ে প্রাগ্রাম িং প্শখা বইয়ের িুটট খণ্ড (রথ খণ্ড ও মিিীে খয়ণ্ডর রথ িুটট অযযাে) ম য়ল
একটট অনলাইন সিংস্করি তিমরর মসিান্ত মনই। মিম ক রকাশনীর রকাশক িাহম ি রামফ এ
বযাপায়র ইমিবািক সাড়া প্িন। এই অনলাইন সিংস্করয়ির াযযয় মশক্ষাথীরা সটঠকভায়ব পাইথয়নর
সয়ে পমরমিি হয়ি পারয়ব বয়ল আম য়ন কমর। আশা কমর, বইটট লক্ষ লক্ষ বািংলাভাষাভাষী
প্ছয়লয় য়েয়ির প্রাগ্রাম িংয়ের আনন্দ ে িগয়ির সয়ে পমরমিি করায়ব।
লেখক পমিমিমি
Published by subeen on April 29, 2018

িাম শাহম‍্ রোর (োকনা : সুমবন)-এর িন্ম ১৯৮২ সায়লর ৭ নয়ভম্বর ে নমসিংয়হ। গ্রায় র বামড়
কুম ল্লা প্িলার িান্ডন্দনা উপয়িলার হারিং গ্রায় । িাাঁর বাবা প্ া: প্ ািায়ম্মল হক মছয়লন সরকামর
ক কিট
ট া এবিং া প্ফরয়ি মস প্বগ গৃমহিী। স্ত্রী মসরািু ুমনরা ও পুত্র আরাভ শাহমরোরয়ক মনয়ে
বিট ায়ন মসোপুয়র বসবাস করয়ছন।

প্লখাপড়া কয়রয়ছন প্হা না সরকামর রাথম ক মবিযালে, এ প্ক উচ্চ মবিযালে, নটর প্ে কয়লি
এবিং শাহিালাল মবজ্ঞান ও রযুন্ডি মবেমবিযালয়ে। ২০০৬ সায়ল শাহিালাল মবজ্ঞান ও রযুন্ডি
মবেমবিযালয়ে কম্পিউটার সায়েন্স ও ইন্ডিমনোমরিং মবভাগ প্থয়ক পাস কয়রয়ছন।

মবেমবিযালয়ে থাকাকালীন মবমভন্ন প্রাগ্রাম িং রমিয়যামগিাে অিংশগ্রহি কয়রয়ছন। পরবিী স য়ে


(২০০৭ ও ২০০৮ সায়ল) মিমন এমসএ আইমসমপমস ঢাকা মরন্ডিওনাল-এর মবিারক মছয়লন। একটট
প্বসরকামর মবেমবিযালয়ে মশক্ষকিা মিয়ে ক িীবন ট শুরু করয়লও পয়র সফটওেযার রয়ক শলী
মহয়সয়ব কাি শুরু কয়রন। বািংলায়িয়শ থাকাকালীন স য়ে রমিষ্ঠা কয়রয়ছন ুি সফটওেযার
মলম য়টে ও মিম ক কম্পিউটটিং। এ ছাড়া মিমন বািংলায়িশ গমিি অমলম্পিোয়ে একিন
একায়েম ক কাউন্ডন্সলর।

বিট ায়ন মসোপুয়র গ্রযাব না ক একটট আন্তিটামিক রমিষ্ঠায়ন ইন্ডিমনোমরিং যায়নিার মহয়সয়ব
কাি করয়ছন।
প্রাগ্রাম িং ও পাইথন
Published by subeen on April 22, 2018

লরাগ্রামিিং কী?
কম্পিউটার একটট আিয যন্ত্র
ট যা অিযন্ত দ্রুিগমিয়ি অয়নক মহয়সব-মনয়কশ করয়ি পায়র। িার
ওপর রিুর পমর াি িথযও যারি করয়ি পায়র, িার স্থােী ও অস্থােী প্ য় ামরয়ি। প্িা এই সুমবযায়ক
কায়ি লামগয়ে মবমভন্ন স সযা স াযায়নর িনয ানুষ তিমর করয়ছ হয়রক রকয় র সফটওেযার।
প্সই সফটওেযার হয়ি পায়র একটট সাযারি কযালকুয়লটর, মকিংবা িালকমবহীন গামড় িালায়নার
সফটওেযার, একটট মশক্ষা রমিষ্ঠায়নর ভমিট বযবস্থা, মকিংবা বযবসা রমিষ্ঠা পমরিালনার িনয তিমর
সফটওেযার। কি কায়ি প্য ানুষ সফটওেযার বযবহার কয়র, প্সটট বয়ল প্শষ করা যায়ব না। প্িা
সফটওেযার বযবহায়রর সুমবযা কী? প্যসব কায়ি রিুর পমর াি িথয রন্ডক্রো (process) ও সিংরক্ষি
করার কাি করয়ি হে, যা অয়নক স ে সায়পক্ষ, প্সখায়নই সফটওেযার বযবহার কয়র অিযন্ত দ্রুি
ও মনভুল
ট ভায়ব কািটট করা যাে। এসএসমস পরীক্ষার ফলাফল রকায়শর কথাই যরা যাক। প্সখায়ন
১০-১৫ লক্ষ মশক্ষাথীর অয়নকগুয়লা মবষয়ের পরীক্ষার ফলাফল রন্ডক্রো করয়ি হে, িারপর িূ ড়ান্ত
ফল রকাশ করয়ি হে। সফটওেযায়রর াযযয় কািটট করার ফয়ল হািার হািার ঘণ্টার শ্র প্বাঁয়ি
যাে।

ানুষ প্য এি সফটওেযার তিমর করয়ছ, ানুষ মনয়ি কী করয়ব? উত্তয়র সবাই বয়লন প্য, ানুষ
মবমভন্ন সৃিনশীল কাি করয়ব, যমিও কৃন্ডত্র বুন্ডি ত্তা (ইিংয়রন্ডিয়ি বয়ল Artificial Intelligence)
মিয়ে কম্পিউটারও একটু একটু কয়র সৃিনশীল হওো আরম্ভ কয়রয়ছ। মকন্তু যি প্বমশ সফটওেযার
তিমর করয়ি হয়ব, রক্ষিায়বক্ষি করয়ি হয়ব, িি প্বমশ প্রাগ্রা ায়রর িরকার হয়ব – প্কবল
বািংলায়িয়শই নে, সারা মবয়ে। মবেবযাপী ভায়লা প্রাগ্রা ারয়ির রয়েয়ছ অয়নক িামহিা। িয়ব একটট
মবষে য়ন রাখয়ি হয়ব, প্রাগ্রা ার হওো প্ি ন প্কায়না কটঠন কাি না হয়লও ভায়লা প্রাগ্রা ার
হওো অয়নক কটঠন কাি। এর িনয বছয়রর পর বছর যয়র প্লখাপড়া ও িিটা করয়ি হে।

প্রাগ্রা াররা কী কয়র? প্রাগ্রা াররা সফটওেযার তিমর কয়র, প্যখায়ন এক বা একামযক প্রাগ্রা
থায়ক। প্রাগ্রা গুয়লায়ি থায়ক প্সাস প্কাে,
ট যা কম্পিউটার বুেয়ি পায়র, এ ন প্কায়না ভাষাে
মলখয়ি হে। প্সাস প্কায়ে
ট একটট মনমিটষ্ট ভাষাে কম্পিউটায়রর িনয মকছু মনয়িটশ প্িওো থায়ক, যা
আয়রকটট সফটওেযায়রর াযযয় কম্পিউটার বুয়ে প্নে এবিং প্সই অনুসায়র কাি কয়র।

সবাই প্িা সফটওেযার তিমর করয়ব না। িাহয়ল সবার মক প্রাগ্রাম িং প্শখা উমিি? উত্তর হয়ে হযাাঁ,
এখন সবারই প্রাগ্রাম িং প্শখা উমিি। প্রাগ্রাম িং িিটা ানুয়ষর ন্ডিষ্কয়ক শামনি কয়র, যুন্ডি মিয়ে
প্কায়না স সযা বা িথয মবয়েষয়ির অভযাস তিমর কয়র। এছাড়া উচ্চমশক্ষার প্বমশরভাগ মবষয়েই
মনয়ি প্রাগ্রাম িং করার রয়োিন হে, িাই আয়গ প্থয়ক প্রাগ্রাম িং িানা থাকা উমিি। আর অমিয়রই
ক য়ক্ষয়ত্রও
ট নানান কায়ি প্রাগ্রাম িং করার রয়োিন হয়ব। িাই স্কুল-কয়লয়ির সকল মশক্ষাথীরই
প্রাগ্রাম িং প্শখা রয়োিন।

পাইথন কী?
মবমভন্ন প্রাগ্রাম িং ভাষার য়যয পাইথন হয়ে অিযন্ত িনমরে একটট ভাষা। পাইথন বযবহার কয়র
ওয়েব, প্ াবাইল, প্েস্কটপ ইিযামি প্ল্যাটফয় রট িনয সফটওেযার তিমর করা যাে। প্ মশন লামনিংট
(Machine Learning) ও প্েটা সায়েন্স (Data Science) প্ক্ষয়ত্রও পাইথন অয়নক িনমরে। আর
প্রাগ্রাম িং প্শখায়ক সহিির করার িনযও পাইথন বযবহার করা হয়ে অয়নক িােগাে। পাইথন
ভাষা তিমর কয়রন গুইয়ো ভন রুযা (Guido van Rossum)। ১৯৮৯ সায়ল পাইথন তিমরর কাি
শুরু হে, এখনও পাইথন মনেম ি হালনাগাি হয়ে এবিং এর মবমভন্ন সিংস্করি (ভাসন) ট রকামশি
হয়ে। প্রাগ্রাম িং প্শখার িনয প্য ন পাইথন গুরুত্বপূি, ট একায়েম ক কায়ি প্য ন পাইথন বযবহার
করা হে, প্ি মন সফটওেযার ইিামরয়িও পাইথয়নর অয়নক বযবহার রয়েয়ছ। এই ুহুয়িট
বািংলায়িয়শ ও বািংলায়িয়শর বাইয়র ভায়লা পাইথন প্রাগ্রা ায়রর অয়নক িামহিা। িয়ব লক্ষ করয়ি
হয়ব, শুযু পাইথন প্রাগ্রা ার নে, বরিং ভায়লা পাইথন প্রাগ্রা ার।

এই বইটি কাদেি জনয?


যারা আয়গ কখয়না প্রাগ্রাম িং কয়র মন, পাইথন মিয়ে প্রাগ্রাম িং প্শখা শুরু করয়ি িাে, িায়ির িনয
বইটট প্লখা হয়েয়ছ। অষ্ট প্শ্রিী মকিংবা িার ওপয়রর প্শ্রিীর প্কায়না মশক্ষাথীর বইটট পড়য়ি স সযা
হওোর কথা নে। বইটট পড়ার িনয খুব প্বমশ গমিিও িানয়ি হয়ব না। িয়ব পাঠকয়ির রমি আ ার
পরা শ হয়ব,
ট পঞ্চ , ষষ্ঠ, সপ্ত ও অষ্ট প্শ্রিীর গমিি বইগুয়লা আয়রকবার পয়ড় প্নওোর িনয।
িায়ি এই বইটট পড়য়ি প্য ন সুমবযা হয়ব, িীবয়নর অনযানয প্ক্ষয়ত্রও এটট কায়ি লাগয়ব। বইটট
পড়ার স ে অবশযই কম্পিউটার সয়ে থাকয়ি হয়ব। কম্পিউটায়র প্যয়কায়না রিমলি অপায়রটটিং
মসয়স্ট থাকয়লই িলয়ব, প্য ন উইয়িাি, যাক ওএসএক্স, মলনাক্স (উবুন‍্টু, ম ন্ট মকিংবা অনয
প্যয়কায়না মেমরমবউশন)। িয়ব আ ার পরা শ হয়ব ট মলনাক্সমভমত্তক প্কায়না অপায়রটটিং মসয়স্ট
বযবহার করার িনয। িায়ি প্রাগ্রাম িং িীবন অয়নক সহি ও আনন্দ ে হে। আর যায়ির
কম্পিউটার প্নই, িারা অযান্ড্রয়েে িামলি প্ াবাইল প্ফায়নও প্রাগ্রাম িং করয়ি পায়র, QPython
সফটওেযায়রর সাহায়যয।

পাইথন ইনস্টে কিা


মলনাক্সমভমত্তক প্বমশরভাগ অপায়রটটিং মসয়স্টয় পাইথন এ মনয়িই ইনস্টল করা থায়ক। উইয়িাি
বযবহারকারীয়ির িনয পাইথন োউনয়লাে কয়র ইনস্টল কয়র মনয়ি হয়ব। পাইথন োউনয়লায়ের
িনয ওয়েবসাইট
হয়ে https://www.python.org/downloads/ (https://www.python.org/downloads/।)। এখা
প্ন মগয়ে পাইথন 3.5 (বা িার প্িয়ে নিু ন প্যয়কায়না সিংস্করি) োউনয়লাে কয়র ইনস্টল করয়ি
হয়ব।

পাইথন ছাড়াও কম্পিউটায়র একটট প্টক্সট এমেটর সফটওেযার ইনস্টল করা থাকয়ল ভায়লা হে।
মনয়ি োউনয়লাে করার মলঙ্কসহ িুটট প্টক্সট এমেটয়রর না প্িওো হয়লা, প্যয়কায়না একটট ইনস্টল
করয়লই হয়ব:

• Atom (https://atom.io/\)
• Visual Studio Code (https://code.visualstudio.com/\)

যারা উইয়িাি বযবহার কয়র, িারা মকভায়ব পাইথন ইনস্টল করয়ব ও পাইথন মিয়ে প্রাগ্রাম িং
করয়ব, প্সটট পমরমশষ্ট অিংয়শ প্িখায়না হয়েয়ছ।
পাইথন মিয়ে রথ প্রাগ্রা
Published by subeen on April 21, 2018

পাইথন মিয়ে রথ প্রাগ্রা


পাইথন বযবহার কয়র রথ প্রাগ্রা প্লখার আয়গ আয়রা মকছু কথা বলা রয়োিন। প্রাগ্রাম িং
মশক্ষাথীয়ির একটট বহুল ন্ডিজ্ঞামসি রশ্ন হয়ে, আম প্িা সফটওেযার বানায়ি িাই (কারি
মশক্ষাথীয়ির যারিা, সফটওেযার বলয়ি গ্রামফকযাল ইউিার ইন্টারয়ফস স ৃি সফটওেযার
প্বাোে), মকন্তু ক াি রিট (command prompt) বা টাম নাল ট (terminal)-এ প্রাগ্রা মলয়খ কী
লাভ? আসয়ল গুই (গ্রামফকযাল ইউিার ইন্টারয়ফস) হয়ে প্রাগ্রাম িং িগয়ির খুব প্ছাট্ট একটট
অিংশ। এটট প্শখার প্িয়ে প্রাগ্রাম িং ভাষা ও লন্ডিক প্শখা ও িিটা করাই অয়নক গুরুত্বপূি।ট গান
প্শখার আয়গই প্য ন সেীিমশল্পীরা অযালবা প্বর কয়র না, বরিং কয়েকবছর গান মশয়খ, িিটা কয়র,
িারপয়রই ওই কায়ি হাি প্িে, সফটওেযার তিমরর বযাপারটটও প্ি মন। আ রা পূিাে ট সফটওেযার
অবশযই বানায়বা, িয়ব প্সটট ভায়লাভায়ব প্রাগ্রাম িং প্শখার পয়র।

মিিীে রশ্ন হয়ে, প্রাগ্রাম িং প্শখার স ে সবমকছুয়িই রশ্ন : “প্কন”? (এটট প্কন হে, প্সটট প্কন হে
– এরক আর মক)। এয়ক্ষয়ত্র আ ার পরা শ হয়ে ট প্রাগ্রাম িং প্শখার শুরুর মিয়ক “কী হে”
প্সমিয়কই প্বমশ প্িার প্িওো। প্কান কাি করয়ল কী হে এবিং মবমভন্ন রয়শ্নর উত্তর প্খাাঁিার িনয
মনয়িই প্রাগ্রা মলয়খ পরীক্ষা কয়র প্িখা। প্রাগ্রাম িং প্ াটা ুটট প্শখা হয়ল, িারপর মবমভন্ন “প্কন”
রয়শ্নর উত্তর প্খাাঁিা যায়ব। শুরুয়িই “প্কন” মনয়ে অমস্থর থাকয়ল প্রাগ্রাম িংটা আর প্শখা হয়ব না।

এখন আ রা আ ায়ির রথ প্রাগ্রা মলখয়বা। সারা মবয়ের সয়ে িাল ম মলয়ে আ ায়ির
প্রাগ্রা টটও হয়ব একটট প্ছাট্ট প্রাগ্রা , যা Hello World কথাটট ন্ডিয়ন মরন্ট করয়ব। এটট মবেবযাপী
রিমলি একটট রীমি আর মক। যায়ির কম্পিউটায়র উইয়িাি অপায়রটটিং মসয়স্ট আয়ছ, িারা
পাইথন সফটওেযারটট িালু করয়ব আর যারা মলনাক্স বা যাক বযবহারকারী, িারা টাম নাল ট িালু
করয়ব এবিং প্সখায়ন python মলয়খ এন্টার কী িাপয়ব। িাহয়ল পাইথন ইন্টারয়রটার িালু হয়ব।
প্সখায়ন পাইথন ভাষাে প্লখা প্যয়কায়না মনয়িটশ বা ক াি সয়ে সয়ে রান কয়র আউপুট প্িখা
যায়ব। আ রা মলখব – print(“Hello World”)। এর াযযয় আ রা কম্পিউটারয়ক বলমছ প্য ন্ডিয়ন
Hello World প্লখাটট প্িখায়ি।

>>> print("Hello World")


Hello World!
>>>

িাহয়ল আ রা আ ায়ির রথ প্রাগ্রা মলয়খ প্ফললা ! পাঠকয়ক অমভনন্দন, কারি প্রাগ্রাম িং


প্শখার পয়থ একটট গুরুত্বপূি যাপ
ট আ রা পার করলা ।
এখন আ রা এই কািটটই আবার করয়বা, িয়ব মভন্নভায়ব। আ রা প্রাগ্রা টট একটট ফাইয়ল প্সভ
করয়বা। িারপয়র প্সই ফাইলটট পাইথন বযবহার কয়র িালায়বা। এিনয প্যয়কায়না প্টক্সট এমেটয়র
পাইথন প্কাে মলয়খ ফাইয়ল প্সভ করয়ি হয়ব আর ফাইয়লর এক্সয়টনশন মিয়ি হয়ব .py। প্য ন
আ রা hello.py নায় একটট ফাইল তিমর করয়বা, প্যখায়ন প্কবল মনয়ির ক ািটট প্লখা থাকয়ব :

print("Hello World")

িারপয়র ফাইলটট প্সভ করয়ি হয়ব।

এখন আ রা টাম নায়ল ট মগয়ে python hello.py ক াি মিয়ল প্রাগ্রা টট রান হয়ব, আর আউটপুট
প্িখা যায়ব : Hello World।

িাহয়ল আ রা এিক্ষয়ি মশয়খ প্ফললা মকভায়ব পাইথন ইন্টারয়রটার বযবহার কয়র প্রাগ্রা
মলখয়ি হে, আবার মকভায়ব আলািা ফাইয়ল পাইথন প্রাগ্রা মলয়খ প্সটট িালায়ি হে।

রমিটট ভাষার প্য ন মকছু মনে কানুন রয়েয়ছ, প্ি মন প্রাগ্রাম িং ভাষারও মনে কানুন রয়েয়ছ।
আ রা যখন প্রাগ্রা মলয়খ রান করয়ি যাই, িখন প্যই ভাষাে প্রাগ্রা প্লখা হয়েয়ছ, িার
মনে কানুন পরীক্ষা করা হে এবিং প্কায়না ভুল পাওো প্গয়ল প্রাগ্রা বন্ধ হয়ে প্সই ভুয়লর কথা
িামনয়ে প্িওো হে। এখন আ রা একটট ভুল কয়র প্িখয়বা প্য ভুল করয়ল কী হে। পূয়ব তিমর ট করা
hello.py ফাইয়ল আ রা Hello World এর শুরুয়ি এবিং প্শয়ষ েবল প্কায়টশন মিহ্ন বযবহার
কয়রমছ। প্কন কয়রমছ, প্সই আয়লািনা পয়র করয়বা, িয়ব এখন প্িখয়বা প্য শুরুয়ি েবল প্কায়টশন
মিহ্ন এবিং প্শয়ষ মসয়েল প্কায়টশন মিহ্ন বযবহার করয়ল কী হে? এিনয আ রা প্সই ফাইয়ল প্শষ
েবল প্কাটশন মিহ্নটট পমরবিটন কয়র মসয়েল প্কায়টশন মিহ্ন বযবহার করয়বা :

print("Hello World')

এখন ফাইলটট প্সভ কয়র প্রাগ্রা রান করার প্িষ্টা করয়ল মনয়ির য়িা আউটপুট আসয়ব :

File "hello.py", line 1


print("Hello World')
^
SyntaxError: EOL while scanning string literal

পাইথন আ ায়ির বলয়ছ প্য, প্রাগ্রায় মসনটযাক্স এরর হয়েয়ছ, প্সই সয়ে প্কাথাে ভুল হয়েয়ছ,
প্সটটও প্িমখয়ে মিয়লা। সয়ে আবার একটট এরর প্ য়সিও মিল, যমিও আ রা এখন প্সটট
ভায়লাভায়ব বুেয়ি পারমছ না। যাই প্হাক, এরক (এবিং আয়রা অয়নকরক ) ভুল আ ায়ির রােই
হয়ব, িয়ব িায়ি ভে প্পয়ল িলয়ব না। ভুলগুয়লা টঠকঠাক কয়র প্রাগ্রা আবার িালায়ি হয়ব।
ভযামরয়েবল, প্েটা টাইপ ও
গামিমিক অপায়রশন
Published by subeen on April 20, 2018
আ রা ইমি য়যযই প্িয়ন মগয়েমছ প্য, প্রাগ্রায় র কাি হয়ে মবমভন্ন রকয় র িথয রন্ডক্রো করা। প্িা
এই িথয রন্ডক্রো করার িনয প্সটট রথয় কম্পিউটায়রর প্ য় ামরয়ি রাখয়ি হয়ব এবিং িারপয়র
মবমভন্ন অপায়রশন িালায়ি হয়ব। প্য ন, যরা যাক, আ ায়িরয়ক িুইটট সিংখযা প্িওো হয়লা এবিং
আ ায়িরয়ক প্সগুয়লার প্যাগফল প্বর কয়র প্িখায়ি হয়ব। এখন, প্যই িুইটট সিংখযা প্যাগ করয়ি
হয়ব, প্সগুয়লায়ক প্িা প্কাথাও রাখয়ি হয়ব, আর প্যাগফলয়কও এক িােগাে রাখয়ি হয়ব। এিনয
আ রা বযবহার করয়বা ভযামরয়েবল (variable)। ভযামরয়েবয়ল আ রা মবমভন্ন যরয়নর প্েটা রাখয়ি
পামর। আ রা পূয়বরট অযযায়ে করা প্রাগ্রা টট এখন ভযামরয়েবল বযবহার কয়র করয়বা, এরপর
প্যাগফল প্বর করার প্রাগ্রা টট মলখয়বা। আ ায়ির প্কাে হয়ব এরক :

text_to_print = "Hello World"


print(text_to_print)

এটট রান করয়ল আ রা পূয়বরট য়িা ন্ডিয়ন Hello World প্লখা প্িখয়ি পায়বা। এখায়ন
text_to_print হয়ে একটট ভযামরয়েবল, প্যখায়ন আম Hello World কথাটট ি া রাখলা ।
িারপয়র প্সটট মরন্ট করলা । ভযামরয়েবয়লর না প্িওোর মকছু মনে কানুন আয়ছ, প্যগুয়লা মবমভন্ন
প্টক্সট বইয়ি প্িওো আয়ছ। আ রা এখন প্সইসব মনে ুখস্থ করয়ি যায়বা না, বরিং প্রাগ্রা
মলখয়ি মলখয়ি আর প্সই সয়ে ভুল করয়ি করয়ি আ রা মশখয়বা। এখন text_to_print না মলয়খ
আ রা অনয প্কায়না না ও বযবহার করয়ি পারিা , প্য ন a, b, c, s ইিযামি। মকন্তু আ ায়ির
প্খোল রাখয়ি হয়ব প্যন ভযামরয়েবয়লর না অথপূ ট ি হে,
ট ায়ন ভযামরয়েবয়লর না প্িয়খ প্যন
বুেয়ি পারা যাে প্য, প্সটট কী কায়ি বযবহৃি হয়ে।

এখন আ রা টাম নায়ল ট পাইথন িালু কয়র আয়রা মকছু প্রাগ্রা মলখয়বা। রথ প্রাগ্রা হয়ে িুইটট
সিংখযা প্যাগ করার প্রাগ্রা । িুইটট সিংখযা রাখার িনয আ রা number1 ও number2 নায় িুইটট
ভযামরয়েবল বযবহার করয়বা। আর িায়ির প্যাগফল রাখয়বা result নায় আয়রকটট ভযামরয়েবয়ল।
িারপয়র প্সটট মরন্ট করয়বা।

>>> number1 = 10
>>> number2 = 5
>>> result = number1 + number2
>>> print(result)
15

আ রা উপয়র একটট গামিমিক অপায়রশন করলা , প্যটট হয়ে প্যাগ (+)। প্ি মন আ রা মবয়োগ (-
), গুি (*) ও ভায়গর (/) কািও করয়ি পামর। যারা প্কবল প্রাগ্রাম িং মশখয়ছ, িায়ির রমি আ ার
পরা শ হয়ে
ট প্য, আম বইয়ি প্যসব কাি কয়র প্িখান্ডে, এগুয়লা প্কবল পড়য়ল হয়ব না, প্সই সয়ে
কম্পিউটায়র মনয়ি কয়র প্িখয়ি হয়ব। িাহয়ল প্রাগ্রাম িং প্শখা সহি হয়ব।

আ রা number1 = 10 প্য মলখলা , প্সটট প্বাোে প্য, number1 নায় র ভযামরয়েবয়ল আ রা 10


সিংখযাটট রাখয়ি িান্ডে। এখন আ রা যমি এরপর number1 ভযামরয়েবয়ল অনয মকছু রাখয়ি িাই,
প্সটটও সম্ভব। মনয়ির উিাহরি লক্ষ করয়ল মবষেটট পমরষ্কার হয়ব :

>>> number1 = 10
>>> print(number1)
10
>>> number1 = 15
>>> number1 = 18
>>> print(number1)
18
>>> number1 = "hello"
>>> print(number1)
hello
>>>

আ রা প্িখয়ি পান্ডে প্য, একটট ভযামরয়েবয়ল আ রা মবমভন্ন রক ন্ডিমনস রাখয়ি পামর, িয়ব
সবয়শষট প্যটট রাখয়বা, প্রাগ্রা প্কবল প্সটটই য়ন রাখয়ব। আ রা একটট ভযামরয়েবলয়ক একটট
গ্লায়সর সয়ে িু লনা করয়ি পামর। একটট গ্লায়স আম পামন রাখয়ি পামর। আবার প্সই গ্লায়স িুয
রাখয়ি পামর, শরবি রাখয়ি পামর মকিংবা অনয প্কায়না পানীে। একটট গ্লাস একটট মনমিটষ্ট স য়ে
প্যয়কায়না এক রকার িরল পিাথ যারি ট করয়ব। প্ি মন একটট ভযামরয়েবল একটট প্েটা যারি
করয়ব।

এখন আয়রকটট প্রাগ্রা প্লখার প্িষ্টা কমর।

>>> number1 = "hello"


>>> number2 = 2
>>> result = number1 + number2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Can't convert 'int' object to str implicitly

এখায়ন প্যাগ করার স ে পাইথন বলয়ছ প্য, একটট এরর হয়েয়ছ। এররটট কী? এখন প্িয়খ আ ায়ির
খুব প্বমশ প্বাোর কথা নে। কারি আ রা প্কবল প্রাগ্রাম িং প্শখা শুরু কয়রমছ।

রমিটট ভযামরয়েবয়লই আ রা প্য প্েটা রামখ, িার একটট মনমিটষ্ট যরন রয়েয়ছ। প্য ন 10 হয়ে একটট
পূিসিংখযা
ট (ইিংয়রন্ডিয়ি integer)। “hello” হয়ে একটট মরিং (string)। প্িা ভযামরয়েবয়লর টাইপ
পাইথন মকভায়ব বুয়ে? প্স প্েটা প্িয়খ একটা যারিা কয়র প্নে, আ ায়িরয়ক মনি প্থয়ক বয়ল মিয়ি
হে না। আ রা িাইয়ল প্কায়না ভযামরয়েবয়ল সিংরমক্ষি প্েটার টাইপ প্িখয়ি পামর।

>>> v = 10
>>> type(v)
<class 'int'>
>>> v = "10"
>>> type(v)
<class 'str'>
>>> v = 10.0
>>> type(v)
<class 'float'>

ওপয়র আ রা মিন যরয়নর প্েটা টাইপ প্িখয়ি পান্ডে – int, str ও float। এগুয়লার পূি রূপট হয়ে
integer, string ও float। integer হয়ে প্যয়কায়না পূিসিংখযা,
ট আর float হয়ে প্যয়কায়না বািব
সিংখযা বা িশম ক যুি সিংখযা। আর string শয়ের অথ আ ট ায়ির কায়ছ িমড় (বা রমশ) য়ন হয়লও
এটট আসয়ল একটট প্েটা টাইপ প্যখায়ন এক বা একামযক অক্ষর (সিংখযা, মিহ্ন বা বি)ট থায়ক। মরিংয়ে
আ ায়ির হে মসয়েল প্কায়টশন মিহ্ন বযবহার করয়ি হয়ব (প্য ন : ‘abc’), অথবা েবল প্কায়টশন
মিহ্ন বযবহার করয়ি হয়ব (প্য ন : “abc”)। মসয়েল প্কায়টশন মিয়ে শুরু, মকন্তু েবল প্কায়টশন মিয়ে
প্শষ মকিংবা িার উয়টাটট করা যায়ব না। আবার খামল মরিংও সম্ভব (প্য ন : “” বা ”)। আ রা এখন
মরিংয়ের আয়রা মকছু উিাহরি প্িখয়বা।

>>> s = "100"
>>> print(s)
100
>>> s = "abcd1234-09232<>?323"
>>> print(s)
abcd1234-09232<>?323
>>> s = 'abc 123'
>>> print(s)
abc 123
>>> s = ''
>>> print(s)

>>> s = ""
>>> print(s)

>>>

আ রা যখন প্কায়না গামিমিক অপায়রশন কমর, প্য ন প্যাগ-মবয়োগ-গুি-ভাগ, িখন প্যই িুটট
সিংখযার ওপর গামিমিক অপায়রশন করা হে, িায়িরয়ক একই প্েটা টাইয়পর হয়ি হে, আর না হয়ল
পাইথন মনয়ি প্িষ্টা কয়র িায়িরয়ক একই প্েটা টাইয়প রূপান্তর কয়র িারপয়র গামিমিক
অপায়রশন করয়ি। প্য ন, আ রা যমি একটট ইমন্টিার ও একটট প্লাট ভযামরয়েবল প্যাগ কমর,
িাহয়ল প্যাগফল হয়ব প্লাট। মকন্তু ইমন্টিার ও মরিংয়ের প্যায়গর প্বলায়ি পাইথন মরিংয়ের সয়ে
ইমন্টিার প্যাগ করয়ি পারয়ব না।

>>> a = 1
>>> b = 2.5
>>> c = a + b
>>> print(c)
3.5
>>>
>>> a = 1
>>> b = "2"
>>> c = a + b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>>

এখন আ রা টাম নায়লট আয়রা মকছু প্কাে মলয়খ মকছু গামিমিক অপায়রটয়রর বযবহার প্িয়খ প্নব।
এগুয়লা ুখস্থ করার রয়োিন প্নই। টঠকঠাক িিটা করয়ল এ মনয়িই য়ন থাকয়ব আর য়ন না
থাকয়ল বই বা ইন্টারয়নট প্ঘাঁয়ট প্িয়খ মনয়লও হয়ব।

ভাগ করা -
>>> 5 / 2
2.5
মবয়োগ করা -
>>> 5 - 2
3
গুি করা -
>>> 5 * 2
10
মনয়ির কািটটও ভাগ, িয়ব ভাগফয়লর প্কবল ইমন্টিার অিংশ পাওো যায়ব
>>> 5 // 2
>>> 2
েুলাস মকিংবা ভাগয়শষ -
>>> 5 % 2
1
বগ ট করা -
>>> 5 ** 2
25

এখন আ ায়ির আয়রকটট মবষে প্িয়ন মনয়ি হয়ব। আ রা প্য print() মলয়খ প্কায়নামকছু ন্ডিয়ন
প্িখান্ডে, এখায়ন print() হয়ে একটট ফািংশন (function)। এই ফািংশয়নর প্ভিয়র আ রা যা
পাঠায়বা, ফািংশনটট িা ন্ডিয়ন মরন্ট করয়ব বা প্িখায়ব। এখন ফািংশয়নর প্ভিয়র যা পাঠায়না হে,
িায়ক বয়ল ফািংশয়নর আগুটয় ন্ট (argument)। print() ফািংশনটট মকভায়ব কাি করয়ব, প্সটট মকন্তু
আ ায়ির িানয়ি হয়ব না, পাইথয়নর প্য সফটওেযার প্রাগ্রা টট িালাে, প্সখায়ন ওই ফািংশয়নর
কাি বলা আয়ছ। িাই এয়ক আ রা বলয়ি পামর মবট-ইন (built-in) ফািংশন। print() ফািংশনটট
মকন্তু এক বা একামযক আগুটয় ন্ট মনয়ি পায়র। প্সয়ক্ষয়ত্র আগুটয় ন্টগুয়লায়ক ক া মিহ্ন মিয়ে পৃথক
কয়র মিয়ি হয়ব।

>>> a = 1
>>> b = 1.2
>>> c = "hello"
>>> print(a, b, c)
1 1.2 hello
>>> print(a, b, c, "world")
1 1.2 hello world
>>>
print() ছাড়াও আ রা ইমি য়যয আয়রকটা ফািংশন বযবহার কয়রমছ, প্সটট হয়ে type()। type()
ফািংশনটট আ ায়িরয়ক প্কায়না প্ভমরয়েবয়লর োটা টাইপ বয়ল প্িে। এরক আয়রা মকছু মবট-ইন
ফািংশন রয়েয়ছ, আ রা রয়োিন য়িা বযবহার মশয়খ প্নব।

আ রা যমি বযবহারকামরর কাছ প্থয়ক প্কায়না মকছু ইনপুট মনয়ি িাই, িাহয়ল িার িনয পাইথয়ন
input() নায় একটট ফািংশন রয়েয়ছ। আ রা এটট বযবহার কয়র একটট সহি প্রাগ্রা মলখয়বা।
এিনয মনয়ির প্কােটট হুবহু টাইপ কয়র welcome.py না ক ফাইয়ল প্সভ করয়ি হয়ব।

name = input("What is your name? ")


print("Welcome to Python,", name, "!")

এখন টাম নায়ল


ট python welcome.py মলয়খ এন্টার মক িাপয়ল মনয়ির লাইন মরন্ট হয়ব :

What is your name?

িারপয়র মনয়ির না টাইপ কয়র এন্টার িাপয়ি হয়ব : What is your name? Tamim Shahriar
Subeen।

িাহয়ল মনয়ির য়িা আউটপুট আসয়ব :

Welcome to Python, Tamim Shahriar Subeen !

আ রা এিক্ষি যা মশখলা , প্সগুয়লা মিয়ে এখন আয়রকটট প্রাগ্রা মলখয়বা।

number1 = input("Please type an integer and press enter: ")


number2 = input("Please type another integer and press enter: ")

print("number1 + number2 =", number1+number2)

ওপয়রর প্কাে আ রা arithmetic.py না ক ফাইয়ল প্সভ কয়র রান করয়বা : python


arithmetic.py ক াি মিয়ে।

Please type an integer and press enter: 3


Please type another integer and press enter: 6
number1 + number2 = 36

মকন্তু ফলাফল প্িা আসার কথা 9। িাহয়ল এখায়ন কী হয়ে? input() ফািংশনটট সবস ে মরিং মরটান ট
কয়র। িাই number1 ও number2 এখায়ন মরিং। আর িুটট মরিংয়ক আ রা যমি প্যাগ কমর, িাহয়ল
প্সগুয়লা পাশাপামশ বয়স আয়রকটট নিু ন মরিং তিমর করয়ব। িাই ভযামরয়েবলগুয়লায়ক ইমন্টিায়র
রূপান্তর করয়ি হয়ব। এিনয আ রা int() ফািংশন বযবহার করয়ি পামর। এটটও একটট মবটইন
ফািংশন।
number1 = input("Please type an integer and press enter: ")
number2 = input("Please type another integer and press enter: ")
number1 = int(number1)
number2 = int(number2)
print("number1 + number2 =", number1+number2)

এখন প্রাগ্রা রান করয়ল টঠকঠাক আউটপুট আসয়ব।

অনুশীলনী:

• উপয়রর প্রাগ্রা টট পমরবিটন করয়ি হয়ব প্যন সকল রকায়রর গামিমিক অপায়রশন
প্িখায়না যাে (+, -, *, /, %, //, **)।
• এই অযযাে পড়ার স ে মনিেই য়ন অয়নক রশ্ন প্িয়গয়ছ। প্সগুয়লার উত্তর মনয়ি মনয়ি
খুয়াঁ ি প্বর করার প্িষ্টা করয়ি হয়ব (মবমভন্ন প্রাগ্রা মলয়খ)।
কন্ডিশনাল লন্ডিক
Published by subeen on April 19, 2018
এই অযযায়ে আ রা পমরমিি হয়বা কন্ডিশনাল লন্ডিয়কর সয়ে। এখায়ন কন্ডিশন হয়ে শিট। আর
কন্ডিশনাল লন্ডিয়ক এক বা একামযক শিট থাকয়ি পায়র। এক বা একামযক শিট মনয়ে প্যই শিটটট
গঠন করা হয়ব, িার ফলাফল হয়ব িুই রক – সিয (true) বা ম থযা (false)। মকছু উিাহরি প্িওো
যাক।

যরা যাক, আম যান ন্ডণ্ড প্থয়ক মরকশা িয়ড় মনউ ায়কটট যায়বা। আম মরকশািালকয়ক ভাড়া
ন্ডিজ্ঞাসা করাে মিমন বলয়লন, ভাড়া ৪০ টাকা, একিা । এখন আম মরকশাে ওঠার আয়গ একটট
শিট পূরি করয়ি হয়ব। প্সটট হয়ে, আ ার কায়ছ মক ক পয়ক্ষ ৪০ টাকা আয়ছ? এর উত্তর িুই রক
হয়ি পায়র – হযাাঁ (সিয) মকিংবা না (ম থযা)। যমি সিয হে, িাহয়ল আম মরকশাে উঠয়বা, ম থযা হয়ল
উঠয়বা না।

আবার যরা যাক, আ ার কয়েকটট বই প্কনা রয়োিন এবিং এর িনয আম নীলয়ক্ষয়ি (ঢাকার প্য
এলাকাে অয়নক বইয়ের প্িাকান আয়ছ) মগয়ে বই প্কনার মসিান্ত মনয়েমছ। এখন েলবার
নীলয়ক্ষয়ির ায়কটট বন্ধ থায়ক। িাই আম একটট শিট মিয়ে মসিান্ত প্নয়বা প্য, আিয়ক বই মকনয়ি
যায়বা কী যায়বা না। শিটটট হয়ে, “আিয়ক েলবার”। এটট যমি সিয হে, িাহয়ল আম যায়বা না,
ম থযা হয়ল যায়বা। আবার যরা যাক, নীলয়ক্ষয়ির প্িাকানগুয়লা প্খালা থায়ক সকাল ১০টা প্থয়ক রাি
৮টা পযন্ত।
ট িাহয়ল আ ায়ক অবশযই আয়রকটট শিট পূরি করয়ি হয়ব। “আম রাি ৮টার য়যয
নীলয়ক্ষয়ি প্প ৌঁছয়ি পারয়বা” – এই শিট সিয হয়ল আম যায়বা, ম থযা হয়ল আম যায়বা না। এখন
আ রা প্িখয়ি পান্ডে এখায়ন প্ াট িুইটট শিট আয়ছ –

• আিয়ক েলবার
• আম রাি ৮টার য়যয নীলয়ক্ষয়ি প্প ৌঁছয়ি পারয়বািাহয়ল আম প্যয়কায়নামিন বই প্কনার
কথা মিন্তা করয়ল িার যরয়নর সম্ভাবয ঘটনা আ ায়ক মিন্তা করয়ি হয়ব :

১) আিয়ক েলবার নে এবিং আম রাি ৮টার য়যযা নীলয়ক্ষয়ি প্প ৌঁছায়ি পারয়বা না

২) আিয়ক েলবার নে এবিং আম রাি ৮টার য়যযা নীলয়ক্ষয়ি প্প ৌঁছায়ি পারয়বা

৩) আিয়ক েলবার এবিং আম রাি ৮টার য়যযা নীলয়ক্ষয়ি প্প ৌঁছায়ি পারয়বা না

৪) আিয়ক েলবার এবিং আম রাি ৮টার য়যযা নীলয়ক্ষয়ি প্প ৌঁছায়ি পারয়বা
ওপয়রর ঘটনাগুয়লার য়যয প্কবল মিিীে ঘটনায়িই আম বই মকনয়ি নীলয়ক্ষি যাওোর মসিান্ত
প্নব। অথাৎ
ট “আিয়ক েলবার” শিটটট ম থযা ও “আম রাি ৮টার য়যয নীলয়ক্ষয়ি প্প ৌঁছয়ি
পারয়বা” শিটটট সিয হয়লই প্কবল আম যায়বা।

এখন একটট িযাম মির উিাহরয়ি আসা যাক। আ রা িামন, একটট িিু ভূ য়ট ির সবগুয়লা প্কাি
রমিটট যমি এক স য়কাি হে, িাহয়ল প্সটট আেিয়ক্ষত্র বা বগয়ক্ষত্র
ট হয়ব। যমি সবগুয়লা বাহু স ান
হে, িাহয়ল বগয়ক্ষত্র
ট আর যমি মবপরীি বাহুগুয়লা স ান হে (প্যয়হিু রমিটট প্কাি এক স য়কাি,
িাই সবগুয়লা বাহু স ান না হয়ল মবপরীি বাহুগুয়লা অবশযই স ান হয়ব), িাহয়ল আেিয়ক্ষত্র।

িাহয়ল একটট িিু ভূ ি


ট বগয়ক্ষত্র
ট কী না, প্সটট মনভটর কয়র িুইটট শয়িটর ওপর :

• সবগুয়লা প্কাি রমিটট এক স য়কাি (90 মেগ্রী)


• সবগুয়লা বাহু স ান তিয়ঘযরওপয়রর
ট িুইটট শিটই সিয হয়ল িিু ভূ ি
ট টট হয়ব একটট বগয়ক্ষত্র,

রথ টট সিয ও মিিীেটট ম থযা হয়ল িিু ভূ ি
ট টট হয়ব আেিয়ক্ষত্র।

এখন আ রা ট্রামফক মসগনযায়লর একটট উিাহরি মিই। মসগনযায়ল লাল, হলুি মকিংবা সবুি বামি
জ্বয়ল। লাল বা হলুি বামি জ্বলয়ল গামড় থা য়ব, সবুি বামি জ্বলয়ল গামড় িলয়ব। িাহয়ল এখায়ন
শিটটট প্ক ন হয়ব? শিটটট হয়ি পায়র “সবুি বামি জ্বালায়না আয়ছ”। এটট সিয মকিংবা ম থযা হয়ি
পায়র। সিয হয়ল গামড় িলয়ব, ম থযা হয়ল গামড় থা য়ব। আবার শিটটট িাইয়ল আ রা িুইটট শিট
বযবহার কয়রও মলখয়ি পারিা । “লাল বামি জ্বালায়না আয়ছ”, “হলুি বামি জ্বালায়না আয়ছ” – এই
িুইটট শয়িটর প্যয়কায়না একটট সিয হয়লই আ রা গামড় থা ায়বা, আর িুইটট শিটই যমি ম থযা হে,
িাহয়ল গামড় িলয়ব।

এখন কম্পিউটার প্রাগ্রাম িংয়ে শিট বা কন্ডিশনাল লন্ডিক মনয়ে কাি করয়ি হয়ল মকছু প্ মলক
মবষে আ ায়ির িানয়ি হয়ব। রথ টট ইমি য়যযই আ রা প্িয়ন মগয়েমছ প্য এক বা একামযক শিট
ম য়ল আ রা প্যই কন্ডিশনাল লন্ডিক তিমর করয়বা, িার িূ ড়ান্ত ফলাফল িুই রকয় র হয়ি পায়র:
সিয অথবা ম থযা।

মিিীে মবষে হয়ে, একটট শয়িটর উয়টা শিট তিমর করার পিমি, যায়ক বয়ল NOT (নট)। প্য ন
“সবুি বামি জ্বালায়না আয়ছ” শিটটট আ রা উয়ট প্ফলয়ি পামর এভায়ব : “সবুি বামি জ্বালায়না
প্নই”, এবিং এয়ক এভায়বও প্লখা যাে : NOT সবুি বামি জ্বালায়না আয়ছ। “সবুি বামি জ্বালায়না
আয়ছ” যমি সিয হে, িাহয়ল “NOT সবুি বামি জ্বালায়না আয়ছ” হয়ব ম থযা। আর “সবুি বামি
জ্বালায়না আয়ছ” যমি ম থযা হে, িাহয়ল “NOT সবুি বামি জ্বালায়না আয়ছ” হয়ব সিয। প্ি মন
“আিয়ক েলবার” শিটটট সিয হয়ল “NOT আিয়ক েলবার” হয়ব ম থযা। আর “আিয়ক
েলবার” শিটটট ম থযা হয়ল “NOT আিয়ক েলবার” হয়ব সিয। িাহয়ল আ রা বলয়ি পামর :
NOT true হয়ে false আর NOT false হয়ে true।

আ রা যখন একামযক শিট মনয়ে কাি করয়বা, িখন িুইটটই সিয বা িুইটটর প্যয়কায়না একটট সিয,
এ ন মিন্তাভাবনা করার রয়োিন হে। িখন আ ায়ির কায়ি লাগয়ব AND (অযাি) এবিং OR
(অর)। AND-এর প্ক্ষয়ত্র যমি িার িুইপায়শর (বা ও োনপায়শর) শিট সিয হে, িাহয়ল পুয়রা শিটটট
সিয, এর অনযথা হয়ল (প্যয়কায়না একটট ম থযা মকিংবা িুটটই ম থযা) পুয়রা শিটটট ম থযা। প্য ন :
প্কায়না িিু ভূ ি
ট বগয়ক্ষত্র
ট হওোর শিট হয়ে : সবগুয়লা প্কাি রমিটট এক স য়কাি (90 মেগ্রী) AND

সবগুয়লা বাহ স ান তিয়ঘযর। ট অথাৎ,
ট AND এর বা মিয়কর ও োনমিয়কর িুইটট শিটই সিয হয়ি
হয়ব।

OR-এর প্ক্ষয়ত্র, িার িুইপায়শর প্যয়কায়না একটট সিয হয়লই পুয়রা শিটটট সিয। প্কবল িুইটটই যমি
ম থযা হে, িাহয়ল শিটটট ম থযা। প্য ন: ট্রামফক লাইয়টর প্ক্ষয়ত্র, লাল বামি জ্বলয়ছ OR হলুি বামি
জ্বলয়ছ – এই শিটটট সিয হয়ব যমি লাল বামি জ্বালায়না থায়ক, মকিংবা হলুি বামি জ্বালায়না থায়ক,
মকিংবা িুটট বামিই জ্বালায়না থায়ক। লাল ও হলুি িুটট বামিই যমি জ্বালায়না না থায়ক, িাহয়ল শিটটট
ম থযা।

ওপয়রর আয়লািনার সারসিংয়ক্ষপ আ রা তিমর করয়ি পামর মনয়ির প্টমবল বযবহার কয়র।

এখন আ রা প্িখয়বা, পাইথয়ন মবমভন্ন কন্ডিশনাল লন্ডিয়কর বযবহার। িুইটট ন্ডিমনস স ান কী না,
িা পরীক্ষা করার িনয আ রা == অপায়রটর বযবহার করয়ি পামর। প্ছাট-বড় পরীক্ষার িনয আয়ছ
>, <, >=, <=। আবার অস ান প্বাোয়নর িনয আয়ছ != মিহ্ন। প্কানটা কী কাি কয়র, সহয়ি
প্বাোর িনয আ রা প্কাে মলয়খ প্িখয়ি পামর :

>>> 2 == 3
False
>>> 3 == 3
True
>>> 2 > 3
False
>>> 2 < 3
True
>>> 2 != 3
True
>>> 3 != 3
False
>>> 2 >= 3
False
>>> 2 <= 3
True
>>>
ওপয়র আম print() ফািংশন বযবহার কমর মন, কারি আম যখন পাইথন ইন্টারয়রটার িালু করয়বা,
প্সখায়ন প্কায়না প্স্টটয় ন্ট িালায়ল িার ফলাফল পয়রর লাইয়ন আপনাআপমন প্িখাে। আর আম
প্য ন সরাসমর মবমভন্ন সিংখযার িু লনা কয়রমছ, প্সগুয়লা ভযামরয়েবয়ল প্রয়খ ভযামরয়েবলগুয়লার
য়যযও এই িু লনা করার কািটট করা প্যি।

আবার িুটট মরিং স ান কী না, প্সটটও আ রা পরীক্ষা করয়ি পামর :

>>> "Bangladesh" == "Bangladesh"


True
>>> "Bangladesh" == "bangladesh"
False

এখন আ রা পমরমিি হয়বা মলস্ট (list)-এর সয়ে। আ রা যখন একামযক প্েটা একসয়ে রাখয়ি
িাই, িখন আ রা মলস্ট বযবহার করয়ি পামর। প্য ন 1 প্থয়ক 10 পযন্ত ট সিংখযাগুয়লা একসয়ে
রাখয়ি িাইয়ল আ রা একটট মলয়স্ট রাখয়বা এভায়ব : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]। মলস্ট শুরু ও প্শষ
করয়ি হে স্কোর ব্র্যায়কট (অয়নক স ে এয়ক থােট ব্র্যায়কটও বলা হে) মিয়ে। আর স্কোর
ব্র্যায়কয়টর য়যয রমিটট উপািান রাখা হে এবিং প্সগুয়লা ক া মিহ্ন (,) মিয়ে পৃথক করা হে।

>>> number_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


>>> print(number_list)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

আ রা িাইয়ল মলয়স্টর রমিটট উপািান আলািাভায়ব প্পয়ি পামর। এিনয আ ায়িরয়ক মলয়স্টর
না মলয়খ িারপর স্কোর ব্র্যায়কয়টর প্ভিয়র ওই উপািায়নর ক্রম ক সিংখযা মলখয়ি হয়ব। এই
ক্রম ক সিংখযায়ক প্রাগ্রাম িংয়ের ভাষাে বয়ল ইনয়েক্স (index) এবিং এটট শুরু হে 0 প্থয়ক (প্কায়না
প্কায়না প্রাগ্রাম িং ভাষাে 1 প্থয়কও শুরু হে)। এখন িাহয়ল মকছু উিাহরি প্িয়খ মনই :

>>> number_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


>>> print(number_list)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>
>>> print(number_list[0])
1
>>> print(number_list[1])
2
>>> print(number_list[9])
10
>>> print(number_list[10])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>>

একটট মবষে প্খোল করয়ি হয়ব প্য, আ ায়ির মলয়স্ট যমি িশটট উপািান থায়ক, িাহয়ল ইনয়েক্স
থাকয়ব 0 প্থয়ক 9। িাই আ রা যখন number_list[10] মরন্ট করার প্িষ্টা কয়রমছ, িখন একটট এরর
মিয়ে আ ায়িরয়ক িামনয়ে প্িওো হয়েয়ছ প্য মলয়স্টর ইনয়েক্স প্রয়ির বাইয়র। একটট মলয়স্ট কিটট
উপািান আয়ছ, প্সটট িানার িনয আ রা len() ফািংশন বযবহার করয়ি পামর। মনয়ি আম সাকটভুি
প্িশগুয়লার একটট িামলকা তিমর করলা এবিং প্সখান প্থয়কও এও প্বর করলা প্য প্ াট কেটট
প্িশ সায়কটর অন্তগিট :

>>> saarc = ["Bangladesh", "Afghanistan", "Bhutan", "Nepal", "India",


"Pakistan", "Sri Lanka"]
>>> print(saarc)
['Bangladesh', 'Afghanistan', 'Bhutan', 'Nepal', 'India', 'Pakistan', 'Sri
Lanka']
>>> print(saarc[0])
Bangladesh
>>> print("Number of countries in SAARC:", len(saarc))
Number of countries in SAARC: 7
>>>

এখন প্কায়না প্িশ saarc এর সিসয, এটট সিয না ম থযা আ রা সহয়িই যািাই করয়ি পারয়বা।

>>> "Bangladesh" in saarc


True
>>> "China" in saarc
False
>>> "China" not in saarc
True
>>> "India" not in saarc
False
>>>

িাহয়ল আ রা প্িখলা , প্কায়না উপািান একটট মলয়স্ট আয়ছ কী প্নই, প্সটট খুব সহয়িই যািাই
করা যাে। ওপয়রর উিাহরি না বুেয়ল ঠািা াথাে য়নায়যাগ মিয়ে প্বাোর প্িষ্টা করয়ি হয়ব, এটট
না বুয়ে সা য়ন আগায়না টঠক হয়ব না।

if লস্টিদিন্ট

আ রা প্িা মশখলা মকভায়ব মবমভন্ন শিট রয়োগ করয়ি হে, মকভায়ব একামযক শিট একসয়ে
রয়োগ করয়ি হে। এখন প্কাে প্লখার পালা। আ রা যমি িাই প্য, প্কায়না শিট সিয হয়ল একটট
কাি হয়ব, িাহয়ল আ ায়িরয়ক if বযবহার করয়ি হয়ব। if বযবহার করার মনে প্বাোর িনয আ রা
মনয়ির প্কাে মলখয়বা এবিং saarc.py না ক ফাইয়ল প্সভ করয়বা।

saarc = ["Bangladesh", "Afghanistan", "Bhutan", "Nepal", "India", "Pakistan",


"Sri Lanka"]

country = input("Enter the name of the country: ")


if country in saarc:
print(country, "is a member of SAARC")

print("Program terminated")
িাহয়ল আ রা প্িখয়ি পান্ডে, if এর পয়র শিট মলখয়ি হে, িারপয়র একটট প্কালন মিহ্ন বযবহার
করয়ি হে। আর প্সই শিট সিয হয়ল কী কাি করা হয়ব, প্সটট মলখয়ি হে if এর মনয়ি একটট tab
(কীয়বায়েটর বা মিয়ক বাটনটট পাওো যায়ব) মিয়ে। এই কািটায়ক বয়ল ইনয়েনয়টশন করা।
টঠকঠাক ইনয়েনয়টশন করা না হয়ল পাইথন বুেয়ি পায়র না প্য কী কাি করয়ি হয়ব। ওপয়রর
প্রাগ্রায় if-এর পয়র শিট সিয হয়ল print(country, “is a member of SAARC”) প্স্টটয় ন্টটট কাি
করয়ব। আর পয়রর মরয়ন্টর সয়ে if-এর প্কায়না সিকট প্নই। এটট if ব্লয়কর বাইয়র। এখন আ রা
প্রাগ্রা রান কয়র প্িমখ :

$ python saarc.py
Enter the name of the country: Bangladesh
Bangladesh is a member of SAARC
Program terminated
$ python saarc.py
Enter the name of the country: Japan
Program terminated

Bangladesh-এর প্ক্ষয়ত্র মরন্ট করয়লা প্য Bangladesh সায়কটর সিসয মকন্তু Japan-এর প্বলাে প্সটট
করল না। কারি শিট ম থযা। আর উভে প্ক্ষয়ত্রই Program terminated মরন্ট করয়লা, কারি এর
সয়ে if-এর সিকট প্নই, এটট if ব্লয়কর বাইয়র।

আ ায়ির প্কায়ে if-এর প্ভিয়র ইনয়েনয়টশয়নর কািটট না করয়ল কী হয়িা? িখন আ রা এরক
এরর প্পিা : IndentationError: expected an indented block। এই পরীক্ষাটট করার কাি আম
পাঠয়কর ওপর প্ছয়ড় মিলা ।

এখন, আ রা Japan-এর প্বলাে প্ি ন মকছু মরন্ট করলা না। মকন্তু আ রা যমি বয়ল মিিা প্য
Japan সায়কটর সিসয নে, িাহয়ল বযাপারটট একটু ভায়লা হয়িা। এিনয আ রা বযবহার করয়ি পামর
else। if-এর শিট ম থযা হয়ল else ব্লয়কর প্ভিয়র যা করয়ি বলা হয়ব, প্রাগ্রা িা-ই করয়ব।

saarc = ["Bangladesh", "Afghanistan", "Bhutan", "Nepal", "India", "Pakistan",


"Sri Lanka"]

country = input("Enter the name of the country: ")


if country in saarc:
print(country, "is a member of SAARC")
else:
print(country, "is not a member of SAARC")

print("Program terminated")

এখন আ রা প্রাগ্রা রান করয়ল এরক আউটপুট পায়বা :

$ python saarc.py
Enter the name of the country: Japan
Japan is not a member of SAARC
Program terminated
প্কায়না প্রাগ্রায় যমি এরক থায়ক প্য এয়কর পর এক মবমভন্ন রক শিট পরীক্ষা করয়ি হয়ব,
িারিনয আ রা রথ if-এর পয়র বাকী শিটগুয়লা প্লখার িনয elif বযবহার করয়বা। আ রা এখন
একটট প্রাগ্রা মলখয়বা প্যটট পরীক্ষাে রাপ্ত নম্বর প্থয়ক প্গ্রে প্বর করয়ব, আর প্সখায়ন elif এর
বযবহার প্িখয়বা।

marks = input("Please enter your marks: ")


marks = int(marks)

if marks >= 80:


grade = "A+"
elif marks >= 70:
grade = "A"
elif marks >= 60:
grade = "A-"
elif marks >= 50:
grade = "B"
else:
grade = "F"

print("Your grade is", grade)

এখন প্রাগ্রা টট grade_calculator.py না ক ফাইয়ল প্সভ কয়র রান করয়ি হয়ব। প্রাগ্রা টট
ভায়লাভায়ব লক্ষ করয়লই if, elif ও else-এর বযবহার বুেয়ি পারা যায়ব। যখনই একটট শিট সিয হয়ব,
িখন মকন্তু আর বাকী elif বা else-এর শিট পরীক্ষা হয়ব না।

অনুশীেনী:

• বযবহারকারীর কাছ প্থয়ক একটট সিংখযা ইনপুট মনয়ি হয়ব, আর প্সটট যনাত্মক না ঋিাত্মক,
িা প্বর করয়ি হয়ব।
• আ রা িামন প্যসব সিংখযা িুই মিয়ে মনিঃয়শয়ষ মবভািয, িায়িরয়ক বয়ল প্িাড় সিংখযা, আর
িা না হয়ল মবয়িাড় সিংখযা। একটট সিংখযা প্িাড় না মবয়িাড়, িা প্বর করার প্রাগ্রা মলখয়ি
হয়ব। এরিনয েুলাস অপায়রটর (%) বযবহার করয়ি হয়ব।

মেপ ইয়াি (Leap Year)

এখন আ রা প্কায়না বছর মলপ ইোর (বািংলাে বয়ল অমযবষ)ট মক না প্সটট প্বর করার একটট প্রাগ্রা
মলখয়বা। প্কায়না বছর মলপ ইোর হয়ল প্সই বছয়র প্ফব‍্রুোমর াস হে 29 মিয়ন, আর মলপ ইোর না
হয়ল হে 28 মিয়ন। প্কায়না সাল 4 মিয়ে মনিঃয়শয়ষ মবভািয হয়ল প্সটট মলপ ইোর হে, িয়ব একটট
বযমিক্র আয়ছ। প্সই সাল যমি আবার 100 মিয়ে মনিঃয়শষ মবভািয হে, িাহয়ল িায়ক 400 মিয়েও
মনিঃয়শয়ষ মবভািয হয়ি হয়ব, নইয়ল প্সটট মলপ ইোর হয়ব না। িাহয়ল আ রা লন্ডিক সািায়ি পামর
এভায়ব :

if year % 4 != 0:
print("No")
else:
if year % 100 == 0:
if year % 400 == 0:
print("Yes")
else:
print("No")
else:
print("Yes")

আবার আ রা িাইয়ল মনয়ির য়িা কয়রও লন্ডিক সািায়ি পামর।

if year % 400 == 0:
print("Yes")
elif year % 100 == 0:
print("No")
elif year % 4 == 0:
print("Yes")
else:
print("No")

আ রা এখায়ন একটু বুন্ডি খাটটয়েমছ। কারি year যমি 400 মিয়ে মনিঃয়শয়ষ মবভািয হে, িাহয়ল
প্সটট অবশযই মলপ ইোর। আর িা না হয়ল এটট যমি 100 মিয়ে মনিঃয়শয়ষ মবভািয হে, িয়ব এটট মলপ
ইোর নে। কারি এটট 100 মিয়ে মনিঃয়শষ মবভািয মকন্তু 400 মিয়ে নে (400 মিয়ে মনিঃয়শয়ষ মবভািয
যমি হয়িা িাহয়ল প্িা রথ if ব্লয়কই ঢুয়ক প্যি, এখায়ন আসয়িা না)। আর যমি 100 মিয়ে মবভািয
না হে, িখন আ রা পরীক্ষা করমছ প্য year 4 মিয়ে মনিঃয়শয়ষ মবভািয কী না। যমি হে, িাহয়ল এটট
অবশযই মলপ ইোর (কারি এটট 100 মিয়ে মবভািয নে, প্সটট ইমি য়যযই পরীমক্ষি)। আর যমি 4
মিয়ে মনিঃয়শয়ষ মবভািয না হে, িাহয়ল প্িা আর ওই বছর মলপ ইোর নে।

এখন এই মলপইোয়রর প্রাগ্রা আ রা আয়রকভায়ব করয়বা।

if year % 100 != 0 and year % 4 == 0:


print("Yes")
elif year % 100 == 0 and year % 400 == 0:
print("Yes")
else:
print("No")

আ রা এখায়ন একামযক শিট একসয়ে রয়োগ করমছ and বযবহার কয়র। প্রাগ্রা টটর মবিামরি
বযাখযাে আর প্গলা না। বুয়ে প্নওোর িামেত্ব পাঠয়কর ওপরই প্ছয়ড় মিলা । আশা কমর, একটু
মিন্তা করয়ল এবিং এখন পযন্ত
ট বই টঠক য়িা পড়য়ল প্রাগ্রা টট বুেয়ি স সযা হয়ব না।

অনুশীেনী: উপয়র প্িখায়না মিনটট প্রাগ্রা ই এ নভায়ব মলখয়ি হয়ব প্যন বযবহারকারীর কাছ
প্থয়ক year ইনপুট প্নওো হে এবিং মলপ ইোর হয়ল আউটপুয়ট ওই সায়লর কথা উয়ল্লখ কয়র প্সটট
মলপ ইোর কী না, িা মরন্ট করয়ি হয়ব।
টাটট য়লর সয়ে পমরিে
Published by subeen on April 18, 2018
এখন আ রা পমরমিি হয়বা একটট িার ন্ডিমনয়সর সয়ে। িার না হয়ে turtle। পাইথয়ন এই
নায় একটট মেউল আয়ছ, প্যটট পাইথয়নর সয়ে ইনস্টল করা থায়ক। কায়রা কম্পিউটার turtle
ইনস্টল করা না থাকয়ল প্সটট কয়র মনয়ি হয়ব (পমরমশষ্ট অিংয়শ turtle ইনস্টল করার পিমি প্িওো
আয়ছ)। আ রা মনয়ির প্রাগ্রা মলয়খ পরীক্ষা কয়র প্িখয়ি পামর প্য, এই মেউল ইনস্টল করা আয়ছ
কী প্নই। আর turtle শয়ের অথ কেপ,
ট মকন্তু বইয়ি আ রা বািংলাে টাটট ল নায় ই মিনয়বা, কারি
এটট পাইথয়নর একটট মেউল।

import turtle

turtle.forward(100)

turtle.exitonclick()

যমি এরক এরর প্িে প্য, ImportError: No module named ‘turtle’ িাহয়ল বুেয়ি হয়ব প্য, এটট
ইনস্টল করা প্নই। আর যমি প্কায়না এরর না প্িে, িাহয়ল মনয়ির য়িা ছমব আসয়ব :
এখন আসা যাক, আ রা মিনটট লাইয়ন কী মলখলা প্সই আয়লািনাে। রথ লাইয়ন মলয়খমছ
import turtle। এর াযযয় আ রা টাটট ল মনয়ে কাি করার িনয প্যই মেউল রয়েয়ছ প্সটট
আ ায়ির প্কায়ে মনয়ে আসমছ। পাইথয়ন মবমভন্ন কাি করার িনয হািার হািার মেউল রয়েয়ছ।
আর প্সসব মেউয়ল মবমভন্ন কাি ইমি য়যয কয়র প্িওো আয়ছ। আ রা িাইয়ল প্সসব মেউল
বযবহার করয়ি পামর, মকন্তু িার িনয আ ায়ির প্সটট import করয়ি হয়ব। মিিীে লাইয়ন মলয়খমছ
turtle.forward(100)। এই ক াি বা প্স্টটয় ন্ট মিয়ে আ রা টাটট লয়ক 100 মপয়ক্সল সা য়ন প্যয়ি
বলমছ। প্স কীভায়ব যায়ব, প্সটট বলা আয়ছ টাটট ল মেউয়লর প্ভিয়র, আ ায়ির িাই প্সটট মনয়ে মিন্তা
করয়ি হয়ব না। আর হযাাঁ, মপয়ক্সল ায়ন ন্ডিয়নর ক্ষুদ্রি একক, যায়ক আ রা প্বাোর সুমবযায়থ ট
একটট মবন্দু যয়র মনয়ি পামর। িৃিীে লাইয়ন আম মলয়খমছ turtle.exitonclick() যা মিয়ে আম মনয়িট শ
মিন্ডে প্য, প্যই আউটপুট উইয়িাটট আসয়ব, প্সখায়ন প্যয়কায়না িােগাে মক্লক করয়ল প্রাগ্রা বন্ধ
হয়ে যায়ব।

এবায়র আ রা প্িখয়বা, টাটট ল মিয়ে মকভায়ব আ রা একটট বগয়ক্ষত্র


ট তিমর করয়ি পামর। রমি বাহুর
তিঘযট যমি 100 মপয়ক্সল হে, িাহয়ল মনয়ির যাপগুয়লা অনুসরি করয়ি হয়ব :

1. রথয় 100 মপয়ক্সল সা য়ন প্যয়ি হয়ব।


2. 90 মেগ্রী বায় ঘুরয়ি হয়ব।
3. 100 মপয়ক্সল সা য়ন প্যয়ি হয়ব।
4. 90 মেগ্রী বায় ঘুরয়ি হয়ব।
5. 100 মপয়ক্সল সা য়ন প্যয়ি হয়ব।
6. 90 মেগ্রী বায় ঘুরয়ি হয়ব।
7. 100 মপয়ক্সল সা য়ন প্যয়ি হয়ব।
8. 90 মেগ্রী বায় ঘুরয়ি হয়ব।

িাহয়ল আ রা এবার প্কাে মলয়খ প্িমখ।

import turtle

turtle.shape("turtle")

turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)

turtle.exitonclick()

প্রাগ্রা টট প্সভ কয়র রান করয়ল মনয়ির য়িা আউটপুট আসয়ব –


এখায়ন মকন্তু বগয়ক্ষত্র
ট সিূি হয়লা
ট না। আয়রা িুই লাইন (ক পয়ক্ষ এক লাইন) প্কাে মলখয়ি হয়ব।
প্সই কািটট আম পাঠয়কর িনয প্রয়খ মিলা । আয়রকটট বযাপার প্খোল করয়ি হয়ব প্য, এই
প্রাগ্রায় মকন্তু টাটট ল প্িখয়ি টাটট য়লর য়িাই প্িখায়ে। কারি হয়ে প্রাগ্রায় র মিিীে লাইয়ন প্সটট
করয়ি বলা হয়েয়ছ।

আ রা িাইয়ল টাটট য়লর গমি মনেন্ত্রি করয়ি পামর, এর িনয আ ায়িরয়ক speed() ফািংশন বযবহার
করয়ি হয়ব। এর প্ভিয়র আগুটয় ন্ট মহয়সয়ব 0 প্থয়ক 10 পাঠায়না যায়ব। 1 হয়ে সবয়িয়ে
যীরগমির। যমি এর ান বাড়াই, িাহয়ল গমি বাড়য়ি থাকয়ব, িার ায়ন 10 অয়নক প্বমশ দ্রুিগমির।
আর 0 হয়ে সবয়িয়ে দ্রুিগমির। আ রা যমি প্কায়না আগুটয় ন্ট না পাঠাই, িাহয়ল গমির মেফট
ান 0 হে, এবিং িখন সবয়িয়ে টাটট য়লর গমি হে সবয়িয়ে দ্রুি। বাকীগুয়লা মনয়ি মনয়ি পরীক্ষা
কয়র প্বর করয়ি হয়ব। আয়গর প্রাগ্রায় turtle.shape(“turtle”) লাইয়নর পয়রর লাইয়ন এভায়ব
মলখয়ি হয়ব : turtle.speed(2)।

অনুশীলনী ঃিঃ টাটট ল বযবহার কয়র স বাহু ন্ডত্রভূ ি তিমর করয়ি হয়ব, অথাৎ
ট প্যই ন্ডত্রভূ য়ির মিনটট
ু ট স ান। আর প্ছাটয়ির পাঠযবইয়ি মকন্তু বলা আয়ছ প্য স বাহু ন্ডত্রভূ য়ির প্ভিয়র
বাহর তিঘযই
রমিটট প্কাি হয়ব 60 মেগ্রী। আউটপুট আসয়ব মনয়ির ছমবর য়িা –

ওপয়রর প্রাগ্রা টট মনয়ি করয়ি না পারয়ল বুেয়ি হয়ব প্য গমিয়ির প্ মলক জ্ঞায়ন অয়নক ঘাটমি
রয়েয়ছ এবিং িখন স্কুয়লর গমিি বই মনয়ে বয়স ভায়লাভায়ব পড়য়ি হয়ব। গমিয়ির প্বমসক িুবলট বয়ল
কান্নাকাটট করা িলয়ব না, বুয়ে বুয়ে বই পড়য়লই প্বমসক ভায়লা হয়ে যায়ব।
লুপ – একই কাি অয়নকবার
Published by subeen on April 17, 2018

আ ায়ির অয়নক স েই একই কাি একামযকবার করয়ি হে। যি প্বমশ বার করয়ি হে, আ ায়ির
িি প্বমশ পমরশ্র হে, িি প্বমশ স ে লায়গ। িাই আ রা একই কাি বারবার করয়ি পছন্দ কমর
না। এখন আ রা যমি কম্পিউটায়র প্রাগ্রা মলয়খ কম্পিউটার মিয়ে প্কায়না কাি করায়ি িাই,
িাহয়ল প্িা আ ায়ির মবমভন্ন প্স্টটয় ন্ট বা ক াি প্িওো িরকার হে, িাই না? প্য ন প্কায়না মকছু
ন্ডিয়ন প্িখায়ি িাইয়ল print() ফািংশন মলখয়ি হে। এখন আ রা যমি িশবার প্কায়না ন্ডিমনস ন্ডিয়ন
প্িখায়ি িাই, িাহয়ল আ ায়ক কী িশবার print() ফািংশন মিয়ি হয়ব? আপািি আ ায়ির উত্তর
হয়ে হযাাঁ। এখন, যমি একশ মকিংবা এক হািার বার প্সই কাি করয়ি িাই, িখন?

প্রাগ্রাম িংয়ে একটট ন্ডিমনস আয়ছ যার না লুপ (loop)। এই লুয়পর সাহায়যয আ রা একই কাি
বারবার করয়ি পামর। প্য ন আম যমি িশবার ন্ডিয়ন প্িখায়ি িাই প্য I want to be a great
programmer, িখন আ রা এভায়ব প্রাগ্রা মলখয়বা :

for i in range(10):
print("I want to be a great programmer.")

এখায়ন আম range() এর প্ভিয়র যি সিংখযা মলখয়বা, for এর প্ভিয়রর কািটট িিবার হয়ব।
ওপয়রর প্রাগ্রা টট রান করয়লই প্সটট বুেয়ি পারা যায়ব। এখন প্কউ যমি বয়ল, I love Bangladesh
কথাটট 100 বার মরন্ট করয়ি হয়ব, িাহয়ল কীভায়ব প্রাগ্রা মলখয়ি হয়ব প্সটট মনিেই বয়ল মিয়ি
হয়ব না?

আম যখন এভায়ব for এর প্ভিয়র i in range(n) মলখয়বা, িখন for-এর প্ভিয়রর প্যই ব্লক, প্সখায়ন
প্যসব কাি করয়ি বলা হয়ব, কম্পিউটার প্সটট n সিংখযকবার করয়ব। এখায়ন i ভযামরয়েবলটট
বযবহার করার কারি হয়ে i-এর ান 0 প্থয়ক শুরু কয়র এক এক কয়র বাড়য়ব এবিং সয়বাচ্চ ট ান
হয়ব n-1। একটট প্রাগ্রা মলয়খ প্সটট যািাই কয়র মনই :

>>> for i in range(5):


... print(i)
...
0
1
2
3
4

এখন আ রা আয়গর অযযায়ে করা বগয়ক্ষত্র


ট আাঁকার প্রাগ্রায় প্ফরি যাই। যমিও প্সই প্রাগ্রা টট
অসিূি মছল,
ট প্সটট টঠকভায়ব করয়ি পারয়ল প্রাগ্রা টট হয়ব এ ন :
import turtle

turtle.shape("turtle")
turtle.speed(1)

turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)

turtle.exitonclick()

এখন আ রা প্রাগ্রায় র প্কাে একটু য়নায়যাগ মিয়ে প্িখয়ল বুেয়ি পারয়বা প্য, এখায়ন মনয়ির
িুইটট কাি িারবার করা হয়ে :

turtle.forward(100)

turtle.left(90)

িাহয়ল আ রা যমি এ নভায়ব টাটট লয়ক মনয়িট শ মিই প্য, মনয়ির কািগুয়লা িারবার করয়ব :

• 100 ঘর সা য়ন যাও।
• 90 মেগ্রী বায় ঘুর।িাহয়লও মকন্তু বগয়ক্ষত্র
ট তিমর হয়ে যাওোর কথা। আ রা প্সটট প্রাগ্রা মলয়খ
প্িমখ।

import turtle

turtle.shape("turtle")
turtle.speed(1)

for i in range(4):
turtle.forward(100)
turtle.left(90)

turtle.exitonclick()

ওপয়রর প্রাগ্রা টট িালায়ল আ রা একটট বগয়ক্ষত্র


ট প্িখয়ি পায়বা। এখন প্কান কািগুয়লা লুয়পর
প্ভিয়র করয়ি হয়ব, প্সটট পাইথন বুেয়ব কীভায়ব? লুয়পর প্ভিয়রর সব কাি লুপ প্যখায়ন শুরু
হয়েয়ছ, িার এক টযাব পয়র মিয়ি হয়ব। if ব্লয়কর প্ভিয়র আ রা প্যরক কয়রমছলা আর কী। এই
মবষেটট বুেয়ি স সযা হয়ল পমরমিি কায়রা কাছ প্থয়ক বুয়ে প্নওোই ভায়লা। িারপরও বইয়ের
পমরমশষ্ট অিংয়শ ইনয়েনয়টশন অযযায়ে মবষেটট আম আয়রকটু প্বাোয়নার প্িষ্টা কয়রমছ।
এখন আ রা একটট প্ছাট্ট প্রাগ্রা মলখয়বা, যার কাি হয়ব, পঞ্চাশটট 1 প্যাগ করা। প্যাগফল কি
হয়ব? আ রা িট‍্ কয়র বয়ল মিয়ি পামর প্য, পঞ্চাশটট 1-এর প্যাগফল হয়ব 50। এখন প্রাগ্রা মলয়খ
প্সটট করয়বা। আ ায়ির মকন্তু পঞ্চাশবার প্যাগ করার প্স্টটয় ন্ট মলখয়ি হয়ব না, কারি ইমি য়যয
আ রা লুপ মশয়খ প্ফয়লমছ। প্যাগফল রাখার িনয আম result নায় একটট ভযামরয়েবল বযবহার
করয়বা আর লুয়পর িনয i। আ রা িাইয়ল ভযামরয়েবয়লর অনয না ও মিয়ি পামর।

>>> result = 0
>>> for i in range(50):
... result = result + 1
...
>>> print(result)
50
>>>

result = result + 1 প্িয়খ একটু অি‍্ভুি লাগয়ি পায়র। আসয়ল এখায়ন রথয় োনপয়ক্ষর বা =
মিয়হ্নর োন মিয়কর কাি আয়গ হয়ব, ায়ন result প্ভমরয়েবয়লর সয়ে 1 প্যাগ হয়ব, িারপয়র প্সই
ানটট আবার result প্ভমরয়েবয়লই রাখা হয়ব। এখন সবার কায়ছ একটট রশ্ন। রথয় result = 0
প্কন প্লখা হয়লা? উত্তর মিন্তা কয়র খুয়াঁ ি প্বর করয়ি হয়ব। না পারয়ল পমরমিিিয়নর সাহাযয মনয়ি
হয়ব।

এবায়র আয়রকটু কটঠন একটট স সযার স াযান করার প্িষ্টা করয়বা। প্সটট হয়ে 1 + 2 + 3 + … +
48 + 49 + 50-এর প্যাগফল প্বর করা। অথাৎ ট 1 প্থয়ক 50 পযন্ত
ট রমিটট পূিসিংখযা
ট প্যাগ কয়র
প্যাগফল প্িখায়ি হয়ব। আয়গর প্রাগ্রা টটর সয়ে ম ল হয়ে প্য, এখায়নও 50 বার প্যাগ করয়ি
হয়ব, িয়ব পাথকয
ট হয়ে আয়গরবার প্য ন রমিবার 1 প্যাগ কয়রমছলা , এবায়র রথয় 1, িারপর 2,
িারপর 3 এভায়ব 50 পযন্ত ট সিংখযাগুয়লা প্যাগ করয়ি হয়ব। এিনয আ রা result = result + 1 না
মলয়খ মলখয়বা result = result + num। আর এই num-এর ান রথয় হয়ব 1 িারপয়র 2, এভায়ব
রমিবার 1 বাড়য়ব। প্রাগ্রা টট মলয়খ প্ফমল :

>>> result = 0
>>> num = 1
>>> for i in range(50):
... result = result + num
... num = num + 1
...
>>> print(result)
1275

আ রা যমি আয়রা খামনকটা মিন্তাভাবনা কমর, িাহয়ল মকন্তু মনয়ির প্কাে মলয়খই একই কাি কয়র
প্ফলয়ি পারয়বা :

>>> result = 0
>>> for num in range(51):
... result = result + num
...
>>> print(result)
1275

প্যয়হিু আ রা range(51) মলয়খমছ, িাই num-এর ান 0 প্থয়ক শুরু হয়ব এবিং 50-এ মগয়ে প্শষ
হয়ব। এখন একটট ন্ডিমনস প্িয়ন রাখা ভায়লা প্য, result = result + num-প্ক result += num ও মলখা
যাে। প্ি মন num = num + 1-প্ক মলখা যাে num += 1।

আ রা প্িখলা প্য i in range(n) মলখয়ল i-এর ান 0 প্থয়ক শুরু হে। আ রা িাইয়ল প্সটট অনয
প্কায়না সিংখযা প্থয়কও শুরু করয়ি পামর, এিনয আ ায়ক মলখয়ি হয়ব এরক : range(start, n)।
িাহয়ল i-এর ান start প্থয়ক শুরু হয়ে 1 কয়র বাড়য়ব এবিং n-1-এ মগয়ে প্শষ হয়ব। আ রা যমি
একটু মিন্তা কমর, আয়গর প্রাগ্রায় রথ বার result = result + num প্স্টটয় য়ন্ট আসয়ল যা
হয়েমছল, িা হয়ে : result = 0 + 0 (কারি result-এর ান 0, num-এর ানও 0)। এই কািটট
আ ায়ির না করয়লও িয়ল। আ রা এখন ওপয়র নিু ন যা মকছু মশখলা , িায়ি প্রাগ্রা টট মনয়ির
য়িা কয়র মলখয়ি পামর :

>>> result = 0
>>> for num in range(1, 51):
... result += num
...
>>> print(result)
1275

আ রা যমি িাই প্য, for লুয়পর প্ভির প্কায়না মকছু 1 কয়র না প্বয়ড় 5 কয়র বাড়য়ব, প্সই বযবস্থাও
আয়ছ। মনয়ির উিাহরিটট প্িখয়লই বুেয়ি পারয়বা :

>>> for i in range(1, 20, 5):


... print(i)
...
1
6
11
16
>>>

একটট কথা আম আবায়রা য়ন কমরয়ে মিয়ি িাই প্য, এই বইটট পয়ড় প্রাগ্রাম িং মশখয়ি িাইয়ল
রমিটট উিাহরি পড়ার স ে মনয়ি মনয়ি কয়র প্িখয়ি হয়ব। এবিং অনুশীলনীগুয়লাও সব করয়ি
হয়ব (প্কায়না স সযাে পড়য়ল বন্ধুর সাহাযয মনয়ি হয়ব
মকিংবা http://programabad.com ওয়েবসাইয়ট রশ্ন করয়ি হয়ব)।

এখন আ রা আয়রকটট উিাহরি প্িখয়বা। 1 প্থয়ক 100 পযন্ত ট প্যসকল সিংখযা 5 িারা মনিঃয়শয়ষ
মবভািয (অথাৎট 5 মিয়ে ভাগ করয়ল ভাগয়শষ 0 হে), প্সই সিংখযাগুয়লা মরন্ট করয়ি হয়ব এবিং
িায়ির প্যাগফলও প্বর করয়ি হয়ব।

result = 0
for num in range(100):
if num % 5 == 0:
print(num)
result += num
print("Sum is:", result)

প্রাগ্রা টট আ রা একটট ফাইয়ল প্সভ কয়র রান করয়ি পামর (আবার পাইথন ইন্টারয়রটায়রও রান
করয়ি পামর)। result–এর ান মরন্ট হয়ব 950। মকন্তু সটঠক উত্তর হয়ে 1050। এর কারি কী?
আ রা প্য range(100) মলয়খমছ, িায়ি প্িা num-এর ান লুয়পর প্ভিয়র 0 প্থয়ক 99 পযন্ত
ট হয়ব।
িাহয়ল আ ায়িরয়ক মলখয়ি হয়ব range(101)।

প্রাগ্রা টট আ রা আয়রা সহয়ি করয়ি পারিা এভায়ব :

result = 0
for num in range(5, 101, 5):
print(num)
result += num
print("Sum is:", result)

এখন লুপ বযবহার কয়র আ রা টাটট ল মিয়ে একটট েযাশ লাইন আাঁকয়বা। এখায়ন আ রা penup() ও
pendown() ফািংশন বযবহার করয়বা। penup() ায়ন আম কল িু য়ল প্ফললা , এখন টাটট ল যা-ই
করুক না প্কয়না, ন্ডিয়ন প্কায়না মকছু আাঁকা হয়ব না। আবার pendown() করয়ল এর পর প্থয়ক
টাটট য়লর কািক ন্ডট িয়ন প্িখায়ব। আ রা প্যটট করয়বা, প্সটট হয়ে 10 মপয়ক্সল সা য়ন যায়বা,
িারপয়র penup() করয়বা, 3 মপয়ক্সল সা য়ন যায়বা (মকন্তু প্যয়হিু penup করা হয়েয়ছ, িাই ন্ডিয়ন
মকছু প্িখায়ব না), িারপর আবার pendown() কয়র প্ফলয়বা। এই কািটা আ ায়ির একামযকবার
করয়ি হয়ব, যি বড় লাইন আাঁকয়ি িাই, িি প্বমশ বার করয়ি হয়ব। মনয়ির প্রাগ্রায় আম 20 বার
করলা ।

import turtle

turtle.speed(1)

for i in range(20):
turtle.forward(10)
turtle.penup()
turtle.forward(3)
turtle.pendown()

turtle.exitonclick()

আউটপুট হয়ব মনয়ির য়িা :


েুদপি লভিি েুপ
আ ায়ির রয়োিন হয়ল আ রা লুয়পর প্ভিরও লুপ িালায়ি পামর। এয়ক বয়ল প্নয়স্টে লুপ
(nested loop)। প্য ন, আ রা ইমি য়যয প্িয়খমছ প্য, মকভায়ব for লুপ বযবহার কয়র বগয়ক্ষত্র

আাঁকয়ি হে। এখন আ ায়ির যমি পাাঁিটট বগয়ক্ষত্র
ট আাঁকার রয়োিন পয়র, িাহয়ল মক আ রা
বগয়ক্ষত্র
ট আাঁকার প্কাে পাাঁিবার মলখয়বা? অবশযই না। আ রা একটট লুপ বযবহার করয়বা যা
পাাঁিবার ঘুরয়ব এবিং িার প্ভিয়র বগয়ক্ষত্র
ট আাঁকার প্কাে মলখয়বা। মনয়ির প্কাে প্িয়খ রথয়
প্বাোর প্িষ্টা করয়ি হয়ব প্য, প্কােটটর আউটপুট প্ক ন হয়ব এবিং িারপর প্রাগ্রা মলয়খ রান কয়র
আউটপুট ম মলয়ে প্িখয়ি হয়ব।

import turtle

turtle.shape("turtle")
turtle.speed(1)

for side_length in range(50, 100, 10):


for i in range(4):
turtle.forward(side_length)
turtle.left(90)

turtle.exitonclick()

মেদস্টি ওপি েুপ িাোদনা


আ ায়ির যমি প্কায়না মলস্ট থায়ক। আ রা প্সই মলয়স্টর ওপর মকন্তু লুপ িালায়ি পামর। প্য ন :

>>> saarc = ["Bangladesh", "Afghanistan", "Bhutan", "Nepal", "India",


"Pakistan", "Sri Lanka"]
>>> for country in saarc:
... print(country, "is a member of SAARC")
...
Bangladesh is a member of SAARC
Afghanistan is a member of SAARC
Bhutan is a member of SAARC
Nepal is a member of SAARC
India is a member of SAARC
Pakistan is a member of SAARC
Sri Lanka is a member of SAARC
>>>

আয়রকটট িার মবষে হয়ে, আ রা range() মিয়েও মলস্ট তিমর করয়ি পামর। এিনয আ ায়ক
list() ফািংশন বযবহার করয়ি হয়ব। এটটও মবট-ইন ফািংশন, িাই এটট বযবহার করার িনয প্কায়না
মেউল ই য়পাটট করয়ি হয়ব না। প্য ন, আম যমি িাই, 0 প্থয়ক 10 পযন্ত
ট সবগুয়লা সিংখযার মলস্ট
তিমর করয়বা, িাহয়ল এভায়ব করয়ি পামর :

>>> li = list(range(11))
>>> print(li)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

আবার আম যমি িাই প্য 1 প্থয়ক 20 পযন্ত


ট প্িাড় সিংখযাগুয়লার মলস্ট তিমর করয়বা, িাহয়ল এভায়ব
করয়ি পামর :

>>> li = list(range(2, 21, 2))


>>> print(li)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

টিকা: এই বইদি আমি list()-লক ফািংশন বদে পমিমিি কিাদেও ভমবষ্যদি আিিা মবষ্য়টি
আদিা জানদবা, যখন অবদজক্ট ওমিদয়দন্টড লরাগ্রামিিং মশখদবা। এই বইদি আমি লসটি
মনদয় আদোিনা কমি মন।

while েুপ
এখন আ রা আয়রক যরয়নর লুপ প্িখয়বা, যার না while লুপ। যারা নিু ন নিু ন প্রাগ্রাম িং মশয়খ,
িায়ির য়ন রােই রশ্ন িায়গ, লুপ প্িা একভায়ব মলখয়লই হে, আ ার মক সবরক পিমি প্শখার
িরকার আয়ছ? এক কথাে উত্তর হয়ে, অবশযই িরকার আয়ছ।

while লুয়পর প্ক্ষয়ত্র রথয় while মলখয়ি হয়ব, িারপয়র একটট শিট মলখয়ি হয়ব, প্যই শিট সমিয
হয়ল লুয়পর প্ভিয়রর কাি একবার হয়ব, িারপয়র আবার প্সই শিট পরীক্ষা করা হয়ব। এভায়ব
যিক্ষি শিটটট সমিয হয়ব, িিক্ষি লুয়পর প্ভিয়রর কাি িলয়ি থাকয়ব এবিং রমিবার লুয়পর
প্ভিয়রর কাি িলার পয়র প্সই শিটও পরীক্ষা করা হয়ি থাকয়ব। আ রা এখন িুইটট উিাহরি
প্িখয়বা, িাহয়ল while লুপ মকভায়ব বযবহার করয়ি হে, প্সটট আ ায়ির কায়ছ পমরষ্কার হয়ে যায়ব।

>>> i = 0
>>> while i < 5:
... print(i)
... i += 1
...
0
1
2
3
4
>>>
>>> i = 5
>>> while i >= 0:
... i -= 1
... print(i)
...
4
3
2
1
0
-1
>>>

আ রা এখন while লুপ বযবহার কয়র না িা মরন্ট করার একটট প্রাগ্রা মলখয়বা।

n = input("Please enter a positive integer: ")


n = int(n)

m = 1
while m <= 10:
print(n, "x", m, "=", n*m)
m += 1

ওপয়রর প্রাগ্রা টট namta.py নায় প্সভ কয়র রান কয়র প্িখয়ি হয়ব। আ রা িাইয়ল
multiplication_table.py নায় ও ফাইলটট প্সভ করয়ি পারিা , কারি না িায়ক ইিংয়রন্ডিয়ি বয়ল
multiplication table।

আ রা ইমিপূয়ব প্িয়খমছ
ট প্য, for লুয়পর প্ভিয়র for লুপ বযবহার করা যাে। প্ি মন for লুয়পর
প্ভিয়র while লুপ, while লুয়পর প্ভিয়র for লুপ, while লুয়পর প্ভিয়র while লুপ, এরক বযবহার
করা যাে। পরবিী প্রাগ্রায় আ রা প্সটট করয়বা। প্সই সয়ে টাটট ল মিয়ে লাইনগুয়লার রিং পমরবিটন
করা যাে, প্সটটও প্িখায়না হয়ব। প্রাগ্রা টটর আউটপুট হয়ব এ ন :

import turtle

turtle.color("black")
turtle.speed(5)

counter = 0
while counter < 36:
for i in range(4):
turtle.forward(100)
turtle.right(90)
turtle.right(10)
counter += 1
turtle.exitonclick()

turtle.color(“black”) লাইয়ন মবমভন্ন রিং (প্য ন : blue, green, red, yellow, orange ইিযামি)
বযবহার কয়র প্রাগ্রা টট বারবার িামলয়ে প্িখয়ি হয়ব। আম বই ছাপায়নার খরি ক ায়নার িনয
black বযবহার কয়রমছ। এখন সবার কায়ছ একটট রশ্ন। ওপয়রর প্রাগ্রায় আম প্কন counter < 36
শিট বযবহার কয়রমছ?

টাটট ল বযবহার কয়র লুয়পর প্ভিয়র লুপ বযবহার করার আয়রকটট উিাহরি প্িয়খ মনই। আ রা যি
প্বমশ প্রাগ্রাম িং করব, প্রাগ্রাম িং প্শখাটা িি ভায়লা হয়ব।

import turtle

height = 5
width = 5

turtle.speed(2)

turtle.penup()

for y in range(height):
for x in range(width):
turtle.dot()
turtle.forward(20)
turtle.backward(20 * width)
turtle.right(90)
turtle.forward(20)
turtle.left(90)

turtle.exitonclick()

এখায়ন dot() ফািংশন বযবহার কয়র েট মরন্ট করা হয়ে। আর শুরুয়িই আ রা penup() কল
কয়রমছ প্যন forward(), backword() এসব ফািংশয়নর কাি হওোর স ে ন্ডিয়ন প্কায়না মকছু আাঁকা
না হে। ায়ন কল একটু ওপয়র িু য়ল যমি কাগয়ির এমিক-প্সমিক প্নই, িাহয়ল প্িা কাগয়ি
প্কায়না িাগ পড়য়ব না, িাই নে মক? প্রাগ্রা টটয়ি height, width -এর মবমভন্ন ান মিয়ে এবিং x, y
এর ান লুয়পর প্ভিয়র মরন্ট কয়র পরীক্ষা-মনরীক্ষা করা প্যয়ি পায়র। আর প্রাগ্রায় র আউটপুট
হয়ব এ ন :

break এবিং continue


লুয়পর প্ভিয়র কখনও কখনও আ ায়ির মবয়শষ অবস্থার সৃটষ্ট হয়ি পায়র, প্যই অবস্থার সৃটষ্ট হয়ল
আ রা িাই প্য, প্রাগ্রা লুপ প্থয়ক প্বর হয়ে যায়ব। প্সই কািটট করার িনয আ রা break বযবহার
করয়ি পামর। আবার আ রা যমি িাই প্য, প্কায়না মবয়শষ অবস্থাে লুয়পর প্ভিয়র পুয়রা কাি না হয়ে
লুপটট িলয়ি থাকয়ব, িখন আ রা continue বযবহার করয়বা। উিাহরি প্িখয়লই মবষেটট পমরষ্কার
হয়ব।

আ রা এখন একটট প্রাগ্রা মলখয়বা, প্যটট একটট সিংখযার বগ প্বর


ট করয়ব। প্রাগ্রা টট রমিবার
বযবহারকামরর কাছ প্থয়ক ইনপুট িাইয়ব আর িার বগ মরন্ট
ট করয়ব। িয়ব ইনপুয়টর সিংখযাটট যমি 0
হে, িখন প্রাগ্রা টট বন্ধ হয়ে যায়ব।

while True:
n = input("Please enter a number (0 to exit): ")
n = int(n)
if n == 0:
break
print("Square of", n, "is", n*n)

পয়রর প্রাগ্রা টট আ রা sqrn.py নায় র ফাইয়ল প্সভ কয়র রান করয়ি পামর। এই প্রাগ্রায় আম
while লুয়পর প্ভিয়র শিট বযবহার কয়রমছ True, যা সবস েই সমিয। িাহয়ল লুপটট িলয়িই থাকয়ব,
কখয়না বন্ধ হয়ব না। বন্ধ করার বা লুপ প্থয়ক প্বর হওোর উপাে হয়ে break। লুয়পর প্ভিয়র
রমিবার আ রা শুরুয়ি একটট সিংখযা ইনপুট মনন্ডে। প্সই সিংখযার ান 0 মক না, প্সটট পরীক্ষা
করমছ। পরীক্ষার ফলাফল সিয হয়ল আ রা লুপ প্থয়ক প্বর হয়ে যান্ডে। নইয়ল লুয়পর কাি
যথারীমি িলয়ব, অথাৎ ট print() ফািংশয়নর কাি সিন্ন হয়ব, িারপর আবার লুয়পর প্ভিয়রর রথ
লাইন প্থয়ক কাি িলয়ি থাকয়ব।
ওপয়রর প্রাগ্রা টট মকন্তু যনাত্মক ও ঋিাত্মক – িুই যরয়ির সিংখযার িনযই কাি করয়ব। এখন
আ রা যমি িাই প্য, প্কবল যনাত্মক সিংখযার বগ প্িখায়বা,
ট িাহয়ল প্রাগ্রা টট মনয়ির য়িা কয়র
পমরবিটন কয়র মনয়ি পামর।

while True:
n = input("Please enter a positive number (0 to exit): ")
n = int(n)
if n < 0:
print("We only allow positive number. Please try again.")
continue
if n == 0:
break
print("Square of", n, "is", n*n)

এখায়ন n < 0 শিটটট সমিয হয়ল আ রা একটট বািটা মরন্ট কয়র লুপটট আবার িালায়বা। এিনয
continue বযবহার করা হয়েয়ছ। প্রাগ্রা টট রান কয়র মবমভন্ন রক ইনপুট মিয়লই মবষেটট পমরষ্কার
হয়ব। যারা মনয়িরা প্রাগ্রা কয়র মবষেটট পরীক্ষা-মনরীক্ষা করয়ব না, িায়ির আসয়ল প্রাগ্রাম িং
প্শখা হয়ব না।

এখন আ রা আয়রকটট প্রাগ্রা মলখয়বা। এটট প্লখার উয়েশয হয়ে break ও continue-এর আয়রা
একটট বযবহার প্িখায়না। প্রাগ্রা টটর কাি কী, প্সটট প্কাে প্িয়খ, মনয়ি প্রাগ্রা মলয়খ রান কয়র ও
প্সই সয়ে মিন্তা কয়র পুয়রাপুমর বুেয়ি পারা যায়ব। কায়রা কায়রা কায়ছ প্রাগ্রা টট একটু িটটল য়ন
হয়ি পায়র, িয়ব বইয়ি এখন পযন্ত ট যা প্িখায়না হয়েয়ছ, প্রাগ্রা টট বুোর িনয প্সই জ্ঞানই যয়থষ্ট।

terminate_program = False
while not terminate_program:
number1 = input("Please enter a number: ")
number1 = int(number1)
number2 = input("Please enter another number: ")
number2 = int(number2)

while True:
operation = input("Please enter add/sub or quit to exit: ")
if operation == "quit":
terminate_program = True
break
if operation not in ["add", "sub"]:
print("Unknown operation!")
continue
if operation == "add":
print("Result is", number1 + number2)
break
if operation == "sub":
print("Result is", number1 - number2)
break
ফািংশন
Published by subeen on April 16, 2018
ফািংশয়নর সয়ে পমরিে আ ায়ির অয়নক আয়গই হয়ে মগয়েয়ছ। রথয় ই যখন Hello world মরন্ট
কয়রমছলা , িখনই আ রা print() ফািংশন বযবহার কয়রমছ। এছাড়াও আয়রা অয়নক ফািংশন
বযবহার কয়রমছ, প্য ন input(), len(), type() ইিযামি। আবার আ রা turtle মেউল যখন বযবহার
কয়রমছ, িখন টাটট য়লর অয়নক ফািংশনও বযবহার কয়রমছ, প্য ন forward(), left(), right(), dot()
ইিযামি। ফািংশনগুয়লা কী কাি কয়র, এটট আ ায়ির িানয়ি হয়ব, মকন্তু মকভায়ব কাি কয়র, প্সটট
এখন আ ায়ির িানার রয়োিন প্নই। এসব ফািংশন তিমর কয়র প্িওো না থাকয়ল আ ায়িরয়ক
অয়নক প্বমশ কষ্ট করয়ি হয়িা। প্য ন print() ফািংশনটট মকভায়ব কাি করয়ব, প্সটট পাইথয়নর
মবটইনস‍্ মেউয়ল প্লখা আয়ছ (িয়ব এই মেউলটট আ ায়ির ই য়পাটট করয়ি হে না)। প্ি মন
dot() মকভায়ব কাি করয়ব, প্সটট প্লখা আয়ছ টাটট ল মেউয়লর প্ভিয়র। এই অযযায়ে আ রা
প্িখয়বা, মকভায়ব ফািংশন তিমর করয়ি হে, মকভায়ব মেউল তিমর করয়ি হে এবিং রয়োিনীে মকছু
ফািংশয়নর বযবহার।

আ রা কখন ফািংশন তিমর করয়বা? যখন আ ায়িরয়ক একটট মনমিটষ্ট কাি করয়ি হয়ব এবিং প্সই
কািটট একামযকবার করার রয়োিন হয়ব, িখন আ রা প্সই কায়ির িনয একটট ফািংশন তিমর
কয়র প্ফলয়বা। আবার কখনও কখনও একটট কাি একবার করয়লও আ রা প্সটটর িনয আলািা
ফািংশন তিমর করয়ি পামর, প্যন প্কাে বুেয়ি সহি হে। প্য ন যরা যাক, আ ায়ক প্কায়না
প্রাগ্রায় অয়নকবার িুটট সিংখযা প্যাগ করয়ি হয়ব। িখন আ রা এই প্যাগ করার িনয একটট
ফািংশন তিমর কয়র প্ফলয়ি পামর এভায়ব :

def add(n1, n2):


return n1 + n2

আ রা প্িখয়ি পান্ডে প্য, ফািংশয়নর শুরুয়ি মলখয়ি হয়ব def, িাহয়ল পাইথন বুেয়ব প্য এখায়ন
একটট ফািংশন তিমর করা হয়ে (বা সিংজ্ঞামেি করা হয়ে, definition শয়ের রথ মিন অক্ষর
def)। িারপর ফািংশয়নর না মিয়ি হয়ব। আ রা না মিয়েমছ add। ফািংশয়নর না প্িয়খ প্যন
প্বাো যাে প্য, ফািংশনটট কী কাি করয়ব। িারপয়র রথ বন্ধনীর প্ভিয়র ফািংশয়নর পযারাম টার
মলখয়ি হয়ব। সব ফািংশয়ন পযারাম টার থায়ক না। পযারাম টার থাকয়ব কী না এবিং কেটট, প্সটট
মনভটর কয়র আ রা কী ফািংশন তিমর করমছ, িার ওপর। প্য ন এখায়ন আম তিমর করমছ িুটট
সিংখযার প্যাগফল প্বর করার ফািংশন। িাহয়ল প্িা আ ায়ক প্কান িুটট সিংখযা আম প্যাগ করয়বা,
প্সগুয়লা িানয়ি হয়ব বা ইনপুট মনয়ি হয়ব। ফািংশয়নর প্ক্ষয়ত্র পযারাম টার হয়ে ইনপুট প্নওোর
পিমি। িারপয়র একটট প্কালন মিহ্ন মিয়ি হয়ব। পয়রর লাইন প্থয়ক ফািংশয়নর প্ভিয়রর প্কাে
মলখয়ি হয়ব এবিং প্সগুয়লা ইনয়েনয়টশন করা থাকয়ি হয়ব, নইয়ল পাইথয়নর পয়ক্ষ প্বাো সম্ভব
হয়ব না প্য প্কান অিংশ ফািংশয়নর প্ভিয়র আর প্কান অিংশ বাইয়র। ফািংশন প্থয়ক আবার এক বা
একামযক ন্ডিমনস প্ফরি পাঠায়না যাে, যায়ক বয়ল মরটান করা।
ট আ ায়ির প্য ন প্যাগফল প্ফরি
পাঠায়না িরকার, িাই আ রা n1 + n2 এর ান মরটান করমছ।
ট আ রা এখন ফািংশনটটর বযবহার
প্িখয়বা। আ ায়ির প্কায়না মনে কানুন ুখস্থ করার রয়োিন প্নই, িিটা কয়র ও মিন্তা কয়র আ রা
প্রাগ্রাম িং মশখয়বা।

>>> def add(n1, n2):


... return n1 + n2
...
>>> n = 10
>>> m = 5
>>> result = add(n, m)
>>> print(result)
15
>>>
>>> number1 = 10
>>> number2 = 10
>>> result = add(number1, number2)
>>> print(result)
20
>>>
>>> n1 = 20
>>> n2 = 10
>>> print(add(n1, n2))
30
>>> print(add(2.5, 3.5))
6.0
>>>

আ রা ফািংশনটটর মবমভন্ন রক বযবহার প্িখলা । প্যসব মবষে প্খোল করয়ি হয়ব, প্সগুয়লা হয়ে

• যমিও ফািংশয়নর পযারাম টার মহয়সয়ব n1 ও n2 বযবহার করা হয়েয়ছ, আ রা মকন্তু ফািংশন
কল করার স ে প্যয়কায়না নায় র আগুটয় ন্ট বযবহার করয়ি পামর।
• আ রা যখন ফািংশনটট সিংজ্ঞামেি বা মেফাইন করমছ বা সহি বািংলাে ফািংশনটট তিমর
করমছ, িখন প্য n1, n2 মলখলা , এগুয়লায়ক বয়ল ফািংশয়নর পযারাম টার (parameter)।
আর আ রা যখন ফািংশনটট কল করমছ, প্য ন add(n, m) বা add(n1, n2) বা add(2, 3)
এখায়ন n, m বা n1, n2 বা 2, 3 হয়ে আগুটয় ন্ট (argument)। না গুয়লা ুখস্থ করয়ি হয়ব
না, িয়ব প্িয়ন রাখা ভায়লা। ভমবষযয়ি ইিংয়রন্ডি বই পড়ার স ে কায়ি লাগয়ব।
• আগুটয় ন্ট মহয়সয়ব ভযামরয়েবল বযবহার করা যাে, আবার সরাসমর মবমভন্ন সিংখযাও বযবহার
করা যাে।

ফািংশয়নর প্য সবস ে পযারাম টার থাকয়িই হয়ব, প্সরক প্কায়না কথা প্নই। আবার ফািংশন
প্থয়ক প্য প্কায়না মকছু মরটান করয়ি
ট হয়ব, এ ন প্কায়না কথা প্নই। আ রা ফািংশন প্থয়ক প্কায়না
মকছু মরটান নাট করয়ল পাইথন আপনাআপমন None মরটান কয়র। ট এটট পরীক্ষা কয়র প্িখা প্যয়ি
পায়র। আবার অয়নকস ে ফািংশন প্থয়ক একামযক ন্ডিমনসও মরটান করয়ি ট হয়ি পায়র। প্সয়ক্ষয়ত্র
প্যসব ন্ডিমনস মরটান করয়ি
ট হয়ব, return প্স্টটয় য়ন্টর পর প্সগুয়লা ক া মিয়ে পৃথক কয়র মিয়ি
হয়ব। প্য ন : return a, b, c।
আ রা টাটট ল বযবহার কয়র বগয়ক্ষত্র
ট আাঁকার একটট প্রাগ্রা তিমর কয়রমছলা । প্রাগ্রা টটয়ি
আ রা বগয়ক্ষত্র
ট আাঁকার কািটট একটট ফািংশন তিমর কয়র করয়ি পামর।

def draw_square(side_length):
for i in range(4):
turtle.forward(side_length)
turtle.left(90)

িাহয়ল একটট সিূি প্রাগ্রা


ট মলয়খ প্িমখ, প্সই বৃত্ত তিমরর প্রাগ্রা টট। মনয়ির প্রাগ্রা টট
সািাকায়লা, িয়ব প্কউ িাইয়ল মবমভন্ন রিং বযবহার করয়ি পায়র :

import turtle

def draw_square(side_length):
for i in range(4):
turtle.forward(side_length)
turtle.left(90)

counter = 0
while counter < 90:
draw_square(100)
turtle.right(4)
counter += 1

turtle.exitonclick()

অনুশীলনী: একটট ফািংশন তিমর করয়ি হয়ব যা পযারাম টার মহয়সয়ব একটট বাহুর তিঘযট প্নয়ব এবিং
একটট স বাহু ন্ডত্রভূ ি আাঁকয়ব।

এখন আ রা মকছু উিাহরয়ির াযযয় ফািংশন সিয়কট আয়রা িানয়বা।

def myfnc(x):
print("inside myfnc", x)
x = 10
print("inside myfnc", x)

x = 20
myfnc(x)
print(x)

ওপয়রর প্রাগ্রা টট রান করয়ল আ রা আউটপুট পায়বা এ ন :

inside myfnc 20
inside myfnc 10
20
িাহয়ল আ রা প্িখয়ি প্পলা , ভযামরয়েবয়লর না যমিও একই, মকন্তু myfnc-এর প্ভিয়র x-এর
ান পমরবিটন কয়র মিয়লও ফািংশয়নর বাইয়র x-এর ান পমরবমিটি হে মন। এর কারি হয়ে myfnc
যখন কল হে, িখন প্স আগুটয় ন্ট মহয়সয়ব প্যসব ভযামরয়েবল পাে, প্সগুয়লার একটা কমপ তিমর
হে। িাই myfnc-এর x আর িার বাইয়রর x আসয়ল িুটট আলািা ভযামরয়েবল। একটট ফািংশয়নর
প্ভিয়র প্যসব ভযামরয়েবল তিমর করা হে প্সগুয়লা হয়ে ওই ফািংশয়নর প্লাকাল (local)
ভযামরয়েবল। ফািংশয়নর বাইয়র িার অন্ডিত্ব থায়ক না।

ফািংশয়নর বাইয়র যমি প্কায়না ভযামরয়েবল থায়ক, িাহয়ল ফািংশয়নর প্ভির প্থয়ক ওই ভযামরয়েবল
পাওো যাে। এয়ক বয়ল প্গ্লাবাল (global) ভযামরয়েবল। মনয়ির প্রাগ্রা রান করয়ল প্সটট আ রা
প্িখয়ি পায়বা :

def myfnc(y):
print("y =", y)
print("x =", x)

x = 20
myfnc(x)

প্রাগ্রায় র আউটপুট হয়ব এরক :

y = 20
x = 20

এখন আ রা যমি myfnc এর বাইয়র প্থয়ক y-এর ান প্িখয়ি িাই, প্সটট মক সম্ভব? মনয়ির প্রাগ্রা
রান করয়লই বুেয়ি পারা যায়ব।

def myfnc(y):
print("y =", y)
print("x =", x)

x = 20
myfnc(x)
print("y:", y)

আউটপুট হয়ব এরক :

y = 20
x = 20
Traceback (most recent call last):
File "fnc_test.py", line 7, in <module>
print("y:", y)
NameError: name 'y' is not defined

অথাৎ
ট y নায় প্কায়না মকছু পাওো যাে মন।
এখন আ রা প্িখয়বা, ফািংশয়নর পযারাম টায়রর মেফট (default) ান মকভায়ব প্িওো যাে।

def myfnc(y=10):
print("y =", y)

x = 20
myfnc(x)
myfnc()

এই প্রাগ্রায় আম িুইবার myfnc ফািংশন কল করলা । রথ বার আগুটয় ন্ট মহয়সয়ব x পাঠান্ডে।
মিিীেবার মকছুই পাঠান্ডে না। মকন্তু ফািংশয়নর পযারাম টায়র আবার বয়ল মিয়েমছ y=10। এর ায়ন
হয়ে যমি প্কায়না আগুটয় ন্ট পাঠায়না না হে, িাহয়ল y-এর ান হয়ব 10, আর যমি প্কায়না
আগুটয় ন্ট পাঠায়না হে, িাহয়ল আগুটয় য়ন্ট প্যই ভযামরয়েবলটট পাঠায়না হয়লা, প্সই ভযামরয়েবয়লর
ান y-প্ি কমপ হয়ব।

এবায়র আয়রকটট প্রাগ্রা মলখয়বা :

def myfnc(x, y=10, z):


print("x =", x, "y =", y, "z =", z)

x = 5
y = 6
z = 7
myfnc(x, y, z)

ওপয়রর প্কাে যমি রান কমর, িাহয়ল আউটপুট পায়বা এরক :

def myfnc(x, y=10, z):


^
SyntaxError: non-default argument follows default argument

এই এরয়রর অথ হয়ে ট আ রা যমি মেফট ান প্িই, িাহয়ল িারপয়র সবগুয়লা আগুটয় য়ন্ট
মেফট ান থাকয়ি হয়ব। ায়ন আ রা যমি মলখিা def myfnc(x, y=10, z=0) িাহয়ল এই এরর
আর আসয়ব না। আ রা প্রাগ্রা মলয়খ পরীক্ষা কয়র প্িমখ। মনয়ির প্রাগ্রা টট রান কয়র আউটপুট
প্িয়খ বুয়ে মনয়ি হয়ব।

def myfnc(x, y=10, z=0):


print("x =", x, "y =", y, "z =", z)

x = 5
y = 6
z = 7
myfnc(x, y, z)
myfnc(x, y)
myfnc(x)
আর আ রা যমি িাই প্য, z-এর প্কায়না মেফট ান থাকয়ব না িাহয়ল এভায়ব মলখয়ি হয়ব :
myfnc(x, z, y = 10)। মকন্তু এভায়ব মলখয়ল প্িা একটা স সযা আয়ছ, মিিীে আগুটয় ন্ট প্যটট
পাঠায়বা, প্সটট প্িা z-এ আসয়ব, কারি পযারাম টায়রর না প্িা মবয়বিনা করা হে না, বরিং রথ টট x-
এ, মিিীেটট z-এ এবিং িৃিীেটট y-এ কমপ হয়ব। মকন্তু পাইথয়ন একটট উপাে আয়ছ প্যখায়ন মনমিটষ্ট
পযারাম টায়র মনমিটষ্ট ান পাঠায়না যাে। মনয়ির উিাহরয়ি আ রা প্সটট প্িখয়বা।

def myfnc(x, z, y=10):


print("x =", x, "y =", y, "z =", z)

myfnc(x = 1, y = 2, z = 5)
a = 5
b = 6
myfnc(x = a, z = b)
a = 1
b = 2
c = 3
myfnc(y = a, z = b, x = c)

প্রাগ্রা টট রান করয়ল মনয়ির য়িা আউটপুট আসয়ব :

x = 1 y = 2 z = 5
x = 5 y = 10 z = 6
x = 3 y = 1 z = 2

পাইথয়ন সুয়যাগ-সুমবযা অয়নক প্বমশ। িয়ব এখায়ন একটট কথা বলা রয়োিন। বইটট রথ বার
পড়ার পয়র প্বমশরভাগ পাঠয়করই এি মকছু য়ন থাকয়ব না এবিং এটট খুবই স্বাভামবক। এয়ি মিমন্তি
হওোর মকছু প্নই। বইটট মিিীে বা িৃিীেবার পড়ার (এবিং প্সই সয়ে রমিবারই বইয়ের সব উিাহরি
ও অনুশীলনীগুয়লা করয়ি হয়ব) পর এগুয়লা য়ন থাকয়ব।

আ রা িাইয়ল ফািংশয়নর প্ভিয়র মলস্টও পাঠায়ি পামর। প্য ন, এখন আম একটট ফািংশন মলখয়বা,
প্যটটয়ি আগুটয় ন্ট মহয়সয়ব একটট মলস্ট পাঠায়না যায়ব এবিং আ রা প্সই মলয়স্টর সিংখযাগুয়লা প্যাগ
কয়র প্যাগফল প্ফরি পাঠায়বা। যমিও মলয়স্ট আ রা প্যয়কায়না মকছুই পাঠায়ি পামর; মকন্তু প্যয়হিু
প্যাগ করয়বা, িাই আ রা সিংখযার মলস্ট পাঠায়বা।

def add_numbers(numbers):
result = 0
for number in numbers:
result += number
return result

result = add_numbers([1, 2, 30, 4, 5, 9])


print(result)

এখন, ফািংশয়নর প্ভির ভযামরয়েবল পাঠায়না আর মলস্ট পাঠায়নার য়যয একটট পাথকয ট আয়ছ। প্য
ফািংশয়নর প্ভিয়র মলস্ট পাঠায়না হয়েয়ছ, প্সখায়ন যমি মলস্টটট পমরবিটন করা হে, িাহয়ল আসল
মলস্টও পমরবমিটি হয়ে যাে। এটটও আ রা একটট প্রাগ্রা মলয়খ যািাই কয়রা প্নয়বা। িয়ব িার
আয়গ আ ায়ির আয়রা একটট ন্ডিমনস প্িয়ন মনয়ি হয়ব। আ রা যমি মলয়স্টর প্কায়না মনমিটষ্ট
উপািান প্পয়ি িাই, প্য ন রথ , মিিীে, িৃিীে ইিযামি, িাহয়ল আ রা িৃিীে বন্ধনীর প্ভিয়র প্সই
সিংখযাটট উয়ল্লখ কয়র মিয়ি পামর। এয়ক বলা হে ইনয়েক্স। িয়ব পাইথয়ন মলয়স্টর ইনয়েক্স মকন্তু 1
প্থয়ক নে, 0 প্থয়ক শুরু হে। অথাৎ,
ট আ রা যমি মলয়স্টর রথ উপািান একয়সস করয়ি িাই,
িাহয়ল আ রা মলয়স্টর নায় র পর [0] মলখয়বা। country নায় র একটট মলয়স্ট যমি পৃমথবীর
সবগুয়লা প্িয়শর না থায়ক, আর প্সই মলয়স্টর 50-ি প্িশটট আ রা প্িখয়ি িাই, িাহয়ল
আ ায়িরয়ক country[49] মরন্ট করয়ি হয়ব।

def test_fnc(li):
li[0] = 10

my_list = [1, 2, 3, 4]
print("before function call", my_list)
test_fnc(my_list)
print("after function call", my_list)

প্রাগ্রা টট রান করয়ল আ রা আউটপুট পায়বা এরক :

before function call [1, 2, 3, 4]


after function call [10, 2, 3, 4]

এরক হওোর কারি কী? কারি আ রা যখন একটট মলস্ট অনয একটট ভযামরয়েবয়ল অযাসাইন
কমর, িাহয়ল নিু ন প্কায়না মলস্ট তিমর হে না, বরিং নিু ন ভযামরয়েবল আর পুরয়না ভযামরয়েবয়ল
একই মলস্ট থায়ক। প্সটটও আ রা পরীক্ষা কয়র প্িখয়বা পাইথন ইন্টারয়রটায়র।

>>> list1 = [1, 2, 3, 4]


>>> list2 = list1
>>> print(list1)
[1, 2, 3, 4]
>>> print(list2)
[1, 2, 3, 4]
>>> list2[0] = 100
>>> print(list2)
[100, 2, 3, 4]
>>> print(list1)
[100, 2, 3, 4]

িাই ফািংশয়নর প্ভিয়র মলস্ট পাঠায়নার স ে মকিংবা আয়রকটট ভযামরয়েবয়ল মলস্ট অযাসাইন করার
স ে আ ায়ির সিকট হয়ি হয়ব। নইয়ল প্রাগ্রায় বাগ-এর সৃটষ্ট হয়ব। কম্পিউটার প্রাগ্রায় র
ি‍্রুটটয়ক বয়ল বাগ (bug)।

আ রা প্য একটু আয়গ মলয়স্টর উপািানগুয়লা প্যাগ করার িনয একটট ফািংশন মলখলা , পাইথয়ন
মকন্তু প্সই কাি করার িনয একটট মবটইন ফািংশন আয়ছ। আ ায়ির রয়োিন হয়ল আ রা প্সই
ফািংশন বযবহার করয়বা। িাহয়ল আম উিাহরয়ির প্রাগ্রা প্কন মলখলা ? ফািংশয়ন মকভায়ব মলস্ট
পাঠায়ি হে, প্সটট প্িখায়নার িনয।
>>> li = [1, 2, 3]
>>> result = sum(li)
>>> print(result)
6

আ রা বইয়ের পয়রর অযযােগুয়লায়ি আয়রা মবমভন্ন মবটইন ফািংশন বযবহার করয়বা এবিং
মনয়িরাও মকছু মকছু ফািংশন তিমর করয়বা।

অনুশীলনী:

• একটট ফািংশন তিমর করয়ি হয়ব, প্য পযারাম টায়র একটট মলস্ট প্নয়ব এবিং মলয়স্টর
সিংখযাগুয়লার গড় মনিেট কয়র প্ফরি পাঠায়ব।
• একটট না িা মরন্ট করার ফািংশন তিমর করয়ি হয়ব। ফািংশয়ন প্কায়না সিংখযা পাঠায়ল প্সই
সিংখযার না িা মরন্ট করয়ব। আর প্কায়না মকছু না পাঠায়ল 1-এর না িা মরন্ট করয়ব।

মবয়শষ দ্রষ্টবয – ফািংশন মবষয়ে বািংলা মভমেও প্লকিার প্িখা যায়ব এখায়ন
– https://goo.gl/ozYWtv

উয়ল্লখয প্য, মভমেও প্লকিারটট পাইথন ২ এর িনয তিমর করা হয়লও, প্বমশরভাগ প্রাগ্রা ই পাইথন
৩-এও িলয়ব। আর, প্যখায়ন print প্স্টট যান্ট বযবহার করা হয়েয়ছ, প্সখায়ন print() বযবহার করয়ি
হয়ব।
মরিং মনয়ে কািকারবার
Published by subeen on April 15, 2018
মরিং (string)-এর সয়ে আ রা ইমি য়যযই পমরমিি হয়েমছ। এই অযযায়ে আ রা মরিং-এর আয়রা
বযবহার মশখয়বা। প্বমশরভাগ প্ক্ষয়ত্রই আ রা আলািা ফাইয়ল প্রাগ্রা না মলয়খ ইন্টারয়রটার
বযবহার করয়বা, যায়ি আ রা উিাহরিগুয়লা মনয়িরা দ্রুি অনুসরি করয়ি পামর।

শূিয বা িারয়িয়ে প্বমশ সিংখযক অক্ষর বা মিহ্ন মিয়ে মরিং তিমর হে। মরিং শুরু ও প্শষ করয়ি হে
েবল প্কায়টশন অথবা মসয়েল প্কায়টশন মিহ্ন বযবহার কয়র। মরিংয়ে প্ াট কেটট অক্ষর আয়ছ,
প্সটট আ রা প্বর করয়ি পামর len() ফািংশন বযবহার কয়র।

>>> s = "hello"
>>> len(s)
5
>>> l = len(s)
>>> l
5
>>> print(l)
5
>>>
>>> s = ''
>>> len(s)
0
>>>
>>> s = ""
>>> len(s)
0
>>>

আবার আ ায়ির যমি এ ন মকছু মরন্ট করয়ি হে, প্যখায়ন মসয়েল প্কায়টশন আয়ছ (প্য ন
Dimik’s), িখন আ রা প্সটট িুইভায়ব করয়ি পামর :

>>> s = "Dimik's"
>>> print(s)
Dimik's
>>> s = 'Dimik\'s'
>>> print(s)
Dimik's
>>>

একটট মরিংয়ক যমিও আ রা একটট ভযামরয়েবয়ল রামখ, আ রা িাইয়ল রমিটট অক্ষর আলািাভায়ব
প্পয়ি পামর। s যমি একটট মরিং হে, িাহয়ল রথ অক্ষর পাওো যায়ব s[0]-প্ি, মিিীে অক্ষর পাওো
যায়ব s[1]-এ।

>>> country = "Bangladesh"


>>> country[0]
'B'
>>> country[1]
'a'
>>> country[2]
'n'
>>> country[6]
'd'
>>> country[8]
's'
>>> country[9]
'h'
>>> country[10]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range

ওপয়রর উিাহরি প্থয়ক আ রা বুেয়ি পারমছ, মরিংয়ের তিঘযট যমি len হে, িাহয়ল রথ অক্ষরটট
থাকয়ব 0 ইনয়েয়ক্স আর প্শষ অক্ষরটট থাকয়ব len-1 ইনয়েয়ক্স। আ রা মরিংয়ের ওপর লুপও
িালায়ি পামর এভায়ব :

>>> for c in country:


... print(c)
...
B
a
n
g
l
a
d
e
s
h
>>>

অয়নকটা মলয়স্টর য়িাই। মকন্তু মলয়স্টর সয়ে একটট পাথকয ট হয়ে, আ রা িাইয়ল মলয়স্টর প্কায়না
উপািান পমরবিটন করয়ি পামর, মরিংয়ের প্ক্ষয়ত্র প্সটট সম্ভব নে।

>>> c = ['A', 'b', 'c']


>>> print(c)
['A', 'b', 'c']
>>> c[0] = 'a'
>>> print(c)
['a', 'b', 'c']
>>>
>>> country = "Bangladesh"
>>> country[0] = 'b'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>>
এিনয পাইথয়নর ইিংয়রন্ডি বইগুয়লায়ি মরিংয়ক বয়ল ই ম উয়টবল (immutable) বা নন-ম উয়টবল
(non-mutable), কারি এর পমরবিটন করা যাে না।

িুটট মরিং প্িাড়া লাগায়নার িনয আ রা প্যাগ মিহ্ন বযবহার করয়ি পামর।

>>> country = "Bangla" + "desh"


>>> print(country)
Bangladesh
>>> x = "50" + "5"
>>> print(x)
505
>>>

এই প্যায়গর কািটা করয়ি মগয়ে আ রা অয়নকস ে গড়বড় কয়র প্ফমল। িাই একটু সিকটিা
অবলম্বন করয়ি হয়ব প্য, আ রা আসয়ল সিংখযা প্যাগ করমছ নামক মরিং প্িাড়া লাগান্ডে।

অয়নকস ে আ ায়িরয়ক একটট মরিংয়ের প্ভিয়র মবয়শষ একটট মরিং খুয়াঁ ি প্বর করয়ি হয়ব। িখন
আ রা find() প্ থে বযবহার করয়বা। প্য ন :

>>> country = "Bangladesh"


>>> country.find("Ban")
0
>>> country.find("ang")
1
>>> country.find("Bangla")
0
>>> country.find("Bengla")
-1
>>> country.find("desh")
6

এখায়ন আ রা country (অথাৎ ট Bangladesh)-এর প্ভিয়র মবমভন্ন মরিং খুয়াঁ ি প্বর করার প্িষ্টা
কয়রমছ। যমি আ রা যা খুি াঁ মছ, প্সটট পাওো না যাে, িখন find() প্ থে -1 মরটান কয়র।
ট আর যমি
খুয়াঁ ি পাওো যাে, িাহয়ল প্যই পন্ডিশয়ন প্সটট খুয়াঁ ি পাওো মগয়েয়ছ, প্সই পন্ডিশন বা ইনয়েক্স
মরটান কয়র।

আ রা যমি প্কায়না একটট মরিংয়ের প্ভিয়র প্কায়না মকছু বিয়ল মিয়ি িাই, িাহয়ল আ রা replace()
প্ থে বযবহার কয়র প্সটট করয়ি পামর। প্য ন :

>>> country = "North Korea"


>>> new_country = country.replace("North", "South")
>>> print(new_country)
South Korea
>>> print(country)
North Korea
>>>
>>> text = "this is a test. this is another test. this is final test."
>>> new_text = text.replace("this", "This")
>>> print(new_text)
This is a test. This is another test. This is final test.
>>> print(text)
this is a test. this is another test. this is final test.

ওপয়রর উিাহরয়ি আ রা প্িখলা প্য, replace() প্ থেটট নিু ন একটট মরিং মরটান কয়র,
ট মকন্তু ূল
মরিংয়ে প্কায়না পমরবিটন কয়র না। িয়ব আ রা িাইয়ল আয়গর মরিং প্যই ভযামরয়েবয়ল প্রয়খমছলা ,
নিু ন মরিংটটও একই ভযামরয়েবয়ল রাখয়ি পামর। প্সয়ক্ষয়ত্র একই নায় র একটট নিু ন ভযামরয়েবয়ল
নিু ন মরিং অযাসাইন হয়ব। যমিও আ ায়ির য়ন হয়ি পায়র আয়গর মরিং পমরবমিটি হয়েয়ছ, প্সটট
আসয়ল সমিয নে, কারি মরিং পমরবিটন করা যাে না, একটু আয়গই আ রা প্সটট প্িয়খমছ।

>>> text = "hello"


>>> text = text.replace("hello", "Hello")
>>> print(text)
Hello

ওপয়র ঘটনা যা ঘটয়ছ, িা হয়লা, text.replace(“hello”, “Hello”) একটট নিু ন মরিং তিমর করয়ছ,
আর প্সটটয়ক আ রা text ভযামরয়েবয়লই রাখমছ। “hello” মরিংটট বিলােমন, বরিং নিু ন একটট মরিং
তিমর হয়েয়ছ – এই মবষেটট প্খোল রাখয়ি হয়ব। প্রাগ্রাম িংয়ে যারা নিু ন, িায়ির হেি বুেয়ি একটু
স সযা হয়িও পায়র, িায়ি প্কায়না অসুমবযা প্নই।

মরিংয়ের শুরুয়ি ও প্শয়ষ অয়নক স ে প্েস কযায়রক্টার থায়ক, প্যগুয়লা আ ায়ির বাি প্িওোর
রয়োিন হয়ি পায়র। প্সিনয আ রা strip(), lstrip() ও rstrip() প্ থে বযবহার করয়ি পামর।
lstrip() প্ থে মরিংয়ের বাাঁ মিয়কর প্েসগুয়লা বাি প্িয়ব, rstrip() প্ থে োনমিয়কর প্েসগুয়লা
বাি প্িয়ব, আর strip() প্ থে িুইমিয়কর প্েসগুয়লাই বাি প্িয়ব।

>>> text = " this is a string. "


>>> text
' this is a string. '
>>> text.lstrip()
'this is a string. '
>>> text.rstrip()
' this is a string.'
>>> text.strip()
'this is a string.'
>>> text
' this is a string. '
>>>

ওপয়রর উিাহরয়ি আ রা আয়রা প্িখলা প্য text-এর মকন্তু প্কায়না পমরবিটন হয়লা না। কারি
প্ থেগুয়লা আসয়ল নিু ন একটট মরিং মরটান কয়র।
ট িাই প্সগুয়লা প্পয়ি িাইয়ল নিু ন প্কায়না
ভযামরয়েবয়ল (মকিংবা text ভযামরয়েবয়ল) রাখয়ি হয়ব।

>>> text = " this is a string. "


>>> new_text = text.rstrip()
>>> new_text
' this is a string.'
>>> text
' this is a string. '
>>>

আবার আ রা যমি প্কায়না মরিংয়ক আপারয়কস (uppercase), প্লাোরয়কস (lowercase)-এ


রূপান্তর করয়ি িাই, মকিংবা প্কবল রথ অক্ষরটট বড় হায়ির কয়র মিয়ি িাই, প্সিনযও ফািংশন
তিমর করা আয়ছ।

>>> s1 = "Bangladesh"
>>> s_up = s1.upper()
>>> s_up
'BANGLADESH'
>>> s_lo = s1.lower()
>>> s_lo
'bangladesh'
>>> s = "hello"
>>> s_cap = s.capitalize()
>>> s_cap
'Hello'

প্কায়না মরিংয়ে যমি অয়নকগুয়লা প্ছাট মরিং এক বা একামযক প্েস মিয়ে আলািা করা থায়ক আর
আ রা প্কবল প্সই প্ছাট মরিংগুয়লা প্পয়ি িাই, িাহয়ল আ রা split() প্ থে বযবহার কয়র প্সগুল
একটট মলয়স্ট প্পয়ি পামর।

>>> str = "I am a programmer."


>>> words = str.split()
>>> print(words)
['I', 'am', 'a', 'programmer.']
>>> words
['I', 'am', 'a', 'programmer.']
>>> for word in words:
... print(word)
...
I
am
a
programmer.
>>>

মরিংয়ের প্ভিয়রর মরিংয়ক সাবমরিং (sub-string)ও বয়ল। প্সয়টর প্য ন সাবয়সট। এখন প্কায়না
মরিংয়ের প্ভিয়র একটট মরিং কিবার আয়ছ, প্সটট গিনা করারও একটট সহি উপাে আয়ছ,
count() প্ থয়ের াযযয় ।

>>> str = "This is"


>>> str.count("is")
2
কখয়না কখয়না আ ায়ির িানার িরকার হয়ি পায়র প্য, একটট মরিংয়ের শুরুয়ি মকিংবা প্শয়ষ
একটট মরিং (বা সাবমরিং) আয়ছ কী প্নই। প্সিনয পাইথয়ন িুটট প্ থে তিমর করা আয়ছ,
startswith() ও endswith()। মনয়ির উিাহরি প্িখয়লই বুেয়ি পারয়বা।

>>> s = "Bangladesh"
>>> s.startswith("Ban")
True
>>> s.startswith("ban")
False
>>> s.startswith("an")
False
>>> s.endswith("Ban")
False
>>> s.endswith("desh")
True
>>> s.endswith("h")
True

আ ায়ির হেি এ ন লন্ডিয়কর িরকার হয়ি পায়র প্য কায়রা না Mr. মিয়ে শুরু হয়ল আ রা িায়ক
Dear Sir বয়ল সয়ম্বাযন করয়বা। িখন এরক প্কাে প্লখা প্যয়ি পায়র :

>>> name = "Mr. Anderson"


>>> if name.startswith("Mr."):
... print("Dear Sir")
...
Dear Sir

ওপয়রর প্রাগ্রা টটয়ি ইনপুট প্নওোর িনয আ রা প্টক্সটবক্সও বযবহার করয়ি পামর। মনয়ি টাটট ল
মেউল বযবহার কয়র আ রা প্টক্সট ইনপুট মনলা । একটট প্রাগ্রা অয়নকভায়বই প্লখা যাে, এটট
িার একটট ভায়লা উিাহরি।

import turtle

name = turtle.textinput("name", "What is your name?")


name = name.lower()
if name.startswith("mr"):
print("Hello Sir, how are you?")
elif name.startswith("mrs") or name.startswith("miss") or
name.startswith("ms"):
print("Hello Madam, how are you?")
else:
name = name.capitalize()
str = "Hi " + name + "! How are you?"
print(str)

turtle.exitonclick()

এিক্ষি মরিংয়ের নানান রকয় র কাি প্িখলা । ভমবষযয়ি মবমভন্ন প্রাগ্রা তিমর করার স ে
এগুয়লা কায়ি লাগয়ব। আর বইয়ি যা প্িখায়না হয়েয়ছ, িার বাইয়রও অয়নক মকছু আয়ছ, প্সগুয়লা
আগা ী মিনগুয়লায়ি মশয়খ মনয়ি হয়ব। প্রাগ্রাম িং মনয়ে িাড়াহুড়া করার মকছু প্নই। রিুর স ে,
তযযয,ট িিটা ও প্লখাপড়া করার মবমন য়ে ভায়লা প্রাগ্রা ার হওো সম্ভব। এখন একটট িার প্রাগ্রা
মিয়ে এই অযযায়ের ইমি টানয়বা।

str = "a quick brown fox jumps over the lazy dog"
for c in "abcdefghijklmnopqrstuvwxyz":
print(c, str.count(c))

প্রাগ্রা টট রান কয়র আউটপুট প্িয়খ বুেয়ি হয়ব প্কন এটট একটট িার প্রাগ্রা ।

অনুশীেনী:

• একটট প্রাগ্রা মলখয়ি হয়ব, যা ইনপুট মহয়সয়ব একটট মরিং প্নয়ব এবিং প্সই মরিং প্থয়ক প্ াট
িারটট মরিং তিমর কয়র ন্ডিয়ন মরন্ট করয়ব। রথ মরিংটট হয়ব প্কবল বড় হায়ির অক্ষরগুয়লা
মনয়ে, মিিীে মরিং হয়ব প্কবল প্ছাট হায়ির অক্ষরগুয়লা মনয়ে, িৃিীে মরিং হয়ব প্কবল অিংক
(digit) মনয়ে আর বাকী সবমকছু িিু থ মরিংয়ে
ট থাকয়ব। প্য ন, ইনপুট যমি Hello Test! 123
123, good. হে, িাহয়ল আউটপুট হয়ব এ ন –
• HT
• elloestgood
• 123123
• ! , .
• একটট প্রাগ্রা মলখয়ি হয়ব, যা ইনপুট মহয়সয়ব একটট মরিং প্নয়ব এবিং রথ ও মিিীে,
িৃিীে ও িিু থ, ট পঞ্চ ও ষষ্ঠ – এভায়ব পাশাপামশ িুটট অক্ষরয়ক অিল-বিল কয়র একটট
নিু ন মরিং তিমর করয়ব। প্য ন, ইনপুট যমি হে Bangladesh, িাহয়ল আউটপুট হয়ব
aBgnaledhs।
• প্কায়না শেয়ক উয়টা কয়র সািায়লও যমি আয়গর য়িাই শে পাওো যাে, িায়ক বয়ল
পযামলনয়রা ()। প্য ন: madam শেটটর অক্ষরগুয়লা উয়টা কয়র সািায়ল আ রা madam
পাই। িাই madam একটট পযামলনয়রা । আবার toyota শেটটর অক্ষরগুয়লা উয়টা কয়র
সািায়ল পাওো যাে atoyot, িাই এটট পযামলয়ন্ড্রা নে। এখন, একটট প্রাগ্রা মলখয়ি হয়ব,
প্যটট বযবহারকারীর কাছ প্থয়ক একটট মরিং ইনপুট প্নয়ব এবিং মরিংটট পযামলনয়রা কী না,
প্সটট বয়ল প্িয়ব।
পাইথয়নর প্েটা রাকিার –
মলস্ট ও টাপল
Published by subeen on April 14, 2018

আ রা বইয়ি এিক্ষি প্ছাট প্ছাট অয়নক প্রাগ্রা মলয়খমছ, প্যগুয়লা প্রাগ্রাম িংয়ের খুবই প্ মলক
মবষে। িয়ব একথাও টঠক প্য এসব মবষে সহি হয়লও আেয়ত্ব আনা খুব সহি প্কায়না বযাপার নে।
প্রাগ্রাম িং প্শখার শুরুর মিয়ক কয়েক াস রমিমিন একনাগায়ড় পাাঁি-ছে ঘণ্টা িিটা করা িরুরী।
আর প্রাগ্রাম িং প্যয়হিু একটা িক্ষিা, িাই বই পড়ার সয়ে সয়ে রযাকটটস করাটা িরুরী।

এখন আ রা যখন একটু বড় প্রাগ্রা মলখয়ি যায়বা, িখন আ ায়িরয়ক অয়নক প্েটা মনয়ে কাি
করয়ি হয়ব। আ রা প্িয়খমছ মকভায়ব একটট মলয়স্ট অয়নক প্েটা রাখা যাে। এই অযযায়ে মলস্ট
সিয়কট আ রা আয়রা িানয়বা। এছাড়া পাইথয়নর আয়রা মিনটট গুরুত্বপূি প্েটা ট রাকিার –
টাপল, প্সট ও মেকশনামর সিয়কটও িানয়বা। এগুয়লায়ক প্েটা রাকিার বয়ল প্কন? কারি
এগুয়লা বযবহার কয়র একটট মনমিটষ্ট উপায়ে বা মবনযায়স প্েটা রাখা যাে। যখনই আ রা একামযক
প্েটা মনয়ে কাি করয়বা, িখনই আ ায়ির প্েটা রাকিার বযবহার করার রয়োিন পড়য়ব। যমিও
এই বইয়ি আ রা খুব বড় প্কায়না প্রাগ্রা মলখয়বা না, মকন্তু এসব প্েটা রাকিার আেয়ত্ব থাকাটা
খুব িরকার, প্যন রয়োিয়নর স ে সটঠক প্েটা রাকিার বযবহার করয়ি প্কায়না প্বগ প্পয়ি না
হে।

মেস্ট (list)
মলস্ট প্যয়হিু আ রা পূয়বইট বযবহার কয়রমছ, িাই মলস্ট মনয়ে প্ মলক প্কায়না আয়লািনাে যায়বা না।
বরিং মলয়স্টর মবমভন্ন প্ থে ও িার বযবহার প্িখয়বা। আর এই বইয়ি আম কখয়না কখয়না ফািংশন,
কখয়না কখয়না প্ থে শেটট বযবহার করমছ। আ রা এই বইয়ের পরবমিট খয়ণ্ড ফািংশন ও প্ থয়ের
পাথকযট মবিামরি িানয়বা। এখন এগুয়লা মনয়ে াথা না ঘা ায়লও িলয়ব।

মলয়স্টর প্শয়ষ নিু ন উপািান প্যাগ করার িনয আ রা append() প্ থে বযবহার করয়বা।

>>> saarc = ["Bangladesh", "India", "Sri Lanka", "Pakistan", "Nepal",


"Bhutan"]
>>> print(saarc)
['Bangladesh', 'India', 'Sri Lanka', 'Pakistan', 'Nepal', 'Bhutan']
>>> saarc.append("Afganistan")
>>> print(saarc)
['Bangladesh', 'India', 'Sri Lanka', 'Pakistan', 'Nepal', 'Bhutan',
'Afganistan']
ওপয়রর উিাহরয়ি আ রা প্িখলা প্য সাকটভুি প্িশগুয়লার িামলকাে মকভায়ব আ রা একটট
নিু ন প্িশয়ক যুি করয়ি পামর।

আ রা যখন মরিংয়ে মবমভন্ন অপায়রশন িামলয়েমছ মকিংবা মবমভন্ন প্ থে বযবহার কয়রমছ, িখন মকন্তু
ূল মরিংয়ে প্কায়না পমরবিটন হে মন, বরিং নিু ন একটট মরিং তিমর হয়েয়ছ। মকন্তু মলয়স্টর প্বলাে ূল
মলস্ট পমরবমিটি হয়ে যাে। কারি মলস্ট হয়ে ম উয়টবল (mutable)। অথাৎ, ট মলস্ট ম উয়টশন বা
পমরবিটন করা যাে।

আ রা যমি িাই, প্কায়না মলয়স্টর উপািানগুয়লা একটট মনমিটষ্ট ক্রয় সািায়বা, িখন আ রা sort()
প্ থে বযবহার করয়ি পামর। প্য ন :

>>> saarc.sort()
>>> print(saarc)
['Afganistan', 'Bangladesh', 'Bhutan', 'India', 'Nepal', 'Pakistan', 'Sri
Lanka']
>>> li = [1, 3, 7, 2, 4, 6, 1]
>>> li.sort()
>>> print(li)
[1, 1, 2, 3, 4, 6, 7]
>>>

মলয়স্টর উপািানগুয়লা উয়টা ক্রয় মনয়ে আসয়ি িাইল reverse() প্ থে বযবহার করা যাে।

>>> li = [1, 2, 3, 4]
>>> li.reverse()
>>> print(li)
[4, 3, 2, 1]
>>> li = ["mango", "banana", "orange"]
>>> li.reverse()
>>> print(li)
['orange', 'banana', 'mango']
>>>

আ রা প্িয়খমছ প্য, append() বযবহার কয়র মলয়স্টর প্শয়ষ নিু ন উপািান প্যাগ করা যাে। মকন্তু
আ রা যমি িাই প্য মলয়স্টর শুরুয়ি মকিংবা প্যয়কায়না অবস্থায়ন আ রা একটট উপািান প্যাগ
করয়বা, িখন আ রা insert() প্ থে বযবহার করয়ি পামর। এই প্ থয়ে িুয়টা আগুটয় ন্ট পাঠায়ি
হয়ব, insert(index, item)। index হয়ে মলয়স্টর প্কান ইনয়েয়ক্স উপািানটট থাকয়ব আর item হয়ে
প্সই উপািান। মনয়ির উিাহরি প্িখয়লই মবষেটট পমরষ্কার হয়ব :

>>> fruits = ["mango", "banana", "orange"]


>>> fruits.insert(0, "apple")
>>> fruits
['apple', 'mango', 'banana', 'orange']
>>> fruits.insert(2, "coconut")
>>> fruits
['apple', 'mango', 'coconut', 'banana', 'orange']
>>>
আ রা যমি মলয়স্টর প্কায়না উপািান বাি মিয়ি িাই, িখন আ রা remove() প্ থে বযবহার করয়ি
পামর। প্যই উপািানটট আ রা বাি মিয়ি িাই, প্সটট remove() এর প্ভিয়র আগুটয় ন্ট আকায়র
পাঠায়ি হয়ব। আর যমি ওই উপািান মলয়স্ট না থায়ক িাহয়ল এরর প্ য়সি আসয়ব।

>>> fruits
['apple', 'mango', 'coconut', 'banana', 'orange']
>>> fruits.remove("coconut")
>>> fruits
['apple', 'mango', 'banana', 'orange']
>>> fruits.remove("pineapple")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>>

িাই আ রা িাইয়ল এখায়ন একটট শিট মিয়ে মিয়ি পামর, প্যন এরর প্ য়সি না আয়স।

>>> fruits
['apple', 'mango', 'banana', 'orange']
>>> item = "pineapple"
>>> if item in fruits:
... remove(item)
... else:
... print(item, "not in list")
...
pineapple not in list
>>>

এখন আ রা প্িখয়বা pop() প্ থয়ের বযবহার, প্যটট প্কায়না মলয়স্টর প্শষ উপািানটট মরটান কয়র,

আবার প্সই সয়ে মলস্ট প্থয়ক ুয়ছ প্ফয়ল।

>>> fruits
['apple', 'mango', 'banana', 'orange']
>>> item = fruits.pop()
>>> item
'orange'
>>> fruits
['apple', 'mango', 'banana']

আবার আ রা যমি িাইিা প্য, মলয়স্টর একটট মনমিট ষ্ট ইনয়েয়ক্সর উপািান মরটান করয়ব,
ট িাহয়ল
pop()-এর প্ভিয়র প্সই ইনয়েক্স মিয়ে মিয়লই হয়ব।

>>> fruits
['apple', 'mango', 'banana']
>>> item = fruits.pop(1)
>>> item
'mango'
>>> fruits
['apple', 'banana']
>>>

একটট মলয়স্টর প্শয়ষ যমি আয়রকটট মলস্ট যুি করয়ি িাই, িাহয়ল আ রা extend() প্ থে বযবহার
করয়ি পামর।

>>> li = [1, 2, 3]
>>> li2 = [3, 4, 5, 6]
>>> li.extend(li2)
>>> li
[1, 2, 3, 3, 4, 5, 6]

প্কায়না উপািান একটট মলয়স্ট কিবার আয়ছ, প্সটট আ রা প্িখয়ি পামর count() প্ থে বযবহার
কয়র।

>>> li = [1, 2, 3, 3, 4, 5, 6]
>>> li.count(3)
2
>>> li.count(5)
1
>>> li.count(10)
0
>>>

আ রা যমি মলস্ট প্থয়ক প্কায়না উপািান ুয়ছ প্ফলয়ি িাই, মকিংবা সিূি মলস্ট
ট ুয়ছ প্ফলয়ি িাই,
প্সটট আ রা করয়ি পামর del() ফািংশন বযবহার কয়র।

>>> li
[1, 2, 3, 3, 4, 5, 6]
>>> del(li[1])
>>> li
[1, 3, 3, 4, 5, 6]
>>> del(li[0])
>>> li
[3, 3, 4, 5, 6]
>>> del(li)
>>> li
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'li' is not defined

আ ায়ির কখনও কখনও এ ন মলস্ট তিমর করা লাগয়ি পায়র প্যখায়ন শুরুয়ি প্কায়না উপািান
থাকয়ব না, িায়ক বয়ল ফাাঁকা মলস্ট। li = [] এভায়ব আ রা ফাাঁকা মলস্ট তিমর করয়ি পামর।

>>> li = []
>>> for x in range(10):
... li.append(x)
...
>>> print(li)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
মলয়স্টর য়যয প্যাগ ও গুি অপায়রশন করা যাে। এগুয়লা করয়ল কী হে মনয়ির উিাহরয়ি আ রা
প্িখয়বা :

>>> li1 = [1, 2, 3]


>>> li2 = [4, 5, 6]
>>> li = li1 + li2
>>> print(li)
[1, 2, 3, 4, 5, 6]
>>>
>>> li1 = [1, 2, 3]
>>> li2 = li1 * 3
>>> print(li2)
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>>

একটট মলয়স্ট যমি একামযক মরিং থায়ক, িাহয়ল প্যগুয়লা যুি কয়র আ রা একটট মরিং তিমর করয়ি
পামর। আবার কী মিয়ে যুি করয়বা, প্সটটও আ রা মনযারন
ট কয়র মিয়ি পামর। প্য ন –

>>> li = ["a", "b", "c"]


>>> print(li)
['a', 'b', 'c']
>>> str = "".join(li)
>>> print(str)
abc
>>> str = ",".join(li)
>>> print(str)
a,b,c
>>> str = " - ".join(li)
>>> print(str)
a - b - c

মেস্ট কিমরদেনশনস (list comprehensions)

আ রা এখন একটট িার ন্ডিমনস প্িখয়বা, যায়ক বয়ল মলস্ট ক মরয়হনশনস। যরা যাক, আ ার
একটট মলস্ট আয়ছ প্যখায়ন মকছু সিংখযা আয়ছ। আম িাই আয়রকটট মলস্ট তিমর করয়ি, প্যখায়ন
রমিটট উপািান হয়ব আয়গর মলয়স্টর উপািায়নর মিগুি। িাহয়ল আ রা প্সটট করয়ি পামর এভায়ব :

>>> li = [1, 2, 3, 4]
>>> new_li = []
>>> for x in li:
... new_li.append(2 * x)
...
>>> print(new_li)
[2, 4, 6, 8]

মলস্ট ক মরয়হনশনস বযবহার কয়র আম কািটট খুব সিংয়ক্ষয়প করয়ি পামর :

>>> new_li = [2 * x for x in li]


>>> new_li
[2, 4, 6, 8]

আ ার যমি একটট সিংখযার মলস্ট থায়ক এবিং প্সই মলস্ট প্থয়ক আম প্কবল প্িাড় সিংখযাগুয়লা মনয়ে
একটট মলস্ট তিমর করয়ি িাই, প্সই কািটটও িনযও আম মলস্ট ক মরয়হনশনস বযবহার করয়ি
পামর। যমি মলস্ট ক মরয়হনশনস বযবহার না করিা , িাহয়ল এভায়ব প্কাে মলখিা :

>>> li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


>>> even_numbers = []
>>> for x in li:
... if x % 2 == 0:
... even_numbers.append(x)
...
>>> print(even_numbers)
[2, 4, 6, 8, 10]

আর মলস্ট ক মরয়হনশনস বযবহার কয়র কািটট করা যাে এভায়ব :

even_numbers = [x for x in range(1, 11) if x % 2 == 0]

অনুশীলনী : একটট মলস্ট প্িওো আয়ছ, প্যখায়ন একামযক সিংখযা আয়ছ। আয়রকটট মলস্ট তিমর
করয়ি হয়ব, প্যখায়ন রমিটট উপািান হয়ে আয়গর মলয়স্টর রমিটট উপািায়নর বগ।ট অথাৎ, ট [1, 2, 3,
4] প্িওো থাকয়ল [1, 4, 9, 16] তিমর করয়ি হয়ব। মলস্ট ক মরয়হনশনস বযবহার করার প্িষ্টা করয়ি
হয়ব।

িাপে (Tuple)
টাপল হয়ে পাইথয়নর একটট প্েটা রাকিার। এটট অয়নকটা মলয়স্টর য়িাই। িয়ব মলয়স্ট আ রা
প্য ন িৃিীে বন্ধনী বা স্কোর ব্র্যায়কট বযবহার করিা , টাপয়লর প্ক্ষয়ত্র রথ বন্ধনী (এয়ক
ইিংয়রিীয়ি বয়ল পযায়রয়েমসস) বযবহার করয়ি হয়ব।

>>> x = (1, 2, 3)
>>> type(x)
<class 'tuple'>

এখন একটট িার মবষে প্িমখ।

>>> x = 1, 2, 3
>>> type(x)
<class 'tuple'>
>>>
িার ায়ন রথ বন্ধনী না মিয়লও পাইথন x-প্ক একটট টাপল মহয়সয়বই মবয়বিনা করয়ছ। এখন
এভায়ব একটট উপািয়নর টাপল তিমর করা সম্ভব? মনয়ির প্কাে প্সই রয়শ্নর উত্তর প্িয়ব :

>>> x = 1
>>> type(x)
<class 'int'>
>>> x = 1,
>>> type(x)
<class 'tuple'>

আ ায়ির যমি কখয়না খামল টাপল তিমর করা লায়গ, িখন আ রা এভায়ব করয়ি পামর :

>>> t = ()
>>> type(x)
<class 'tuple'>

টাপয়লর রমিটট উপািান আ রা ইনয়েক্স বযবহার কয়র প্পয়ি পামর, আর এই ইনয়েক্সও 0 প্থয়ক
শুরু হে।

>>> tpl = (1, 2, 3)


>>> tpl[0]
1
>>> tpl[1]
2
>>> tpl[2]
3
>>> tpl[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: tuple index out of range

এখন, টাপল মকন্তু ম উয়টবল (mutable) নে। অথাৎ,ট এই প্য tpl নায় একটট টাপল তিমর করলা
যার মিনটট উপািান যথাক্রয় 1, 2 ও 3, এখন মকন্তু আম আর পমরবিটন করয়ি পারয়বা না, প্যটট
মলয়স্টর প্বলায়ি সম্ভব।

>>> li = [1, 2, 3]
>>> li
[1, 2, 3]
>>> li[0] = 5
>>> li
[5, 2, 3]
>>> tpl = (1, 2, 3)
>>> tpl
(1, 2, 3)
>>> tpl[0] = 5
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
আ রা অয়নকগুয়লা ভযামরয়েবল একসয়ে পযাক (pack) কয়র একটট টাপয়ল রাখয়ি পামর, আবার
একটট টাপলয়ক আনপযাক (unpack) কয়র িার উপািানগুয়লা মবমভন্ন ভযামরয়েবয়ল রাখা যাে।

>>> numbers = (10, 20, 30, 40)


>>> n1, n2, n3, n4 = numbers
>>> n1
10
>>> n2
20
>>> n3
30
>>> n4
40
>>> t = n3, n4
>>> t
(30, 40)
>>> type(t)
<class 'tuple'>

টাপয়লর প্ভিয়র আ রা মবমভন্ন ন্ডিমনস রাখয়ি পামর, এবিং এগুয়লার ওপর লুপও িালায়না যাে।

>>> items = (1, 2, 5.5, ["a", "b", "c"], ("apple", "mango"))


>>> for item in items:
... print(item, type(item))
...
1 <class 'int'>
2 <class 'int'>
5.5 <class 'float'>
['a', 'b', 'c'] <class 'list'>
('apple', 'mango') <class 'tuple'>
>>> items[3]
['a', 'b', 'c']
>>> items[3][0]
'a'
>>> items[4][1]
'mango'
>>> items[4]
('apple', 'mango')

এখন অয়নয়কর য়নই মনিেই রশ্ন িাগয়ছ, মলয়স্টর প্ভিয়রও মক মলস্ট রাখা যাে? হযাাঁ, িয়ব আম
আর প্সটট প্িখালা না, মনয়ি মনয়ি পরীক্ষা কয়র প্িখয়ি হয়ব।

টাপয়লর উপািানগুয়লা মিয়ে সহয়িই আ রা মলস্ট তিমর করয়ি পামর।

>>> tpl = (1, 2, 3)


>>> li = list(tpl)
>>> li
[1, 2, 3]
পাইথয়নর প্েটা রাকিার –
প্সট ও মেকশনামর
Published by subeen on April 13, 2018

প্সট আ রা অয়নয়কই পয়ড়মছ, না পড়য়ল নব -িশ প্শ্রিীর গমিি বই প্থয়ক পয়ড় মনয়ি হয়ব।
িয়ব এখনই প্সটট করা িরকার প্নই, প্সয়টর ূল যারিাগুয়লা আম আয়লািনা করয়বা।

প্সট হয়ে মবমভন্ন ন্ডিমনয়সর স ায়বশ, ইিংয়রন্ডিয়ি বলা যাে collection of items। প্য ন, আম যমি
বমল প্য আ ার প্টমবয়ল এখন আয়ছ একটট লযাপটপ, একটট প্ াবাইল, একটট গ্লাস, একটট প্নাটবুক,
একটট কল , িাহয়ল এগুয়লায়ক একটট প্সট বলা যাে। প্সয়টর প্ভিয়রর ন্ডিমনসগুয়লা মিিীে
বন্ধনীর প্ভিয়র মলখয়ি হে। মিিীে বন্ধনীয়ক ইিংয়রন্ডিয়ি বয়ল curly braces।

{laptop, cellphone, glass, notebook, pen}

আবার আ রা প্য ন বমল, সপ্ত প্শ্রিীর পাঠযবইয়ের একটট প্সট। প্সয়টর উপািানগুয়লা প্যয়কায়না
ক্রয় মলখা যাে। প্য ন, সপ্ত প্শ্রিীর পাঠযবইয়ের প্সয়ট আ রা বািংলা, ইিংয়রন্ডি, গমিি,
স ািমবজ্ঞান … এভায়ব মলখয়ি পামর, মকিংবা, ইিংয়রন্ডি, বািংলা, স ািমবজ্ঞান, গমিি … এভায়বও
প্লখা যাে, িায়ি প্কায়না স সযা প্নই, প্সট একই থাকয়ছ। িয়ব প্সয়টর প্কায়না উপািান
একামযকবার প্লখা যাে না। আ ার প্টমবয়ল যমি িুটট মকিংবা আয়রা প্বমশ কল থাকয়িা, িাহয়লও
আম প্সয়টর য়যয pen একবারই মলখিা ।

িুয়টা প্সয়টর সবগুয়লা উপািান ম য়ল নিু ন প্সট তিমর করা যাে। এটটয়ক বয়ল ইউমনেন (union)
করা, ায়ন, ইউমনেন এখায়ন একটট অপায়রশন। প্য ন : A = {1, 2, 3, 4, 5} ও B = {2, 4, 6, 8, 10}
িুটট প্সট হয়ল A ইউমনেন B হয়ব : {1, 2, 3, 4, 5, 6, 8, 10}। আবার িুয়টা প্সয়টর সাযারন
উপািানগুয়লা অথাৎ ট প্যসব উপািান িুয়টা প্সয়টই আয়ছ, িায়িরয়ক মনয়ে একটট নিু ন প্সট তিমর
করা যাে। প্য অপায়রশয়নর াযযয় এটট করা হে, িায়ক বয়ল ইন্টারয়সকশন (intersection)। A ও
B-এর ইন্টারয়সকশন করয়ল আ রা পায়বা : {2, 4}।

পাইথয়ন প্সট মনয়ে কাি করার িনয প্সট নায় ই একটট প্েটা রাকিার আয়ছ। প্য ন আ রা
একটট ফাাঁকা প্সট তিমর করয়ি পামর এভায়ব : A = set()। মনয়ি উিাহরি প্িওো হয়লা :

>>> A = set()
>>> A
set()
>>> type(A)
<class 'set'>
আবার আ ায়ির কায়ছ যমি ইমি য়যযই মকছু উপািান থায়ক, প্সগুয়লা প্থয়কও প্সট তিমর করা যাে।
প্য ন :

>>> items = {"pen", "laptop", "cellphone"}


>>> items
{'cellphone', 'pen', 'laptop'}
>>> type(items)
<class 'set'>
>>>

আবার আ ায়ির কায়ছ যমি প্কায়না মলস্ট বা টাপল থায়ক, প্সই মলস্ট বা টাপল প্থয়কও প্সট তিমর
করা যাে।

>>> li = [1, 2, 3, 4]
>>> tpl = (1, 2, 3)
>>> A = set(li)
>>> A
{1, 2, 3, 4}
>>> B = set(tpl)
>>> B
{1, 2, 3}
>>> type(A)
<class 'set'>
>>> type(B)
<class 'set'>
>>>

মরিং প্থয়কও প্সট তিমর করা যাে, প্স প্ক্ষয়ত্র মরিংয়ের রমিটট অক্ষর প্সয়টর একটট উপািান হয়ব।
আর প্সয়টর প্ক্ষয়ত্র মকন্তু একটট ন্ডিমনস য়ন রাখয়ি হয়ব, প্সয়টর উপািান আয়গ-পয়র থাকয়ি
পায়র, প্কায়না ক্র (order) অনুসরি করয়ি হে না।

>>> A = set("Bangladesh")
>>> A
{'e', 'g', 'h', 'a', 's', 'l', 'B', 'd', 'n'}
>>> type(A)
<class 'set'>
>>> B = set("Sri Lanka")
>>> B
{'i', 'k', 'L', ' ', 'r', 'a', 'S', 'n'}
>>> type(B)
<class 'set'>
>>>

প্কায়না ন্ডিমনস একটট প্সয়টর সিসয মক না, প্সটট আ রা প্বর করয়ি পামর এভায়ব :

>>> A = {1, 2, 3}
>>> 1 in A
True
>>> 2 in A
True
>>> 5 in A
False

এখন, আ ার যমি িুটট প্সট থায়ক, আম প্সই িুটট প্সয়টর ওপর মবমভন্ন অপায়রশন িালায়ি পামর।
আ রা যমি িাই প্য, A ও B িুটট প্সয়টর সাযারি উপািানগুয়লা মনয়ে একটট প্সট C তিমর করয়বা,
িাহয়ল আ রা মলখয়ি পামর : C = A & B ( ায়ন ইন্টারয়সকশন করা)। আর আ রা যমি ইউমনেন
করয়ি িাই, অথাৎ,ট A মকিংবা B প্যয়কায়না একটট প্সয়টর সিসয (প্সসব সিসয আবার িুয়টা প্সয়টর
য়যযও থাকয়ি পায়র), িাহয়ল মলখয়বা C = A | B। আবার আ রা যমি িাই, A মকিংবা B, প্যয়কায়না
একটট প্সয়ট আয়ছ মকন্তু একই সয়ে িুটট প্সয়ট প্নই, প্সসব সিসয প্পয়ি, িখন মলখয়বা C = A ^ B।
আর যমি এ ন হে প্য, আ রা িাই প্যসব সিসয A প্সয়ট আয়ছ মকন্তু B প্সয়ট প্নই, িায়ির পাওো
যায়ব এভায়ব : C = A – B। মনয়ির উিাহরি প্িখয়ল আ রা বুেয়ি পারয়বা :

>>> A = {1, 2, 3, 4, 5}
>>> B = {2, 4, 6, 8}
>>> C = A & B
>>> C
{2, 4}
>>> C = A | B
>>> C
{1, 2, 3, 4, 5, 6, 8}
>>> C = A ^ B
>>> C
{1, 3, 5, 6, 8}
>>> C = A - B
>>> C
{1, 3, 5}
>>> C = B - A
>>> C
{8, 6}

মডকশনামি (Dictionary)
আ ায়ির যমি এখন একটট কাি করয়ি হে প্য আ রা একটট ক্লায়সর সকল মশক্ষাথীর বািংলা
পরীক্ষাে রাপ্ত নাম্বার রাখয়বা, িাহয়ল আ রা প্সটট মকভায়ব করয়ি পামর? আ রা িাহয়ল একটট
মলস্ট বযবহার করয়ি পামর, প্যখায়ন মলয়স্টর রথ উপািান হয়ব ক্লায়সর প্যই মশক্ষাথীর প্রাল নম্বর 1,
িার পরীক্ষার নম্বর, মিিীে উপািান হয়ব, প্যই মশক্ষাথীর প্রাল নম্বর 2, িার রাপ্ত নম্বর, এরক ।
প্য ন আ রা এভায়ব মলয়স্ট রাখয়ি পামর :

marks = [78, 72, 68, 80, 63, 75]

িাহয়ল যার প্রাল নম্বর 3, িার বািংলা পরীক্ষাে রাপ্ত নম্বর হয়ব marks[2]। মনয়ির প্রাগ্রা টট একটট
ফাইয়ল প্সভ কয়র রান করয়ি হয়ব :

marks = [77, 76, 65, 78, 62, 64, 60, 77, 75, 79]
roll = input("Please enter your roll number: ")

print("Your marks is", marks[int(roll)-1])

রান করয়ল, আউটপুট আসয়ব এরক :

$ python marks.py
Please enter your roll number: 4
Your marks is 78

আবার, আ ায়ির যমি এরক করয়ি হি প্য, বািংলা ও ইিংয়রন্ডি, িুটট মবষয়ের পরীক্ষাে রাপ্ত নম্বর
রাখয়ি হয়ব। িখন মকভায়ব করয়বা? িখন আ রা রমি মশক্ষাথীর িনয একটট মলস্ট রাখয়ি পামর,
প্যখায়ন রথ উপািান হয়ে বািংলা ও মিিীে উপািান হয়ে ইিংয়রন্ডি পরীক্ষাে রাপ্ত নম্বর। আর
সকল মশক্ষাথীর নম্বয়রর মলস্টগুয়লায়ক প্রাল নম্বয়রর ক্র (ক্র ায়ন মসমরোল) অনুযােী সািায়ি
পামর। প্য ন :

>>> marks = [[74, 73], [70, 75], [68, 72], [73, 73]]
>>> marks[0]
[74, 73]
>>> marks[1]
[70, 75]
>>> marks[1][0]
70
>>> marks[1][1]
75

এভায়ব প্কাে মলখার স সযা হয়ে, অয়নকমকছু আ ায়িরয়ক য়ন রাখয়ি হয়ব। প্য ন, আম যমি
িানয়ি িাই প্য রামফ ইিংয়রন্ডি পরীক্ষাে কি নম্বর প্পয়েয়ছ, িখন আ ায়ির িানয়ি হয়ব প্য রামফর
প্রাল নম্বর কি, আর মলয়স্ট ইিংয়রন্ডি কি নম্বর অবস্থায়ন আয়ছ, প্সটটও িানা থাকয়ি হয়ব। প্িা এই
স সযা প্থয়ক উিার পাওোর িনয পাইথয়ন একটট ি ৎকার প্েটা রাকিার আয়ছ, যার না
মেকশনামর।

মেকশনামরয়ি প্েটা থায়ক প্িাড়াে প্িাড়াে। প্িাড়ার রথ ন্ডিমনসটটয়ক বয়ল মক (key) আর


মিিীে ন্ডিমনসটটয়ক বয়ল ভযালু (value)। প্কায়না প্েটা প্পয়ি হয়ল, আ ায়ির মক (key) িানয়ি হে,
িাহয়ল আ রা ভযালু প্থয়ক প্েটা উিার করয়ি পামর। প্য ন, আম যমি বািংলা পরীক্ষার নম্বরগুয়লা
মেকশনামরয়ি রামখ, িাহয়ল এভায়ব রাখয়ি পামর :

>>> marks = {1: 77, 2: 76, 5: 62, 4: 78, 3: 65}


>>> type(marks)
<class 'dict'>
>>> marks[3]
65
>>> print("Marks of roll number 4 is", marks[4])
Marks of roll number 4 is 78
>>>
আ রা প্িখয়ি প্পলা , মকভায়ব মেকশনামর বযবহার করয়ি হে। মেকশনামরর টাইপ হয়ে dict
প্সটটও প্িখলা । আবার প্কায়না মক (key) িানয়ল ভযালু মকভায়ব প্পয়ি হে, প্সটটও প্িখলা ।
আয়রকটট মবষে প্খোল করয়ি হয়ব প্য, মেকশনামরয়ি আ ায়ির মকন্তু প্কায়না ক্র অনুসরি
করয়ি হে না। আয়রকটট িার বযাপার হয়ে, প্রাল নম্বর যমি 1 প্থয়ক শুরু না হয়ে 1001 প্থয়ক
শুরু হয়িা, িাহয়লও প্কায়না স সযা মছল না।

>>> marks = {1005: 75, 1003: 72, 1002: 70, 1001: 75, 1004: 77}
>>> marks[1003]
72

আবার এ ন যমি হে, প্রাল নম্বরটট আসয়ল সিংখযা নে, িাহয়লও স সযা প্নই। প্য ন –

>>> marks = {"DH2001": 75, "DH1777": 72, "KH2050": 70}


>>> marks["DH2001"]
75

আ রা িাইয়ল একটট খামল মেকশনামর (প্যটটয়ি প্কায়না প্েটা প্নই) তিমর করয়ি পামর। কারি,
মেকশনামর তিমর করার পয়রও এয়ি নিু ন মক-ভযালু প্যাগ করা যাে।

>>> dt = {}
>>> dt
{}
>>> print(dt)
{}
>>> type(dt)
<class 'dict'>
>>> dt[1] = "one"
>>> print(dt)
{1: 'one'}
>>> dt[2] = "two"
>>> print(dt)
{1: 'one', 2: 'two'}

প্কায়না মক (key) যমি মেকশনামরয়ি না থায়ক, িাহয়ল প্সটট একয়সস করার স ে পাইথন এরর
প্িয়ব।

>>> dt = {"a": "A", "b": "B", "c": "C"}


>>> dt["a"]
'A'
>>> dt["b"]
'B'
>>> dt["c"]
'C'
>>> dt["d"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'd'
>>> dt["d"] = "D"
>>> dt["d"]
'D'

মেকশনামরয়ি ম উয়টবল নে, এরক প্যয়কায়না মকছু মক (key) মহয়সয়ব বযবহার করা যাে। প্য ন:
সিংখযা, মরিং, টাপল। মকন্তু মলস্ট, প্সট বযবহার করা যায়ব না, কারি মলস্ট প্িা ম উয়টবল, ায়ন
পমরবিটন করা যাে। প্সটও প্ি মন, ম উয়টবল হওোে মেকশনামরর মক মহয়সয়ব বযবহার করা যাে
না। মনয়ির উিাহরয়ি আ রা এগুয়লা প্িখব।

>>> dt = {"a": "A", "b": "B", "c": "C"}


>>> dt[(1, 2, 3)] = "tuple"
>>> dt
{(1, 2, 3): 'tuple', 'b': 'B', 'd': 'D', 'c': 'C', 'a': 'A'}
>>>
>>> li = [1, 2, 3]
>>> dt[li] = "list"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>>
>>> s = {1, 2, 3, 4}
>>> s
{1, 2, 3, 4}
>>> type(s)
<class 'set'>
>>> dt[s] = "set"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'set'
>>>

এখন পযন্ত
ট মেকশনামরর প্যস ি উিাহরি প্িওো হয়েয়ছ প্সগুয়লা মনয়ি মনয়ি িিটা করয়ি হয়ব।
এছাড়া য়ন প্কায়না রশ্ন িাগয়ল প্কাে মলয়খ প্সই রয়শ্নর উত্তর খুয়াঁ ি প্বর করার প্িষ্টা করয়ি হয়ব।

অনুশীেনী :

• আম যমি পরীক্ষার ফল রাখার িনয একটট মেকশনামর বযবহার কমর আর প্সখায়ন মক (key) মহয়সয়ব
মশক্ষাথীর না বযবহার কমর, িাহয়ল কী রক স সযা সৃটষ্ট হয়ি পায়র?আ রা মকন্তু এখন মেকশনামর
বযবহার কয়র মবমভন্ন মশক্ষাথীর বািংলা ও ইিংয়রন্ডি পরীক্ষার নম্বর এভায়ব রাখয়ি পামর :

>>> marks = {"DH1001": {"Bangla": 74, "English": 73}, "DH1002": {"Bangla":


70, "English": 75}}
>>> print(marks["DH1001"])
{'Bangla': 74, 'English': 73}
>>> print(marks["DH1001"]["English"])
73
>>> marks["DH1003"] = {"Bangla": 68, "English": 72}
>>> print(marks)
{'DH1003': {'Bangla': 68, 'English': 72}, 'DH1002': {'Bangla': 70, 'English':
75}, 'DH1001': {'Bangla': 74, 'English': 73}}
>>> print(marks["DH1003"])
{'Bangla': 68, 'English': 72}
>>> print(marks["DH1003"]["Bangla"])
68

এখন মকন্তু প্কাে মলখয়ি ও বুেয়ি অয়নক সহি হয়ে প্গল। আ ায়ির প্রাল নম্বর িানা থাকয়ল
মশক্ষাথীর সব মবষয়ের নম্বর প্িখায়ি পামর। আবার মবষয়ের না িানা থাকয়ল প্সই মবষয়ে রাপ্ত
নম্বরও প্িখায়না যাে সহয়িই।

প্রাগ্রাম িং হয়ে িিটার মবষে, আর িাই আ রা এখন মেকশনামর বযবহায়রর আয়রা একটট উিাহরি
প্িখয়বা। আম যমি বািংলায়িয়শর সবগুয়লা মবভাগ সিয়কট মকছু িথয, প্য ন, মবভায়গর কেটট
প্িলা, উপয়িলা ও ইউমনেন রয়েয়ছ, এগুয়লা মনয়ে কাি করয়ি িাই, িাহয়ল পাইথয়ন মেকশনামর
হয়ে আিশ প্েটা ট রাকিার। উইমকমপমেো প্থয়ক আম মনয়ির িথয সিংগ্রহ করলা –
এখন আম ওপয়রর িথযগুয়লা একটট মেকশনামরয়ি রাখয়ি পামর :

>>> bd_division_info = {}
>>> bd_division_info["Barishal"] = {"district": 6, "upazila": 39, "union":
333}
>>> bd_division_info["Chittagong"] = {"district": 11, "upazila": 97, "union":
336}
>>> bd_division_info["Dhaka"] = {"district": 13, "upazila": 93, "union":
1833}
>>> bd_division_info["Khulna"] = {"district": 10, "upazila": 59, "union":
270}
>>> bd_division_info["Mymensingh"] = {"district": 4, "upazila": 34, "union":
350}
>>> bd_division_info["Rajshahi"] = {"district": 8, "upazila": 70, "union":
558}
>>> bd_division_info["Rangpur"] = {"district": 8, "upazila": 58, "union":
536}
>>> bd_division_info["Sylhet"] = {"district": 4, "upazila": 38, "union": 334}
>>>
>>> print(bd_division_info)
{'Sylhet': {'upazila': 38, 'union': 334, 'district': 4}, 'Barishal':
{'upazila': 39, 'union': 333, 'district': 6}, 'Rangpur': {'upazila': 58,
'union': 536, 'district': 8}, 'Rajshahi': {'upazila': 70, 'union': 558,
'district': 8}, 'Chittagong': {'upazila': 97, 'union': 336, 'district': 11},
'Mymensingh': {'upazila': 34, 'union': 350, 'district': 4}, 'Dhaka':
{'upazila': 93, 'union': 1833, 'district': 13}, 'Khulna': {'upazila': 59,
'union': 270, 'district': 10}}
>>>

এখন আম যমি িাই সবগুয়লা মবভায়গর না মরন্ট করয়বা, িাহয়ল কী করয়বা? মবভায়গর না গুয়লা
মেকশনামরর মক (key) মহয়সয়ব বযবহার করা হয়েয়ছ। প্সগুয়লা পাওোর িনয পাইথয়ন একটট প্ থে
রয়েয়ছ .keys()।

>>> divisions = bd_division_info.keys()


>>> print(divisions)
dict_keys(['Sylhet', 'Barishal', 'Rangpur', 'Rajshahi', 'Chittagong',
'Mymensingh', 'Dhaka', 'Khulna'])

আ রা িাইয়ল এই মকগুয়লার উপর লুপ িামলয়ে এয়ক এয়ক মরন্ট করয়ি পামর:

>>> for division in divisions:


... print("Division", division)
...
Division Sylhet
Division Barishal
Division Rangpur
Division Rajshahi
Division Chittagong
Division Mymensingh
Division Dhaka
Division Khulna
এখন যমি আ রা িাই, রমিটট মবভায়গ কেটট উপয়িলা রয়েয়ছ, প্সই িথয মরন্ট করয়বা, িাহয়ল
আ রা লুপ িামলয়ে কািটট করয়ি পামর :

>>> for division in divisions:


... print(division, "upazila", bd_division_info[division]["upazila"])
...
Sylhet upazila 38
Barishal upazila 39
Rangpur upazila 58
Rajshahi upazila 70
Chittagong upazila 97
Mymensingh upazila 34
Dhaka upazila 93
Khulna upazila 59
>>>

আ রা যমি সরাসমর মেকশনামরর উপর লুপ িালাই, িাহয়ল প্কবল মক-গুয়লা পায়বা:

>>> for item in bd_district_info:


... print(item)
...
Sylhet
Barishal
Rangpur
Rajshahi
Chittagong
Mymensingh
Dhaka
Khulna

আ রা যমি মক ও ভযালু িুয়টাই প্পয়ি িাই, িাহয়ল আ ায়ির হায়ি িুটট পিমি রয়েয়ছ। মনয়ির প্কাে
প্িখয়লই বুেয়ি পারা যায়ব :

রথ পিমি:

>>> for key in bd_district_info:


... print(key)
... print(bd_district_info[key])
...
Sylhet
{'upazila': 38, 'union': 334, 'district': 4}
Barishal
{'upazila': 39, 'union': 333, 'district': 6}
Rangpur
{'upazila': 58, 'union': 536, 'district': 8}
Rajshahi
{'upazila': 70, 'union': 558, 'district': 8}
Chittagong
{'upazila': 97, 'union': 336, 'district': 11}
Mymensingh
{'upazila': 34, 'union': 350, 'district': 4}
Dhaka
{'upazila': 93, 'union': 1833, 'district': 13}
Khulna
{'upazila': 59, 'union': 270, 'district': 10}

মিিীে পিমি:

>>> for key, value in bd_district_info.items():


... print(key)
... print(value)
...
Sylhet
{'upazila': 38, 'union': 334, 'district': 4}
Barishal
{'upazila': 39, 'union': 333, 'district': 6}
Rangpur
{'upazila': 58, 'union': 536, 'district': 8}
Rajshahi
{'upazila': 70, 'union': 558, 'district': 8}
Chittagong
{'upazila': 97, 'union': 336, 'district': 11}
Mymensingh
{'upazila': 34, 'union': 350, 'district': 4}
Dhaka
{'upazila': 93, 'union': 1833, 'district': 13}
Khulna
{'upazila': 59, 'union': 270, 'district': 10}

অনুশীেনী

• bd_district_info মেকশনামর বযবহার কয়র, বািংলায়িয়শ প্ াট কেটট প্িলা, উপয়িলা ও ইউমনেন


রয়েয়ছ, প্সই িথয প্বর কয়র মরন্ট করয়ি হয়ব।

আ রা এিক্ষি পাইথয়ন প্যসব প্েটা রাকিার তিমর কয়র প্িওো আয়ছ, প্সগুয়লার বযবহার
প্িখলা । কখন প্কান প্েটা রাকিার বযবহার করয়ি হয়ব, প্সটট মনয়ি প্থয়ক বুয়ে মনয়ি হয়ব। আর
যখন আ ায়ির অমভজ্ঞিা আয়রা বাড়য়ব, িখন আ রা প্েটা রাকিারগুয়লা আয়রা প্বমশ
ভায়লাভায়ব বযবহার করয়ি পারয়বা। অমভজ্ঞিা বাড়ায়নার উপাে হয়ে অনুশীলন করা ও নিু ন
নিু ন প্রাগ্রা করা। এিনয স ে ও শ্র প্িওো লায়গ। নিু নয়ির এগুয়লা মশখয়ি অয়নক স ে
লায়গ, িাই প্কায়না মকছু না পারয়ল মিমন্তি মকিংবা হিাশ হওোর মকছু প্নই, প্িষ্টা িামলয়ে প্যয়ি হয়ব।
মেউল ও পযায়কি
Published by subeen on April 12, 2018

প্রাগ্রা প্লখার স ে আ ায়ির অয়নক রক কাি করয়ি হয়ি পায়র। কী কী কাি করয়ি হয়ব, িা
মনভটর কয়র আ রা আসয়ল প্রাগ্রা মিয়ে কী করয়ি িান্ডে িার উপয়র। প্য ন, আ রা গামিমিক
স সযার স াযায়নর িনয প্রাগ্রা মলখয়ি পামর, অপায়রটটিং মসয়স্টয় র সয়ে কাি করার িনয
প্রাগ্রা মলখয়ি পামর, ইন্টারয়নয়ট যুি হয়ে প্েটা আিান-রিায়নর িনয প্রাগ্রা মলখয়ি পামর,
ছমব-মভমেও ইিযামি মনয়ে কাি করয়ি পামর, প্কায়না প্গ স তিমর করয়ি পামর। এরক কি কী প্য
করা যাে প্রাগ্রাম িং কয়র, িার মহয়সব প্নই। এখন প্রাগ্রা ারয়ির কাি সহি করার িনয অয়নক
মেউল তিমর কয়র প্িওো আয়ছ। আবার একামযক মেউল একসয়ে কয়র পযায়কিও তিমর কয়র
প্িওো আয়ছ। মেউলগুয়লায়ি থায়ক মবমভন্ন প্েটা, ফািংশন ও ক্লাস (class)। ক্লাস কী ন্ডিমনস, প্সটট
আ রা এই বইয়ি পয়র মশখয়বা।

আ রা প্য মবমভন্ন প্রাগ্রায় print(), input(), type(), sum() ইিযামি ফািংশন বযবহার কয়রমছ,
প্সগুয়লা মকন্তু আ রা মনয়িরা তিমর কমর মন, বযবহার কয়রমছ প্কবল। এগুয়লায়ক মবটইন (builtin)
ফািংশন বয়ল। মবটইন শয়ের অথ হয়ে, ট প্যগুয়লা প্কায়নামকছুর সয়ে প্িওো থায়ক। প্য ন,
প্টমলমভশন অন-অফ করার িনয মবটইন সুইি প্িওো থায়ক। ওই ফািংশনগুয়লা তিমর করা না
থাকয়ল আ ায়ির মনয়িয়ির প্সগুয়লা তিমর করা লাগি এবিং রমিবার আ ায়ির প্বশ খামনকটা
স ে বযাে হয়িা। ফািংশনগুয়লা ইমি য়যয তিমর করা আয়ছ builtins না ক মেউয়ল। পাইথন
ইন্টারয়রটার িালু করয়ল এই মেউল আপনাআপমন িয়ল আয়স, নইয়ল আ ায়িরয়ক আলািাভায়ব
ই য়পাটট (import) করয়ি হয়িা। কায়রা যমি িানয়ি ইয়ে কয়র প্য, এই মেউয়ল কী কী আয়ছ,
িাহয়ল প্সটট িানার িনয পাইথন ইন্টারয়রটার িালু কয়র মনয়ির িুই লাইন মলখয়ি হয়ব :

>>> import builtins


>>> dir(builtins)

dir() মনয়িও একটট মবটইন ফািংশন, যার প্ভিয়র প্কায়না মেউয়লর না আগুটয় ন্ট মহয়সয়ব
পাঠায়ল ওই মেউয়ল কী কী প্গ্লাবাল ভযামরয়েবল, ফািংশন, ক্লাস ইিযামি আয়ছ এগুয়লা প্স একটট
মলয়স্ট মরটান কয়র।

স্টযান্ডাডগ োইদেমি (Standard Library)


মবটইন ফািংশন ছাড়াও মকন্তু আ রা মবমভন্ন মেউল ই য়পাটট কয়র বযবহার কয়রমছ। প্য ন, math
মেউল ই য়পাটট কয়রমছ প্ মলক সিংখযা প্বর করার প্রাগ্রা প্লখার স ে। এিনয আ ায়ির
মলখয়ি হয়েয়ছ, import math। এই মেউলটট হয়ে পাইথয়নর স্টযািােট লাইয়ব্র্মরর একটট
মেউল। এখায়ন মবমভন্ন গামিমিক ফািংশন তিমর কয়র প্িওো আয়ছ, প্সই সয়ে মকছু গামিমিক
য‍্রুবক (constant)-ও সিংজ্ঞামেি কয়র প্িওো আয়ছ। মকছু উিাহরি প্িমখ :
>>> import math
>>> math.pi
3.141592653589793
>>> math.pow(2, 3)
8.0
>>> math.pow(3, 2)
9.0
>>> math.sqrt(25)
5.0
>>> math.floor(5.2)
5
>>> math.ceil(5.2)
6

math মেউয়লর কী কী ফািংশন আয়ছ এবিং প্সগুয়লার কাি কী, িা পুয়রাপুমরভায়ব িানয়ি হয়ল
েকুয় য়ন্টশন প্িখয়ি হয়ব। পাইথয়নর ওয়েবসাইয়ট েকুয় য়ন্টশন প্িওো আয়ছ
(https://docs.python.org/3/library/math.html\) আবার িাইয়ল প্সটট োউনয়লােও কয়র প্ফলা
যাে। math ছাড়াও আ রা ইমিপূয়ব পাইথন
ট মিয়ে প্রাগ্রাম িং প্শখা বইয়ি turtle, random, timeit
ইিযামি মেউল বযবহার কয়রমছ। আয়রা কয়েকটট উিাহরি প্িখাই।

মিন-িামরখ মনয়ে কাি-ক করার ট িনয আয়ছ datetime মেউল। এই মেউয়লর য়যয আবার
মবমভন্ন ক্লাস আয়ছ। আ রা প্সই ক্লায়সর মবমভন্ন প্ থে বযবহার করয়ি পামর। এখন আ রা যমি
আিয়কর িামরখ িানয়ি িাই, িাহয়ল datetime মেউয়লর date ক্লায়সর today() প্ থেয়ক কল
করয়ি হয়ব।

>>> import datetime


>>> today = datetime.date.today()
>>> print(today)
2017-06-10

আবার আ রা যমি আিয়কর িামরখ ও বিট ান স ে িানয়ি িাই, িখন datetime মেউয়লর
datetime ক্লায়সর today() প্ থে কল করয়ি হয়ব।

>>> import datetime


>>> today = datetime.datetime.today()
>>> print(today)
2017-06-10 15:51:28.951772

ওপয়রর িুটট উিাহরয়ি আ রা প্িখলা রথয় মেউয়লর না , িারপয়র একটট েট, িারপয়র
ক্লায়সর না , িারপয়র একটট েট ও সবয়শয়ষ ফািংশয়নর না মলয়খ আ রা ফািংশনটট কল করমছ।
আবার মেউলটট যমি প্কায়না পযায়কয়ির য়যয থাকি, িাহয়ল রথয় প্সই পযায়কয়ির না মলয়খ
েট মিয়ি হয়িা এবিং িারপয়র মেউয়লর না , ক্লায়সর না , ফািংশয়নর না ইিযামি মলখয়ি হয়িা।
অথাৎ,ট package_name.module_name.function_name() আর যমি মেউয়ল প্কায়না ক্লায়সর
প্ থেয়ক কল কমর, িাহয়ল package_name.module_name.class_name.function_name()।
আয়গর উিাহরয়ি আ রা িাইয়ল datetime মেউল প্থয়ক প্কবল datetime ক্লাসটট ই য়পাটট
করয়ি পারিা । িখন datetime.today() মলখয়লই কাি হয়ে যায়ব।

>>> from datetime import datetime


>>> d = datetime.today()
>>> print(d)
2017-06-10 17:08:56.428959

আ রা যমি আ ায়ির প্রাগ্রা প্থয়ক প্কায়না ওয়েবসাইট, ওয়েব ব্র্াউিায়রর াযযয় প্িখায়ি িাই,
িার িনযও ফািংশন তিমর কয়র প্িওো আয়ছ webbrowser মেউয়ল।

>>> import webbrowser


>>> url = "http://subeen.com"
>>> webbrowser.open(url)
True

webbrowser মেউয়লর open() ফািংশনটট বযবহার কয়র আ রা ওয়েবসাইট ওয়পন করয়ি পামর।
এখন webbrowser শেটট পুয়রাটা বার বার টাইপ করা অয়নয়কর কায়ছ মবরন্ডিকর লাগয়ি পায়র।
িার িনয একটট শটট কাটও আয়ছ, যায়ক বয়ল এমলোমসিং (aliasing)। মনয়ির উিাহরি প্িখয়লই
বুেয়ি পারয়বা :

>>> import webbrowser as wb


>>> url = "http://subeen.com"
>>> wb.open(url)
True

পাইথয়নর স্টযািােট লাইয়ব্র্মরয়ি কী কী মেউল ও পযায়কি আয়ছ, িা িানা যায়ব এখায়ন


: https://docs.python.org/3/library/index.html। অবসর স য়ে এগুয়লা মনয়ে পড়ায়শানা করা
প্যয়ি পায়র, িয়ব িাড়াহুয়ড়া প্নই। আর সব লাইয়ব্র্মরর বযবহারও প্শখার বা ুখস্থ করার িরকার
প্নই। স য়ের সয়ে রয়োিন য়িা আ রা এ মনয়িই মশয়খ প্নয়বা।

আ ায়ির ায়ে- য়যয এ ন কাি করার িরকার পরয়ব, প্যগুয়লার িনয প্কউ একিন মেউল বা
পযায়কি তিমর কয়র প্রয়খয়ছ, মকন্তু প্সগুয়লা পাইথয়নর স্টযািােট লাইয়ব্র্মর অন্তভুি
ট নে। এগুয়লা
বয়ল থােট পাটটট পযায়কি বা মেউল। এগুয়লা বযবহার করয়ি হয়ল কম্পিউটায়র আলািাভায়ব
ইনস্টল করয়ি হে। আ ায়ির িরকার য়িা আ রা প্সগুয়লা ইনস্টল কয়র মনয়বা। এই বইয়ি
পরবমিট অিংয়শ আ রা প্িখয়বা, মকভায়ব থােট পাটটট মেউল ইনস্টল ও বযবহার করয়ি হে।

নিু ন িমডউে তিমি কিা


পাইথন মিয়ে প্রাগ্রাম িং প্শখা বইয়ের প্শষ উিাহরয়ি আ রা প্িয়খমছলা , মকভায়ব মফয়বানান্ডচ্চ
সিংখযা প্বর করয়ি হে। n-ি মফয়বানান্ডচ্চ সিংখযা প্বর করার িনয আ রা এখন একটট ফািংশন
মলয়খ প্ফমল।
def find_fib(n):
if n <= 2:
return 1
fib_x, fib_next = 1, 1

i = 3
while i <= n:
i += 1
fib_x, fib_next = fib_next, fib_x + fib_next

return fib_next

for x in range(1, 11):


print(find_fib(x))

আ রা find_fib() নায় একটট ফািংশন তিমর করলা , প্যটটর পযারাম টার হয়ে n এবিং ফািংশনটট n-
ি মফয়বানান্ডচ্চ সিংখযা মরটান কয়র।
ট িারপর একটট লুপ িামলয়ে আ রা ওই ফািংশন কল কয়র রথ
িশটট মফয়বানান্ডচ্চ সিংখযা মরন্ট করলা । আউটপুট আসয়ব মনয়ির য়িা – রথ িশটট মফয়বানান্ডচ্চ
সিংখযা :

$ python fibo.py
1
1
2
3
5
8
13
21
34
55

অনুশীলনী :

• ওপয়রর প্রাগ্রায় return fib_next না মলয়খ return fib_x মলখয়ল কী স সযা হয়িা? এটট মনয়ে একটু
মিন্তাভাবনা করয়ি হয়ব।
• একটট ফািংশন মলখয়ি হয়ব, যার কাি হয়ে পযারাম টার মহয়সয়ব n প্নওো এবিং রথ n-সিংখযক
মফয়বানান্ডচ্চ সিংখযার মলস্ট মরটান করা।
ট ফািংশনটটর না যমি হে list_fib(), িাহয়ল print(list_fib(10))
মলখয়ল আউটপুট আসয়ব :

[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

list_fib() ফািংশনটটও আ রা fibo.py ফাইয়ল মলখয়বা। অমযকািংশ পাঠয়করই ফািংশনটট মলখয়ি


ঘণ্টাখায়নক প্িষ্টা করয়ি হয়ি পায়র, িায়ি হিাশ হওোর মকছু প্নই। প্রাগ্রাম িং প্শখার স ে প্য যি
প্বমশ প্িষ্টা করয়ব, মিন্তাভাবনা করয়ব, প্কাে মলখয়ব, িার প্রাগ্রাম িং প্শখা িি ভায়লা হয়ব। এক-িুই
ঘণ্টা প্িষ্টা কয়রও list_fib() ফািংশনটট প্লখয়ি না পারয়ল সা য়ন আগায়ি হয়ব, আম ফািংশনটট
একটু পয়রই মলয়খ মিয়েমছ।
িাহয়ল আ ার fibo.py ফাইলটট িাাঁড়ায়ে এরক :

def find_fib(n):
if n <= 2:
return 1

fib_x, fib_next = 1, 1

i = 3
while i <= n:
i += 1
fib_x, fib_next = fib_next, fib_x + fib_next

return fib_next

def list_fib(n):
fib_list = [1, 1]
if n <= 2:
return fib_list[:n]

fib_x, fib_next = 1, 1

i = 3
while i <= n:
i += 1
fib_x, fib_next = fib_next, fib_x + fib_next
fib_list.append(fib_next)

return fib_list

for x in range(1, 11):


print(find_fib(x))

print(list_fib(1))
print(list_fib(2))
print(list_fib(10))

এবায়র রথ কাি হয়ে প্রাগ্রা টট মনি মনি কম্পিউটায়র টাইপ কয়র রান কয়র প্িখা। আউটপুট
আসয়ব এরক :

$ python fibo.py
1
1
2
3
5
8
13
21
34
55
[1]
[1, 1]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

আম ফাইয়লর প্শয়ষ মরন্টগুয়লা কয়র মনন্ডিি হওোর প্িষ্টা কয়রমছ প্য, ফািংশনিুটট টঠকঠাক কাি
কয়র। এখন আ রা fibo.py ফাইলটট প্য মেয়রক্টমর বা প্ফাল্ডায়র আয়ছ, প্সখায়ন আয়রকটট ফাইল
তিমর করয়বা, program.py আর প্সখায়ন মনয়ির য়িা প্কাে মলখয়বা :

import fibo

print("Hello, I am inside program.py!")

n = fibo.find_fib(15)

print("15th fibonacci number is,", n)

এই প্রাগ্রায় আম আসয়ল কী কয়রমছ? রথয় fibo.py ফাইলটট ই য়পাটট কয়রমছ। ই য়পাটট করার
স ে ফাইয়লর এক্সয়টনশন .py প্িওোর রয়োিন প্নই, িাই আ রা মলয়খমছ import fibo। এটট
করার উয়েশয হয়ে fibo.py ফাইয়লর প্ভিয়র প্যই ফািংশন িুটট তিমর কয়রমছ, প্সগুয়লা প্যন আম
বযবহার করয়ি পামর। fibo.py ফাইয়ল িুটট ফািংশন আয়ছ – find_fib() ও list_fib()। ফািংশনিুটটয়ক
কল করয়ি হয়ল আ ায়ির মলখয়ি হয়ব, যথাক্রয় fibo.find_fib() ও fibo.list_fib()। প্রাগ্রায় র
িৃিীে লাইয়ন মলয়খমছ n = fibo.find_fib(15), অথাৎ
ট আম 15-ি মফয়বানান্ডচ্চ সিংখযা প্বর কয়র,
প্সই সিংখযাটট n-এর য়যয রাখমছ। িারপয়রর লাইয়ন প্সটট মরন্ট করমছ। এখন আ রা প্রাগ্রা টট রান
কয়র প্িমখ, আউটপুট কী আয়স?

$ python program.py
1
1
2
3
5
8
13
21
34
55
[1]
[1, 1]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
Hello, I am inside program.py!
15th fibonacci number is, 610

আ ায়ির প্রাগ্রায় িুটট লাইন মরন্ট করার কথা, প্সগুয়লা টঠকই মরন্ট হয়েয়ছ। মকন্তু িার আয়গ
আবার fibo.py প্রাগ্রায় যা যা মরন্ট করয়ি মিয়েমছলা , প্সগুয়লাও মরন্ট হয়েয়ছ। প্কন এ ন হয়লা?
একটু িিন্ত কয়র প্িখা যাক। আ রা এখন আ ায়ির program.py ফাইয়ল, প্শষ িুটট প্স্টটয় ন্ট বাি
মিয়ে প্িয়বা। ফাইলটট হয়ব এরক :
import fibo

print("Hello, I am inside program.py!")

এখন প্রাগ্রা রান করয়ল আউটপুট আসয়ব এরক :

$ python program.py
1
1
2
3
5
8
13
21
34
55
[1]
[1, 1]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
Hello, I am inside program.py!

িাহয়ল আ রা বুেয়ি পারমছ, যখনই আ রা import fibo মলখমছ, পাইথন করয়ছ কী, fibo.py
ফাইয়ল রান করয়ছ, িাই ওই ফাইয়লর প্শয়ষ আম প্যই মরন্ট প্স্টটয় ন্টগুয়লা মলয়খমছলা ,
প্সগুয়লার আউটপুটও আ রা প্িখয়ি পান্ডে।

এখায়ন fibo.py ফাইলটটয়ক বলা হে মেউল (module)। একটট পাইথন মেউয়ল সাযারিি মবমভন্ন
প্ভমরয়েবল ও ফািংশন প্েমফয়নশন থায়ক। মেউয়লর প্ভিয়র ক্লাসও থাকয়ি পায়র (ক্লাস সিয়কট
আ রা এই বইয়ি পয়র িানয়বা)। মেউলটট ই য়পাটট কয়র িার প্ভিয়রর ন্ডিমনসগুয়লা বযবহার
করা যাে। একটু আয়গই আ রা িা প্িয়খমছ। মকন্তু একটট মবষে আ ায়ির ভামবয়ে িু লয়ছ। আ রা
িাই প্য, fibo.py ফাইলটট যমি সরাসমর রান কমর, িাহয়ল প্যন িার প্ভিয়র ফািংশনগুয়লা কল কয়র
প্য মরন্টগুয়লা কয়রমছলা , প্সগুয়লা িলয়ব, মকন্তু অনয ফাইল প্থয়ক fibo-প্ক ই য়পাটট করয়ল ওই
প্স্টটয় ন্টগুয়লা িলয়ব না। এিনয আ ায়িরয়ক একটট প্গ্লাবাল (global) ভযামরয়েবয়লর সাহাযয
মনয়ি হয়ব, যার না হয়ে, __name__। আর এই প্গ্লাবাল ভযামরয়েবলটট মকন্তু আ রা মনয়িরা
মেয়ক্লোর করয়বা না, প্রাগ্রা রান করার স ে পাইথন মনয়ি প্থয়কই এর ান টঠক কয়র প্িে।
এখন আ রা trial.py নায় একটট ফাইল তিমর কয়র এক লাইন প্কাে মলখয়বা। fibo.py ও
program.py ফাইলিুটট প্য মেয়রক্টমরয়ি আয়ছ, trial.py ফাইলটটও প্সই মেয়রক্টমরয়ি রাখয়ি হয়ব।

print("My name is", __name__)

এখন প্রাগ্রা টট রান কমর :

$ python trial.py
My name is __main__
মেউয়লর না প্িা হওোর কথা মছল trial, মকন্তু আউটপুয়ট প্িখমছ __main__। এর কারি হয়ে
আম যখন trial.py ফাইলটট সরাসমর রান করমছ, িখন পাইথন িায়ক প্কায়না মেউল মহয়সয়ব
মবয়বিনা করয়ছ না, িাই িার না প্িখায়ে __main__। এখন আম program.py ফাইয়ল trial
মেউল ই য়পাটট করয়বা।

import trial

print("Hello, I am inside program.py!")


print(trial.__name__)

প্রাগ্রা টট রান করয়ল আউটপুট আসয়ব এরক :

$ python program.py
My name is trial
Hello, I am inside program.py!
trial

রথ লাইয়ন যখন import trial মলয়খমছ, িখন trial.py ফাইয়লর মরন্ট প্স্টটয় ন্ট রান কয়র
আউটপুট মিয়েয়ছ My name is trial। এখন মকন্তু প্স িার মেউয়লর না টঠকঠাক মরন্ট করয়লা।
কারি অনয প্কউ িায়ক ই য়পাটট কয়রয়ছ। িাহয়ল আ রা প্িখয়ি পান্ডে প্য বাইয়র প্থয়ক ই য়পাটট
করয়ল সটঠক না প্িখাে, আর ফাইলটট সরাসমর িালায়ল না প্িখাে __main__। এই বযাপারটট
আ রা কায়ি লামগয়ে এ ন বযবস্থা করয়ি পামর প্যন trial.py সরাসমর রান করয়ল Hello from trial
কথাটট মরন্ট হয়ব, মকন্তু বাইয়র প্থয়ক ই য়পাটট করয়ল এটট মরন্ট হয়ব না। trial.py ফাইয়লর প্কাে
হয়ব এরক :

if __name__ == "__main__":
print("Hello from trial")

প্রাগ্রা টট রান কমর :

$ python trial.py
Hello from trial

এবায়র program.py ফাইলটট রান কমর :

$ python program.py
Hello, I am inside program.py!
trial

এখন মকন্তু আর trial.py ফাইয়লর print প্স্টটয় ন্টটট রান করয়ছ না, কারি if কন্ডিশয়নর প্ভিয়র
__name__ -এর ান হয়ে trial, িাই শিটটট ম থযা হয়ে যায়ে।
অনুশীেনীীঃ fibo.py ফাইলটট এ নভায়ব পমরবিটন করয়ি হয়ব, প্যন ফাইলটট মেউল আকায়র
ই য়পাটট করয়ল ফাইয়লর প্শয়ষর মরন্টগুয়লা না প্িখাে, মকন্তু fibo.py ফাইলটট সরাসমর রান করয়ল
প্যন মরন্টগুয়লা প্িখাে।

আ রা এিক্ষি সবগুয়লা ফাইল একই মেয়রক্টমরয়ি প্রয়খ কাি কয়রমছ। িার কারি কী? প্কায়না
প্রাগ্রায় যখন প্কায়না মেউল ই য়পাটট করা হে, িখন পাইথন মকভায়ব িানয়ব প্য, মেউয়লর
প্কাে প্কান িােগাে আয়ছ? যখন প্কায়না মেউল ই য়পাটট করা হে িখন পাইথন রথয় খুয়াঁ ি
প্িয়খ ওই নায় প্কায়না মবট-ইন মেউল আয়ছ মক না। ওই নায় প্কায়না মবট-ইন মেউল না
থাকয়ল িার সািট পায়থর সবগুয়লা মেয়রক্টমর ও িায়ির সাব-মেয়রক্টমরর য়যয এয়ক এয়ক খুি াঁ য়ি
থায়ক প্য, প্সই মেউলটট পাওো যাে মক না। সািট পাথ (search path) হয়ে ূলি অয়নকগুয়লা
মেয়রক্টমরর একটট িামলকা বা মলস্ট। সািট পায়থর িামলকার রথ এমলয় ন্ট বা উপািান হয়ে ”, প্যটা
প্বাোে বিট ান মেয়রক্টমর (কায়রন্ট ওোমকটিং মেয়রক্টমর – current working directory বা cwd),
প্যখায়ন আ রা আ ায়ির প্রাগ্রা টট িালান্ডে। সািট পায়থর সবগুয়লা মেয়রক্টমরর মলস্ট প্িখয়ি
িাইয়ল আ ায়িরয়ক মনয়ির প্কাে বযবহার করয়ি হয়ব।

>>> import sys


>>> sys.path
>>> # এখায়ন একটট মেয়রক্টমরর মলস্ট আসয়ব

আ রা িাইয়ল আ ায়ির মেউলটট সািট পায়থর প্যয়কায়না একটট মেয়রক্টমরয়ি প্রয়খ মিয়ি পামর,
িাহয়ল পরবমিট স য়ে পাইথন প্সটটয়ক সহয়ি খুয়াঁ ি পায়ব। আবার যমি এ ন হে প্য, আম একটট
মেউল বা পযায়কি তিমর করলা , যা আয়রা অয়নক প্রাগ্রা ায়রর কায়ি লাগয়ি পায়র, িখন
আম প্সই মেউল বা পযায়কিটট পাবমলশ করয়ি পামর। িয়ব এই বইয়ি আম প্সটট প্িখায়বা না।
কায়রা রয়োিন হয়ল প্স মশয়খ প্নয়ব, আম মবষেটট িামনয়ে রাখলা াত্র।

প্নাট: একটট মেউল যমি প্বশ বড়সড় হয়ে যাে, িখন িায়ক আবার মবমভন্ন আলািা ফাইয়ল প্ভয়ে
একটট মেয়রক্টমরর য়যয প্রয়খ একটট পযায়কি তিরী করা যাে। একটট মেউয়ল প্য ন, একামযক
ভযামরয়েবল, ফািংশন, ক্লাস ইিযামি থাকয়ি পায়র; প্ি মন, একটট পযায়কয়ির য়যয একামযক ফাইল
বা মেউল, সাব-মেয়রক্টমর (যায়িরয়ক সাব-পযায়কিও বলা হে) থাকয়ি পায়র। পযায়কয়ির ূল
মেয়রক্টমরর য়যয __init__.py নায় একটট ফাইল তিরী কয়র িার য়যয বয়ল মিয়ি হে, এই
পযায়কয়ির য়যয কী কী সাব-পযায়কি ও মেউল রয়েয়ছ।
অবয়িক্ট ও ক্লাস
Published by subeen on April 11, 2018

এই অযযায়ে আ রা অবয়িক্ট ওমরয়েয়ন্টে প্রাগ্রাম িং সিয়কট িানয়বা। এর িনয আ ায়িরয়ক


প্ফরি প্যয়ি হয়ব প্সই টাটট য়লর কায়ছ। আ রা ইমি য়যয এই বইয়ি টাটট ল মেউয়লর মবমভন্ন
ফািংশন কল কয়র মবমভন্ন রকয় র কাি কয়রমছ। উিাহরি মহয়সয়ব আম এখন টাটট ল মিয়ে বৃত্ত তিমর
করার একটট প্রাগ্রা মলখয়বা।

import turtle

turtle.circle(50)

turtle.done()

প্রাগ্রা টট রান করয়ল একটট বৃত্ত তিমর হয়ব। প্িা এই যরয়ির প্রাগ্রাম িংয়ক বলা হে রাকিােট
প্রাগ্রাম িং (আ রা এই বইয়ি এবিং িার আয়গর বইয়ি প্বমশরভাগ স েই রাকিােট প্রাগ্রাম িং
কয়রমছ)। এখন আ রা এই প্রাগ্রা টটই করয়বা, মকন্তু প্সিনয turtle মেউয়লর য়যয Turtle নায়
একটট ক্লাস (class) আয়ছ, প্সটট বযবহার কয়র। আ রা Turtle ক্লাস বযবহার কয়র টাটট য়লর অবয়িক্ট
বা ইনস্টযান্স (instance) তিমর করয়বা। এখন এই ক্লাস, অবয়িক্ট, ইনস্টযান্স – এগুয়লা কী ন্ডিমনস?

রথয় বয়ল মনই, অবয়িক্ট আর ইনস্টযান্স একই ন্ডিমনস। এয়কক স ে এয়কক না বযবহার করা
হে। আর যখনই অবয়িক্ট (বা ইনস্টযান্স)-এর কথা বলা হে, িার সয়ে আয়রকটট ন্ডিমনস যুি কয়র
মিয়ি হে, প্য এই অবয়িক্টটট প্কান ক্লায়সর অবয়িক্ট? ক্লাস হয়ে ূল নকশা আর প্সই ক্লায়সর এক
বা একামযক অবয়িক্ট তিমর করা যাে, যারা ওই ক্লায়সর সব তবমশষ্টয যারি করয়ব। প্য ন, একটট
গামড়র মেিাইন হয়ে ক্লাস আর প্সই মেিাইন অনুসরি কয়র যি গামড় তিমর করা হে, প্সই
গামড়গুয়লা হয়ে ওই ক্লায়সর অবয়িক্ট। প্ি মন turtle মেউয়লর প্ভিয়র Turtle ক্লায়স বলা আয়ছ
প্য, একটট টাটট য়লর কী কী তবমশষ্টয থাকয়ব এবিং প্সটট কী কী কাি করয়ি পারয়ব ও মকভায়ব করয়ি
পারয়ব। এই তবমশষ্টযগুয়লায়ক বলা হে প্েটা অযাটট্রমবউট (data attribute) আর প্যসব কাি করয়ি
পারয়ব, প্সগুয়লায়ক বলা হে প্ থে (method)। আসয়ল প্ থেগুয়লা হয়ে ক্লায়সর প্ভিয়র তিমর
করা ফািংশন, িয়ব ক্লাস ও অবয়িয়ক্টর প্বলাে িায়িরয়ক আ রা প্ থে বমল। একারয়িই এই বইয়ি
এবিং আয়গর বইয়ি প্কাথাও প্কাথাও ফািংশন, প্কাথাও প্কাথাও প্ থে শে বযবহার করা হয়েয়ছ।

অবদজক্ট তিমি ও বযবোি


টাটট ল ক্লায়সর অবয়িক্ট তিমর করয়বা কীভায়ব? পাইথন ইন্টারয়রটায়র প্সটট আম প্িখান্ডে।

>>> import turtle


>>> tom = turtle.Turtle()
রথয় আ রা turtle মেউল ই য়পাটট করমছ। িারপর tom নায় Turtle ক্লায়সর একটট অবয়িক্ট
তিমর করমছ। এরিনয মেউয়লর না (turtle), িারপয়র একটট েট (.), িারপয়র ক্লায়সর না
(Turtle) এবিং িারপয়র রথ বন্ধনী বযবহার কয়রমছ। পাইথয়ন ক্লায়সর নায় র রথ অক্ষর
সাযারিি বড় হায়ির (capital letter) হে। এখন আম tom নায় র এই টাটট লয়ক মিয়ে মবমভন্ন কাি
করায়ি পারয়বা। প্য ন, আম যমি 100 মপয়ক্সল বযাসায়যরট একটট বৃত্ত আাঁকয়ি িাই, িাহয়ল মলখয়বা :

>>> tom.circle(100)

এখন আম যমি প্িখয়ি িাই প্য, tom কী টাইয়পর (বা প্কান ক্লায়সর) অবয়িক্ট, িাহয়ল আ ায়ক
type() ফািংশন বযবহার করয়ি হয়ব।

>>> type(tom)
<class 'turtle.Turtle'>

আ রা প্িখয়ি পান্ডে, tom হয়ে turtle মেউয়লর অন্তগিট Turtle ক্লায়সর অবয়িক্ট।

আ রা িাইয়লা আয়রা টাটট ল অবয়িক্ট তিমর করয়ি পামর। আম এখন আয়রা িুটট টাটট ল ক্লায়সর
অবয়িক্ট তিমর করয়বা :

>>> nonte = turtle.Turtle()


>>> fonte = turtle.Turtle()

এখন আম িায়ির আকৃমি পমরবিটন কয়র প্িয়বা। িারপয়র nonte-প্ক 30 মেগ্রী বা মিয়ক ঘুয়র
100 মপয়ক্সল সা য়ন প্যয়ি বলয়বা। আর Fonte-প্ক বলব 50 মপয়ক্সল প্পছয়ন িয়ল আসয়ি।

>>> nonte.shape("circle")
>>> fonte.shape("square")
>>> nonte.left(30)
>>> nonte.forward(100)
>>> fonte.backward(50)

রমিটট লাইয়নর পরপর মকন্তু ন্ডিন হালনাগাি (আপয়েট) হয়ব। প্সটট সয়ে সয়ে প্িখয়ি হয়ব।
িাহয়ল বুেয়ি পারা যায়ব প্য, প্কান লাইন কী কাি করয়ছ। এখন আম আয়রকটট টাটট ল অবয়িক্ট
তিমর করয়বা এবিং টাটট লগুয়লায়ক আয়রা মকছু কাি করয়ি বলয়বা।

>>> monte = turlte.Turtle()


Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'turlte' is not defined
>>> monte = turtle.Turtle()
>>> monte.setpos(-100, -100)
>>>
>>> monte.foward(30)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Turtle' object has no attribute 'foward'
>>> monte.forward(30)
>>> monte.clear()
>>> monte.clear()
>>> fonte.clear()
>>> fonte.shape("triangle")
>>> monte.shape("square")
>>>

ওপয়রর প্স্টটয় ন্টগুয়লা িালায়ল প্শষ পযন্ত


ট ন্ডিন মনয়ির য়িা প্িখায়ব :

এখন ওপয়র আ রা মকন্তু িুটট এরর প্িখয়ি পান্ডে, একটট হয়ে NameError, আয়রকটট হয়ে
AttributeError। রথ এররটট বলয়ছ, NameError: name ‘turlte’ is not defined, অথাৎ ট পাইথন
ইন্টারয়রটার turlte নায় প্কায়না মকছু খুয়াঁ ি পাে মন (কারি, আম বানান ভুল কয়রমছ)। আর মিিীে
এররটট বলয়ছ, AttributeError: ‘Turtle’ object has no attribute ‘foward’, অথাৎ
ট Turtle ক্লায়স
foward নায় প্কায়না মকছু প্নই (কারি, এখায়নও আম বানান ভুল কয়রমছ)। িার ায়ন, আ রা
প্কবল প্সসব ন্ডিমনসই বযবহার করয়ি পারয়বা, প্যগুয়লা ক্লায়সর য়যয বয়ল প্িওো আয়ছ।

এিক্ষি আ রা মশখলা , মকভায়ব একটট ক্লায়সর অবয়িক্ট তিমর করয়ি হে, অবয়িক্টগুয়লায়ক
মকভায়ব বযবহার করয়ি হে। আবার একটু ভুল করয়ল কী হে, িাও প্িখলা । অবয়িক্ট তিমরর
একটট বড় সুমবযা হয়ে, ক্লায়সর য়যয প্যসব তবমশষ্টযর কথা বলা আয়ছ, আ রা যখন প্সই ক্লায়সর
অবয়িক্ট তিমর করয়বা, িখন রমিটট অবয়িয়ক্টর িনয প্সই তবমশষ্টযগুয়লা আলািা হয়ব। িাই
আ রা nonte, fonte, monte – এই মিনটট টাটট লয়ক মিন রক আকৃমি মিয়ি পামর, িায়িরয়ক
আলািা রিংও মিয়ি পামর। িায়িরয়ক মবমভন্ন ক াি মিয়ে আলািা িােগাে পাঠায়ি পামর।
একিয়নর তবমশষ্টয বা আিরি অনযিয়নর ওপর প্কায়না রভাব প্ফয়ল না। nonte-প্ক 100 মপয়ক্সল
সা য়ন প্যয়ি বলয়ল প্কবল প্স-ই প্সই কািটট করয়ব, বাকী সবাই মনয়িয়ির য়িা থাকয়ব।

একটট অবয়িয়ক্টর কী কী অযাটট্রমবউট (প্েটা অযাটট্রমবউট ও প্ থে) আয়ছ, প্সটা িানয়ি িাইয়ল
dir() ফািংশন বযবহার করয়ি হয়ব। এসব অযাটট্রমবউয়টর না প্িয়খ অবশয খুব প্বমশ মকছু প্বাো
যায়ব না। বরিং েকুয় য়ন্টশন পড়য়লই মবিামরি িানা যায়ব। আ রা আয়গর বইয়ি মলস্ট তিমর করা
মশয়খমছলা । যখন প্কায়না মলস্ট তিমর করা হে, প্সই মলস্ট আসয়ল list ক্লায়সর একটট অবয়িক্ট।

>>> li = [1, 10, 2, 20]


>>> type(li)
<class 'list'>

ওপয়র প্িখয়ি পান্ডে প্য, li হয়ে list ক্লায়সর অবয়িক্ট। এখন এই li-এর কী কী অযাটট্রমবউট আয়ছ,
িাও আ রা িানয়ি পামর, এভায়ব :

>>> dir(li)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
'__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
'__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__',
'__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__',
'__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__',
'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop',
'remove', 'reverse', 'sort']

প্যসব অযাটট্রমবউটগুয়লার না আিারয়স্কার মিহ্ন (_) মিয়ে শুরু হয়েয়ছ, প্সগুয়লা আপািি
আ ায়ির প্বাোর িরকার প্নই। প্সগুয়লা বাি মিয়ল আ রা প্িখয়ি পান্ডে, মলয়স্টর এই
অযাটট্রমবউটগুয়লা : ‘append’, ‘clear’, ‘copy’, ‘count’, ‘extend’, ‘index’, ‘insert’, ‘pop’, ‘remove’,
‘reverse’, ‘sort’। এগুয়লার প্বশ মকছু বযবহার আ রা আয়গর বইয়ি প্িয়খমছ। এখন িাইয়ল মনয়ি
মনয়ি পরীক্ষামনরীক্ষা কয়র প্িখা প্যয়ি পায়র প্য, প্কান অযাটট্রমবউট কী কাি কয়র। আর পাইথয়নর
অমফমশোল েকুয় য়ন্টশয়নও মলয়স্টর মবমভন্ন প্ থেগুয়লার কায়ির বিনা ট প্লখা আয়ছ। প্যয়হিু li
হয়ে list ক্লায়সর একটট অবয়িক্ট, িাই এর মবমভন্ন প্ থে বযবহার করার স ে আ রা রথয়
মলখয়বা অবয়িয়ক্টর না , িারপয়র েট, িারপয়র প্ থয়ের না । প্য ন : li.sort()।

>>> li.sort()
>>> li
[1, 2, 10, 20]

নিু ন ক্লাস তিমি কিা


আ রা যমি নিু ন যরয়ির অবয়িক্ট তিমর করয়ি িাই, িাহয়ল আ ায়িরয়ক রথয় নিু ন ক্লাস তিমর
করয়ি হয়ব। যরা যাক, আম একটট কার প্রমসিং প্গ স বানায়বা। প্সই প্গ য়সর একটট ূল মবষে
হয়ে কার (Car) বা গামড়। আ ায়ক অয়নক কার অবয়িক্ট তিমর করয়ি হয়ব। িাই রথয় Car নায়
একটট ক্লাস তিমর করয়বা। এই ক্লায়স কী কী প্েটা অযাটট্রমবউট ও প্ থে থাকয়ি পায়র? এখন মনয়ি
মনয়ি একটট িামলকা তিমর করার প্িষ্টা কয়র প্িখয়ি হয়ব। আম একটট সহি িামলকা মিন্ডে। িয়ব,
এটট প্কায়না পূিাে
ট িামলকা নে, অয়নয়কর াথাে অনযমকছুও আসয়ি পায়র।

প্েটা অযাটট্রমবউট:

• না (name)
• উৎপািনকারী রমিষ্ঠান (manufacturer)
• রিং (color)
• তিমরর সাল (year)
• ইন্ডিয়নর ক্ষ িা (মসমস) (cc)

প্ থে :

• ইন্ডিন িালু করা (start)


• প্ব্র্ক করা (brake)
• িালায়না (drive)
• োয়ন-বাাঁয়ে প্ঘারা (turn)
• মগোর পমরবিটন (change gear)

এভায়ব রথয় আ ায়ির ক্লায়সর মেিাইন করয়ি হয়ব। িারপর ক্লাস োোগ্রা (class diagram)
তিমর করয়ি হয়ব, িয়ব এই বইয়ি প্সটট আম প্িখায়বা না, িাই আপািি এটট না মশখয়লও িলয়ব।
িারপয়র আ রা পাইথয়ন ক্লাসটট তিমর করয়বা। এখন রশ্ন হয়ে, আ রা মক কয়র বুেয়বা প্য
আ ায়িরয়ক একটট ক্লাস তিমর করয়ি হয়ব? আ রা যখন সফটওেযার তিমর করয়বা, এটট প্যই
স সযার স াযায়নর িনয তিমর, প্সটট মনয়ে মিন্তা কয়র মবয়শষয পিগুয়লা (Noun) খুয়াঁ ি প্বর করয়ি
হয়ব। প্িখা যায়ব এগুয়লার প্বমশরভায়গর িনযই আ ায়ির ক্লাস তিমর করার িরকার হয়ব। প্য ন,
কার প্রমসিং প্গয় র প্ক্ষয়ত্র, Car, Player, Track ইিযামি। আবার আ রা যমি স্কুল যায়নিয় ন্ট
করার িনয একটট সফটওেযার তিমর কমর, িাহয়ল প্সখায়ন Student, Teacher, Employee,
ClassRoom, Subject, Result ইিযামি ক্লাস থাকয়ি পায়র। সবগুয়লাই মকন্তু মবয়শষয পি, অথাৎ ট
Noun।

পাইথয়ন ক্লাস তিমর করয়ি হয়ল রথয় class মলয়খ একটট প্েস মিয়ে ক্লায়সর না মলখয়ি হে,
িারপয়র প্সই ক্লায়সর প্ভিয়র মবমভন্ন প্স্টটয় ন্ট প্লখা হে। এখায়নও ইনয়েয়ন্টশন করয়ি হে। ক্লাস
মেয়ক্লোর করার পয়রর লাইন প্থয়ক যিটুকু প্কাে ক্লায়সর প্ভিয়র থাকয়ব, িারা এক টযাব (tab)
োন মিক প্থয়ক শুরু হয়ব।

class ClassName:
<statement-1>
.
.
.
<statement-N>
ওপয়র ClassName হয়ে ক্লায়সর না । আ রা প্যই নায় র ক্লাস তিমর করয়ি িাই, প্সই না টট
প্সখায়ন বযবহার করয়বা। আর প্স্টটয় ন্ট-এর িােগাে মবমভন্ন ভযামরয়েবয়ল ান রাখা মকিংবা প্ থে
তিমর করা যায়ব।

class Car:
name = "Premio"
color = "white"

def start():
print("Starting the engine")

ওপয়র আ রা Car নায় একটট ক্লাস তিমর করলা । িারপয়র প্সখায়ন name ও color নায় িুটট
প্েটা অযাটট্রমবউট রাখলা , আর start নায় একটট প্ থে তিমর করলা । এখন আ রা এই
অযাটট্রমবউটগুয়লা বযবহার করয়ি পারয়বা। মনয়ির প্কায়ে প্সটট প্িখায়না হয়েয়ছ :

class Car:
name = "Premio"
color = "white"

def start():
print("Starting the engine")

print("Name of the car:", Car.name)


print("Color:", Car.color)

Car.start()

প্রাগ্রা টট প্সভ কয়র রান করয়ল মনয়ির য়িা আউটপুট আসয়ব :

$ python car.py
Name of the car: Premio
Color: white
Starting the engine

[প্নাট: কার প্রমসিং প্গ তিমর করার স ে মকন্তু start() প্ থে প্কবল একটট লাইন মরন্ট করয়ব না,
বরিং গামড় িালু করার একটা শে হয়ব, অযামনয় শন হয়ব। মকন্তু প্সগুয়লা আ ার এই বইয়ি
আয়লািনার মবষে নে। আ রা বরিং অবয়িক্ট ওমরয়েয়ন্টে প্রাগ্রাম িং প্শখার প্িষ্টা করমছ।]

এখন প্কউ রশ্ন করয়ি পায়র প্য, সব গামড়র রিং প্িা সািা হয়ব না, আর সব গামড়র না ও মরম ও
(Premio) হয়ব না। িাহয়ল কী করা যাে? আ রা ক্লায়সর প্ভিয়র ওই প্েটা অযাটট্রমবউটগুয়লাে ফাাঁকা
মরিং অযাসাইন করয়ি পামর। িারপয়র প্সগুয়লা পমরবিটন করা যায়ব।

class Car:
name = ""
color = ""
def start():
print("Starting the engine")

Car.name = "Axio"
Car.color = "Black"
print("Name of the car:", Car.name)
print("Color:", Car.color)

Car.start()

এখন প্রাগ্রা টট রান কয়র প্িখব। আর বইটট মকন্তু প্কবল পয়ড় প্গয়ল িলয়ব না, সবমকছু বইয়ের
সয়ে সয়ে মনয়িও প্কাে কয়র রযাকটটস করয়ি হয়ব।

$ python car.py
Name of the car: Axio
Color: Black
Starting the engine

আ রা যমি ওপয়রর প্কায়ে print(dir(Car)) মলমখ, িাহয়ল Car ক্লায়সর মিনটট অযাটট্রমবউট প্িখয়ি
পায়বা : ‘color’, ‘name’, ‘start’। প্সই সয়ে অবশয আয়রা অযাটট্রমবউট প্িখায়ব, প্যগুয়লা _ মিয়ে শুরু,
আপািি প্সগুয়লা মনয়ে মিন্তা করা িরকার প্নই।

এখন পযন্তট আ রা সরাসমর Car ক্লায়সর মবমভন্ন অযাটট্রমবউট বযবহার কয়রমছ। এখন আ রা Car
ক্লায়সর অবয়িক্ট তিমর করয়বা। এই অবয়িক্ট তিমরর কািটটয়ক পাইথয়নর ভাষাে বয়ল
ইনস্টযানমশয়েট (instantiate) করা। এিনয অবয়িক্টয়ক ইনস্টযান্সও বলা হয়ে থায়ক।

class Car:
name = ""
color = ""

def start():
print("Starting the engine")

# creating a Car object


my_car = Car()
my_car.name = "Allion"
print(my_car.name)
my_car.start()

এখায়ন আম রথয় Car ক্লায়সর একটট অবয়িক্ট তিমর করলা : my_car = Car()। িারপর,
my_car – এর না মিয়ে মিলা : my_car.name = “Allion” এবিং প্সটট মরন্ট কয়র প্িখলা । প্শষ
লাইয়ন my_car-প্ক িালু করার প্িষ্টা করলা , িার start() প্ থে কল কয়র। মকন্তু এখায়নই মবপমত্ত।
প্রাগ্রা টট যমি আ রা িালাই, িাহয়ল মনয়ির য়িা আউটপুট প্িখয়বা :

$ python car.py
Allion
Traceback (most recent call last):
File "car.py", line 12, in <module>
my_car.start()
TypeError: start() takes 0 positional arguments but 1 was given

না মরন্ট হয়লা টঠকই, মকন্তু িারপয়র এরর মিয়লা প্য, start() takes 0 positional arguments but 1
was given। এর অথ হয়ে, ট start() প্ থে যখন তিমর করা হয়েয়ছ, প্সখায়ন প্সটট আগুটয় ন্ট
মহয়সয়ব প্কায়না মকছু প্নে না (def start()), ায়ন 0টট আগুটয় ন্ট প্নে, মকন্তু আ রা 1টট আগুটয় ন্ট
পাঠান্ডে (but 1 was given)! মকন্তু আ রা প্কাথাে একটট আগুটয় ন্ট পাঠালা ? আ রা প্িা মলয়খমছ
my_car.start()। ব্র্যায়কয়টর প্ভিয়র মকছু মলমখ মন। আ রা যখন প্কায়না অবয়িয়ক্টর প্ থে কল
কমর (প্য ন : my_car.start()), িখন প্সই প্ থয়ের প্ভিয়র অবয়িক্টটট আপনাআপমন িয়ল যাে।
প্কন যাে, প্সটট আ রা পরবমিট স য়ে আয়লািনা করয়বা। আ ায়ির এখন প্যটট করয়ি হয়ব, প্সটট
হয়ে, def start()-এর বিয়ল মলখয়ি হয়ব def start(self)।

class Car:
name = ""
color = ""

def start(self):
print("Starting the engine")

my_car = Car()
my_car.name = "Allion"
print(my_car.name)
my_car.start()

এখন প্রাগ্রা টট রান করয়ল টঠকঠাক িলয়ব। self-এর বিয়ল অনযমকছু মলখয়লও িয়ল, মকন্তু এই
প্ক্ষয়ত্র পাইথয়নর রীমি হয়ে self প্লখা।

আ রা যখন একটট Car ক্লায়সর অবয়িক্ট তিমর করমছ, িাইয়ল িখনই আ রা প্সই অবয়িয়ক্টর
মবমভন্ন তবমশষ্টয বয়ল মিয়ি পামর। রথয় আ রা মনয়ির প্কােটট টাইপ কয়র রান করয়বা, িারপর
প্সটট আয়লািনা করয়বা।

class Car:
name = ""
color = ""

def __init__(self, name, color):


self.name = name
self.color = color

def start(self):
print("Starting the engine")

my_car = Car("Corolla", "White")


print(my_car.name)
print(my_car.color)
my_car.start()
প্রাগ্রা টট রান করয়ল টঠকঠাক আউটপুট আসয়ব। এখায়ন আম একটট নিু ন প্ থে বযবহার
কয়রমছ, __init__()। যখন প্কায়না ক্লায়সর অবয়িক্ট তিমর করা হে, িখন এই প্ থেটট
আপনাআপমন (অয়টায় টটক) কল হে। িাই যখন my_car = Car(“Corolla”, “White”)
প্স্টটয় ন্টটট িয়ল, িখন আসয়ল Car ক্লায়সর __init__ প্ থে কল হে। প্সই প্ থয়ের রথ
পযারাম টার হয়ে self। এটট সবস েই মিয়ি হয়ব। িারপয়র প্যয়হিু আ রা গামড়র না ও রিং প্সট
কয়র মিয়ি িাই, িাই name ও color নায় িুটট পযারাম টার রাখমছ। িারপয়র ফািংশয়নর প্ভিয়র
self.name-এ name অযাসাইন করমছ, আর self.color-এ color অযাসাইন করমছ। আম যখন মলখমছ
self.name, প্সটট প্বাোয়ে প্য, প্যই অবয়িক্টটট আম তিমর করমছ, িার name অযাটট্রমবউট। এখায়ন
Car ক্লায়সর প্ভিয়র প্য name মেয়ক্লোর কয়রমছ (name = “”), self.name, আর init ফািংশয়নর
name পযারাম টার – মিনটট মকন্তু আলািা। এখায়ন এয়স বযাপারটা একটু এয়লায় য়লা লাগয়ি পায়র।
িাই আ রা ওপয়রর প্কােটট একটু পমরবিটন কয়র মলমখ।

class Car:
def __init__(self, n, c):
self.name = n
self.color = c

def start(self):
print("Starting the engine")

my_car = Car("Corolla", "White")


print(my_car.name)
print(my_car.color)
my_car.start()

প্রাগ্রা টট রান করয়ল আউটপুট আসয়ব এরক –

$ python car.py
Corolla
White
Starting the engine

এখায়ন যখন আম my_car = Car(“Corolla”, “White”) মলখমছ, িখন __init__(self, n, c)-এর self-এ
যায়ে my_car অবয়িয়ক্টর প্রফায়রন্স, n-এ যায়ে “Corolla”, আর c-প্ি যায়ে “White”। িারপর
যখন self.name = n প্স্টটয় ন্ট এন্ডক্সমকউট হয়ে, িখন my_car অবয়িয়ক্টর name নায় একটট
অযাটট্রমবউট তিমর হয়ে আর প্সখায়ন n অযাসাইন হয়ে। একইভায়ব color অযাটট্রমবউট তিমর হয়ে
প্সখায়ন c-প্ি যা পাটঠয়েমছলা , িা অযাসাইন হয়ে।

Car ক্লায়স প্য িুটট প্েটা অযাটট্রমবউট তিমর কয়রমছলা (name ও color), প্সগুয়লা মকন্তু আম বাি
মিয়ে মিয়েমছ। কারি আম অবয়িক্ট তিমর করার স ে init প্ থয়ের প্ভিয়র self.name ও
self.color যখন মলখমছ, িখন প্সই অবয়িয়ক্টর িনয name ও color নায় অযাটট্রমবউট তিমর হয়ে
যায়ে। এয়ক বয়ল ইনস্টযান্স অযাটট্রমবউট, যা প্কবল ওই ক্লায়সর ইনস্টযায়ন্সর (বা অবয়িয়ক্টর)
থায়ক। িয়ব এখন মকন্তু আর ক্লায়সর না মলয়খ েট মিয়ে name (ও color) একয়সস করা যায়ব না।
আ রা যমি মলমখ print(Car.name), িাহয়ল আ রা এরর পায়বা : AttributeError: type object
‘Car’ has no attribute ‘name’। অথাৎ
ট Car ক্লায়সর name নায় প্কায়না অযাটট্রমবউট প্নই। আ রা
যখন এরক মলয়খমছলা –

class Car:
name = ""
color = ""

িখন, এই name ও color–প্ক বলা হে ক্লাস অযাটট্রমবউট। প্বমশরভাগ স েই আ ায়ির এরক


অযাটট্রমবউট তিমর করার িরকার পরয়ব না।

এখন ক্লায়সর প্ভিয়র প্যসব প্ থে আয়ছ, িারা যমি ওই ক্লায়সর অবয়িয়ক্টর মবমভন্ন অযাটট্রমবউট
একয়সস করয়ি িাে, প্সই কািটট করয়ি পারয়ব, িয়ব অযাটট্রমবউয়টর নায় র আয়গ অবশযই self
মলয়খ েট মিয়ি হয়ব, িাহয়ল পাইথন বুেয়ি পারয়ব প্য, অযাটট্রমবউটটট প্কান অবয়িয়ক্টর সয়ে
সিংমেষ্ট।

class Car:
def __init__(self, n, c):
self.name = n
self.color = c

def start(self):
print("name: ", self.name)
print("color: ", self.color)
print("Starting the engine")

my_car = Car("Corolla", "White")


my_car.start()

ওপয়রর প্রাগ্রায় আ রা start() প্ থয়ের প্ভিয়র অবয়িয়ক্টর না ও রিং মরন্ট কয়রমছ। এখন
একটট িার ন্ডিমনস প্িখাই। self-এ প্য অবয়িক্ট পাঠায়না হে, িার র াি পাওো যায়ব মনয়ির
প্রাগ্রা িালায়ল –

class Car:
def __init__(self, n, c):
self.name = n
self.color = c

def start(self):
print("name: ", self.name)
print("color: ", self.color)
print("Starting the engine")

my_car = Car("Corolla", "White")

Car.start(my_car)
আ রা my_car অবয়িক্ট তিমর করলা । িারপর, Car.start() প্ থে কল করলা মকন্তু আগুটয় ন্ট
মহয়সয়ব my_car অবয়িক্ট বযবহার করলা । এই প্রাগ্রায় র আউটপুট মকন্তু হুবুহু আয়গর
প্রাগ্রায় র য়িাই হয়ব। িয়ব বয়ল রাখা ভায়লা প্য, সাযারিি এভায়ব আ রা start() প্ থে কল
করয়বা না।

এখন আ রা িাইয়ল একামযক কার অবয়িক্ট তিমর করয়ি পামর।

class Car:
def __init__(self, n, c):
self.name = n
self.color = c

def start(self):
print("name: ", self.name)
print("color: ", self.color)
print("Starting the engine")

my_car1 = Car("Corolla", "White")


my_car1.start()
my_car2 = Car("Premio", "Black")
my_car2.start()
my_car3 = Car("Allion", "Blue")
my_car3.start()

প্রাগ্রা টট রান করয়ল আউটপুট আসয়ব এরক :

$ python car.py
name: Corolla
color: White
Starting the engine
name: Premio
color: Black
Starting the engine
name: Allion
color: Blue
Starting the engine

রমিটট অবয়িয়ক্টর অযাটট্রমবউটগুয়লা মকন্তু আলািা। প্য ন, my_car1-এর color আর my_car2-


এর color আলািা। এটট হয়ে অবয়িক্ট ওমরয়েয়ন্টে প্রাগ্রাম িংয়ের একটট বড় সুমবযা। আ রা যি
খুমশ অবয়িক্ট তিমর করয়ি পামর। রমিটট অবয়িক্ট িার মনিস্ব অযাটট্রমবউট যারি করয়ব।

আয়রকটট কথা বলা রয়োিন। আ রা প্য __init__ প্ থে বযবহার করমছ, যা অবয়িক্ট তিমর হওোর
স ে আপনাআপমন কল হে, এয়ক বয়ল কনরাকটর (constructor)।

এখন যরা যাক, Car ক্লায়সর অবয়িক্ট তিমর করার পর আ ার প্খোল হয়লা, অবয়িয়ক্টর একটট
প্েটা অযাটট্রমবউট িরকার, প্যটট ক্লায়সর য়যয প্নই। আর আম এখন ক্লাসটটও পমরবিটন করয়ি
িাইমছ না। মকন্তু িায়ি প্কায়না স সযা প্নই। আম িাইয়ল প্যয়কায়না স ে আ ায়ির অবয়িয়ক্টর
সয়ে একটট প্েটা অযাটট্রমবউট িুয়ড় মিয়ি পারয়বা।

class Car:
def __init__(self, n, c):
self.name = n
self.color = c

def start(self):
print("Starting the engine")

car = Car("Corolla", "White")


car.year = 2017
print(car.name, car.color, car.year)

অনুশীেনীীঃ আ রা শুরুয়ি Car ক্লায়সর প্য মেিাইন কয়রমছলা , আম মকন্তু প্সটট পুয়রাপুমর
ই মপ্ল্য় ন্ট কমর মন। এখন প্সই মেিাইন প্িয়খ ক্লাসটট পুয়রাপুমর ই মপ্ল্য় ন্ট করয়ি হয়ব।

You might also like