সহজে পাইথন শেখা-০৭


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

>>>print “What is your name?”
>>>name=raw_input()
>>>print “Hoe old are you?”
>>>age=raw_input()
>>>print “Hello %s, you are %s years old.” % (name, age)

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

আর একটা বিষয়, আমরা অনেক বড় বড় প্রোগ্রাম করার সময় চাইলে প্রোগ্রাম কোডে বিভিন্ন কমেন্ট লিখে রাখতে পারি। যা পরবর্তীতে আমাদেরকে ঐ প্রোগ্রাম দেখা মাত্রই বুঝতে সাহায্য করবে। এছাড়া বড় বড় প্রজেক্টে দেখা যায় অনেকে মিলে একটা প্রোগ্রাম তৈরী করে। সেক্ষেত্রে একজনের কোড অন্যজনের বুঝতে অসুবিধা হতে পারে। তাই কমেন্ট ব্যবহার করলে এক্ষেত্রে সুবিধা পাওয়া যাবে। উপরের উদাহরনটিই আমরা কমেন্ট ব্যবহার করার পরের অবস্থা দেখি-

>>>#This is a sample program
>>>print “What is your name?”	#ask name
>>>name=raw_input()			#take input as name 
>>>print “Hoe old are you?”		#ask age
>>>age=raw_input()			#take input as age
>>>#Next line will print the values
>>>print “Hello %s, you are %s years old.” % (name, age)

কমেন্ট ব্যবহার করার পর যে কেউ প্রোগ্রামটি দেখলেই বুঝতে পারবে এটা দিয়ে কি কাজ করা হচ্ছে। পাইথনে কমেন্ট করার জন্য হ্যাশ(#) ব্যবহার করা হয়। হ্যাশ চিহ্ন পাওয়ার পর পাইথন ইন্টারপ্রিটার ঐ লাইনের আর কোন কোডকে কম্পাইল করে না।

সহজে পাইথন শেখা-০৬


আমাদের আজকের টপিক হচ্ছে স্ট্রিং। পাইথনে স্ট্রিং হচ্ছে একটা অবজেক্ট। আসলে পাইথন একটা অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং ভাষা। এখানে সবকিছুই আসলে এক-একটা অবজেক্ট। অবজেক্ট সম্পর্কে আমরা পরে বিস্তারিত জানবো। স্ট্রিং হচ্ছে এক বা একাধিক ক্যারেকটারের সমষ্টি। আমরা স্টিং তৈরী করতে পারি যে কোন কিছু সিঙ্গেল বা ডাবল কোটেশনের মধ্যে লিখে। যেমন-

“My name is Milon.”
'I am a student of Information Technology.'

আমরা স্ট্রিংকে একটা ভ্যারিয়েবল হিসেবে ধরতে পারি। যেমন-

>>>name=”My name is Milon.”
>>>print name
My name is Milon.

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

>>>”””This is a multi line String.
...This is the second line.
...This is the last line of the string.”””

মাল্টিলাইন স্ট্রিং লেখার সময় আমরা পাইথন টার্মিনালে তিনটা করে ডট(. . .) দেখতে পাব।

আমরা স্ট্রিং দিয়ে মাল্টিপ্লিকেশন বা গুন অপারেটর ব্যবহার করে অনেক কিছু লিখতে পারি। যেমন-

>>>”Milon”*5
MilonMilonMilonMilonMilon

এবারে আমরা স্ট্রিংএর আরেকটা মজার ব্যবহার শিখবো। আমরা স্ট্রিংএ % নোটেশনকে প্লেসহোল্ড ক্যারেকটার হিসেবে ব্যবহার করতে পারি। যেমন-

>>>string=”Hello %s, How are you?”
>>>print string % Milon
Hello Milon, How are you?

আমরা চাইলে একাধিক ভ্যারিয়েবলও ব্যবহার করতে পারি। যেমন-

>>>name1=”Rahim”
>>>name2=”Karim”
>>>print “%s and %s are two brothers.” % (name1, name2)
Rahim and Karim are two brothers.

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

সহজে পাইথন শেখা-০৫


এতদিন পর্যন্ত আমরা সরাসরি বিভিন্ন সংখ্যা নিয়ে কাজ করেছি। আজ আমরা দেখবো ভ্যারিয়েবল নিয়ে কিভাবে কাজ করতে হয়। ভ্যারিয়েবল শব্দটা মনে হয় বেশ ভারিক্কি হয়ে গেছে। এটাকে বাংলাতে বলে চলক। যেমন, মনে করি “রহিম” বা “করিম”। আমরা যদি রহিম বা করিম দিয়ে তাদের বয়স প্রকাশ করতে চাই, যেমন- রহিমের বয়স ২০ আর করিমের বয়স ১৮ তাহলে আমাদেরকে লিখতে হবে-
রহিম = ২০
করিম = ১৮
তাদের বয়স যদি ২০ আর ১৮ না হয়ে ২৫ আর ৩০ হয় তাহলে লিখতে হবে-
রহিম=২৫
করিম=৩০
এটাই হচ্ছে ভ্যারিয়েবল যার মান পরিবর্তিত হতে পারে।
পাইথনে ভ্যারিয়েবল লেখার পদ্ধতিটিও উপরের মতই। যেমন-

>>>rahim=20
>>>karim=18

এখন প্রশ্ন হচ্ছে ভ্যারিয়েবল তৈরী করে আমাদের লাভ কি?
আমাদেরকে প্রশ্ন করা হল, রহিম এবং করিমের মোট বয়স কত? তখন আমরা এর উত্তর দেব-

>>>rahim=20
>>>karim=18
>>>rahim+karim
38

এখন যদি রহিম বা করিমের বয়স আমরা পরিবর্তনও করি তবুও rahim+karim স্টেটমেন্ট ব্যবহার করে আমরা তাদের বয়স বের করতে পারবো। এটাই হচ্ছে ভ্যারিয়েবলের সুবিধা।

আরও অনেক প্রশ্ন থেকে যায়। ভ্যারিয়েবলের নাম কি শুধু rahim বা karim ই দেব নাকি অন্য নামও দেয়া যায়? এর উত্তর হচ্ছে যে কোন নামই দেয়া যায়। তবে নামে শুধুমাত্র লেটার, নাম্বার আর আন্ডারস্কোর(_) ব্যবহার করা যাবে। নাম দেয়ার ক্ষেত্রে একটা বিষয় খেয়াল রাখা উচিৎ, নাম অর্থপূর্ণ হওয়া উচিৎ যাতে নাম দেখেই এটা কি সেটা বোঝা যায়। যেমন-

>>>no_of_students=50
>>>marks_in_math=75

তবে অনেক বড় নাম দেয়া সুবিধাজনক না। যেমন-

>>>this_is_also_a_variable_but_not_so_useful=0

এছাড়াও প্রত্যেক ল্যাংগুয়েজেরই কিছু নিজস্ব সংরক্ষিত শব্দ আছে। এদেরকে বলে কী-ওয়ার্ড। পাইথনে এমন কী-ওয়ার্ড আছে ২৯ টি। এদেরকেও ভ্যারিয়েবলের নাম হিসেবে ব্যবহার করা যাবে না। এই কী-ওয়ার্ডগুলো হচ্ছে-

and assert break class continue
def del elif else except
exec finally for from global
if import in is lambda
not or pass print raise
return try while yield

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

>>>name=”Nuruzzaman Milon”
>>>Dept='ICT'

খেয়াল রাখা দরকার, স্ট্রিং লেখার সময় এটাকে অবশ্যই ডাবল কোটেশনের (“ ”) বা সিঙ্গেল কোটেশনের(‘ ‘) মধ্যে লিখতে হয়। আমরা ভবিষ্যতে স্ট্রিং নিয়ে আরো বিস্তারিত জানবো।

এবার আমরা জানবো ভ্যারিয়েবলের টাইপ সম্পর্কে। যেমন- 2 বা 5 হচ্ছে integer টাইপের ভ্যারিয়েবল, 2.5 বা 8.9 হচ্ছে float টাইপের ভ্যারিয়েবল। কোন ভ্যারিয়েবলের টাইপ জানার জন্য আমরা ব্যবহার করবো type() নামের একটা ফাংশন। এই ফাংশনের ব্র্যাকেটের ভেতরে ভ্যারিয়েবলের নাম লিখলেই সেটা কোন টাইপের ভ্যারিয়েবল সেটা বলে দেবে। যেমন-

>>>type(5)
<type 'int'> 
>>>type(8.9)
<type 'float'>
>>>type(“Python”)
<type 'str'>

সহজে পাইথন শেখা-০৪


আজকে আমরা দেখবো পাইথনে কিভাবে হিসাব-নিকাশ করতে হয়। হিসাবের কথা আসলেই প্রথমে আমাদের মনে আসে যোগ-বিয়োগের কথা। পাইথনে যোগ, বিয়োগ, গুন ভাগ করা খুবই সহজ।

প্রথমেই আসে যোগের কথা। পাইথনে দুইটা সংখ্যা যোগ করতে হলে লিখতে হয়-

>>>2+8
10
>>>5+27
32

একইভাবে তিন, চার বা পাঁচটা সংখ্যাও যোগ করা যায়।

>>>2+9+7
18

বিয়োগ গুন বা ভাগও একই ভাবে করা যায়। যেমন-

>>>5-3
2
>>>5*4
20
>>>25/5
5

পাইথনে যোগ, বিয়োগ, গুন বা ভাগ করার জন্য যেসব নোটেশন ব্যবহার করা হয় তা হল-
যোগঃ +
বিয়োগঃ –
গুনঃ *
ভাগঃ /

এখানে ভাগ করার সময় একটা জিনিস লক্ষ্য করি-

>>>10/3
3
>>>11/2
5

যদিও উপরের দুইটি ক্ষেত্রে আসা উচিৎ ছিল

3.33333333
5.5

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

>>>10.0/2
3.33333333
>>>10/3.0
3.33333333

যেখানে C, C++ বা Java তে কাস্টিং করার নিয়ম-

(float)10/3 	or 
(double)10/3

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

>>>10%3
1
>>>17%5
2

এটা প্রকাশ করা হয় % চিহ্ন দ্বারা।

এবার আমরা দেখবো, কিভাবে এক্সপোনেনশিয়াল বা ঘাত বের করতে হয়। যেমন ২^৪ মান বের করবো। এর জন্য লিখতে হবে-

>>>2**3
8
>>>4**5
1024

এক্সপোনেনশিয়াল বের করার জন্য আমরা ব্যবহার করবো জোড়া এস্টেরিক্স(**)।

আজকে আমরা যতগুলো অপারেটর দেখলাম তার সবই বাইনারী অপারেটর, অর্থাৎ এগুলো নিয়ে কাজ করতে চাইলে কমপক্ষে দুইটা অপারেন্ড লাগবে। যেমন + বা * অপারেটর ব্যবহার করতে হলে কমপক্ষে দুইটা সংখ্যা লাগবে।
এবার আসবে অপারেটরের অর্ডার। আমরা ছোট্ট একটা উদাহরন দেখি-

>>>5+30*20
605
>>>(5+30)*20
700

অর্থাৎ একই স্টেটমেন্ট শুধুমাত্র ব্র্যাকেটের কারনে দুই ধরনের ফলাফল দিচ্ছে। এর কারন সহজ। প্রত্যেকটা অপারেটরেরই কাজ করার একটা ক্রম থাকে। যেমন আমরা যদি একটা স্টেটমেন্ট লিখি-

>>>2+5-3*7/4%2**4
2

এক্ষেত্রে প্রথমে কাজ করেছে এক্সপোনেনশিয়াল(**), তারপর ভাগ(/), তারপর গুন(*), এরপর মডুলাস(%) এবং শেষে যোপাইথনের সহজ পাঠ-০৪গ(+) এরপর সবশেষে বিয়োগ(-)।
উপরের ক্রমটাই হচ্ছে অপারেটরগুলোর ওয়ার্কিং অর্ডার। বাই ডিফল্ট অপারেটরগুলো এই ক্রম অনুসারেই কাজ করে। আমরা চাইলে প্রয়োজনমত ব্র্যাকেট ব্যবহার করে আমাদের ইচ্ছামত হিসাব করতে পারি।