পাইথনে ফাইল নিয়ে কাজ ( পর্ব-১৪ )


নিচের প্রোগ্রামিং সংকেতগুলো দেখুন:

f=open(“C:/pythonfile.txt”,”w”)

f.write(“This is written in test basis”)

(কতগুলো অক্ষর লেখা হয়েছে তা দেখাবে)

f.close()

filer=open(“C:/pythonfile.txt”,”r”)

filer.read(30)

আউটপুট দেবে: ‘This is written in test basis’

বুঝতেই পারছেন, পাইথনে ফাইলে লেখা ও পড়া কত সহজ। প্রথমে আপনি ফাইলটি খুলবেন open() কমান্ডের মাধ্যমে। দেখুন এতে দুটি প্যারামিটার রয়েছে। এর মধ্যে প্রথমটি ফাইলটি কোথায় সেভ হবে তা নির্দেশ করছে এবং দ্বিতীয়টি ফাইলটি যে লেখার জন্য খোলা হয়েছে, তা নির্দেশ করছে। write() কমান্ডের মাধ্যমে যেকোনো কিছু ফাইলে লিখতে পারবেন। read() দিয়ে যেকোনো লেখা পড়া সম্ভব, তবে কত অক্ষর পড়তে চান, তা বলে দিতে হবে। লক্ষ করুন, close() কমান্ডের মাধ্যমে কাজ শেষে ফাইল অবশ্যই বন্ধ করতে হবে।

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং: আরও কিছু ( পর্ব-১৩ )


ব্যাংক গ্রাহক ক্লাসের প্রোগ্রামিং সংকেত খেয়াল করুন:

class BankClient:

name = “”

acc_no = 0

address = “”

acc_bal = 0

def createProfile(self,p_name,p_address):

self.name=p_name

self.address=p_address

def createAccount(self,a_acc_no,a_acc_bal):

self.acc_no=a_acc_no

self.acc_bal=a_acc_bal

def showDetails(self):

print(“Mr. “+self.name+” has Account Balance: “+str(self.acc_bal))

এখন যদি আপনি গ্রাহকের ঋণের তথ্য যোগ করতে চান, নতুন করে আবার গ্রাহকের ক্লাস লেখার প্রয়োজন নেই। নতুন LoanInfo নামে একটি ক্লাস যোগ করুন। LoanInfo ক্লাসটি হবে BankClient-এর Child ক্লাস। BankClient ক্লাসটি হবে Parent ক্লাস। নতুন তৈরি করা ক্লাসটি তার নিজস্ব মেথড এবং ভ্যারিয়েবল ছাড়াও Parent ক্লাসের মেথড এবং ভ্যারিয়েবলগুলোও ব্যবহার করতে পারবে। এক ক্লাসের বৈশিষ্ট্য আরেক ক্লাসে এভাবে প্রসারিত করাকে বলা হয় Inheritance এবং এটি বহুল ব্যবহূত একটি ধারণা। LoanInfo(BankClient) ক্লাসটির সংকেতগুলো দেখুন:

class LoanInfo(BankClient):

loan_Type=””

loan_Amount=0

def ApprovedLoan(self,l_type,l_amount):

self.loan_Amount=l_amount

self.loan_Type=l_type

def LoanInfo(self):

print(“Loan Type: “+self.loan_Type+” and Amount: “+str(self.loan_Amount))

এবার নিচের সংকেতগুলো লিখলেই দেখতে পাবেন গ্রাহকের তথ্যের সঙ্গে সঙ্গে ঋণের তথ্যও দেখাচ্ছে।

client3 = LoanInfo()

client3.createProfile(“Salman”, “Khulna”)

client3.createAccount(2445, 10000)

client3.ApprovedLoan(“House”, 200000)

client4 = LoanInfo()

client4.createProfile(“Amir”, “Rajshahi”)

client4.createAccount(2477, 10900)

client4.ApprovedLoan(“Consumer”, 208000)

client3.showDetails()

client3.LoanInfo()

client4.showDetails()

client4.LoanInfo()

পাইথনে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (পর্ব-১২)


আধুনিক প্রোগ্রামিং ভাষার প্রায় সবকটিতেই অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং করার সুবিধা রয়েছে। পাইথনও এর ব্যতিক্রম নয়। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (IIwc)-এর সুবিধা হচ্ছে যেকোনো সমস্যাই ছোট ছোট ভাগে ভাগ করা যায়। আজ ও আগামী পর্বে ওওপির বিভিন্ন বিষয় নিয়ে আলোচনা করা হবে। ধরুন আপনি এটি ব্যাংকের গ্রাহক তথ্য সংরক্ষণের জন্য সফটওয়্যার তৈরি করবেন। তাহলে এটি কীভাবে ওওপির ধারণায় প্রকাশ করবেন তা নিয়ে কিছু ধারণা দিচ্ছি। প্রথমেই আপনাকে একটি class তৈরি করতে হবে। ক্লাস হচ্ছে ভ্যারিয়েবল, মেথড ইত্যাদির সমন্বয়ে তৈরি একটি কাঠামো মাত্র, যা এ ক্ষেত্রে গ্রাহকের নাম, হিসাব নম্বর ইত্যাদি সংরক্ষণ করবে। ক্লাস আগে থেকে নির্ধারিত থাকে না, প্রয়োজনমতো তৈরি করে নিতে হয়। এখন দেখুন, ক্লাস হচ্ছে প্রয়োজনীয় তথ্যের কাঠামো মাত্র, কোনো অর্থবহ তথ্য এখানে থাকে না। এখন গ্রাহকের তথ্য যোগ করতে চাইলে ওই ক্লাসের একটি নতুন instance বানাতে হবে, যা object নামে পরিচিত। এখন গ্রাহক ক্লাসের একটি উদাহরণ দেখুন:

class BankClient:

name = “”

acc_no = 0

address = “”

acc_bal = 0

def createProfile(self,p_name,p_address):

self.name=p_name

self.address=p_address

def createAccount(self,a_acc_no,a_acc_bal):

self.acc_no=a_acc_no

self.acc_bal=a_acc_bal

def showDetails(self):

print(“Mr. “+self.name+” has Account Balance: “+str(self.acc_bal))

এখানে BankClient হচ্ছে একটি ক্লাস, যার কিছু ভ্যারিয়েবল ও মেথড রয়েছে। লক্ষ করুন, ভ্যারিয়েবল ক্লাসের প্রথমেই ডিক্লেয়ার করা হয়েছে। মেথড হচ্ছে

ক্লাসের ভেতরের ফাংশনগুলো। তারপর নিচের সংকেতগুলো লিখুন:

client1 = BankClient()

client1.createProfile(“Rony”,”Dhaka”)

client1.createAccount(1122,1000)

client2 = BankClient()

client2.createProfile(“Johny”,”Khulna”)

client2.createAccount(2211,2000)

client1.showDetails()

client2.showDetails()

তৈরি হয়ে যাবে ক্লায়েন্টের তথ্য, যা showDetails() মেথডের মাধ্যমে দেখা যাবে। এভাবে চেষ্টা করুন আরও কিছু ক্লায়েন্টের তথ্য যোগ করার।

পাইথনে মডিউলের ব্যবহার (পর্ব-১১)


এই পর্ব থেকে আমরা ফাইলে প্রোগ্রামিং সংকেত (কোড) রেখে তার ওপর কাজ করব। পাইথনের সংকেত আপনি উইন্ডোজের নোটপ্যাডেই সেভ করতে পারবেন। আবার http://pype.sourceforge.net থেকে সফটওয়্যারটি নামিয়ে নিয়ে আরও সহজেই কোড সেভ করতে ও চালাতে পারেন। ধরুন আপনি প্রায়ই কিছু সংখ্যার গড় বের করতে আগ্রহী। তাহলে সব সময় গড় বের করার সংকেত না লিখে একেবারই লিখে তা বারবার ব্যবহার করাটা যুক্তিযুক্ত। মডিউলের ধারণা অনেকটা এখান থেকেই এসেছে। মডিউল হচ্ছে একটি ফাইল, যেখানে প্রয়োজনমতো ফাংশন রাখা যায়। নোটপ্যাড চালু করে লিখে ফেলুন নিচের সংকেতগুলো:

def avg(num):

r=0

numlist = num.split()

for n in numlist:

r+=int(n)

res = r/len(numlist)

return res

ফাইলটি “average.py” নামে সেভ করুন আপনার ডেস্কটপে। তারপর আরেকটি ফাইলে লিখে ফেলুন নিচের সংকেতগুলো:

import average

def showtext(buttontext):

if buttontext==”OK”:

entry.insert(t.END,”. The average is: “+str(average.avg(entry.get())))

else:

entry.delete(0,t.END)

import tkinter as t

root=t.Tk()

t.Button(root,text=”Get Average”,

command=lambda x=”OK”: showtext(x)).grid(row=1,column=0)

t.Button(root,text=”Clear All”,

command=lambda x=”CA”: showtext(x)).grid(row=1,column=1)

label=t.Label(root, text=”Numbers to average (Give a space between them)”)

label.grid(row=0,column=0)

entry=t.Entry(root, width=40)

entry.grid(row=0,column=1)

root.mainloop()

এটি “frontend.py” নামে সেভ করুন ডেস্কটপে। লক্ষ করুন ফাইলের নামে উদ্ধৃতি চিহ্ন দেওয়া হয়েছে। উদ্ধৃতি চিহ্ন ছাড়া সেভ করলে তা সাধারণ টেক্সট ফাইল হিসেবে সেভ হবে। তাহলে হয়ে গেল আপনার গড় বের করার মডিউল average যা frontend.py ফাইলটির মাধ্যমে এখানে ব্যবহূত হয়েছে এবং আপনি পরবর্তী সময়ে প্রয়োজনমতো ব্যবহার করতে পারবেন।

স্ট্রিং নিয়ে যত কথা পর্ব-১০স্ট্রিং নিয়ে যত কথা (পর্ব-১০)


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

sample=” Congratulations, Bangladesh Cricket Team “

দেখুন, স্ট্রিংয়ের সামনে এবং পেছনে দুটি করে খালি স্পেস রাখা হয়েছে। এবার নিচের সংকেতগুলো লিখে ফেলুন:

print(sample.lstrip())

সামনের দুটি খালি স্পেস মুছে দিয়ে আউটপুট দেবে: Congratulations, Bangladesh Cricket Team

print(sample.rstrip())

পেছনের দুটি খালি স্পেস মুছে দিয়ে আউটপুট দেবে: Congratulations, Bangladesh Cricket Team

print(sample.upper())

আউটপুট দেবে সব বড় হাতের অক্ষরে: CONGRATULATIONS, BANGLADESH CRICKET TEAM

print(sample.lower())

আউটপুট দেবে সব ছোট হাতের অক্ষরে: congৎatulations, bangladesh cricket team

print(sample.count(“Bangladesh”))

সম্পূর্ণ স্ট্রিংয়ের মধ্যে Bangladesh শব্দটি কতবার আছে, তা আউটপুট দেবে (স্ট্রিংয়ের ভেতরের স্ট্রিংকে সাবস্ট্রিং বলা হয়): 1

print(sample.replace(“Cricket”,”Football”))

প্রথম শব্দকে দ্বিতীয় শব্দ দ্বারা পরিবর্তন করে আউটপুট দেবে: Congratulations, Bangladesh Football Team

এবার নিচের স্ট্রিং লক্ষ করুন:

s=”Dhaka-1000”

তারপর নিচের সংকেতগুলো লিখুন:

for c in range(0,len(s)):

print(s[c])

এখানে দুটি ফাংশন ব্যবহার করা হয়েছে। একটি হচ্ছে len(), যা স্ট্রিংয়ে যতগুলো অক্ষর আছে তার সর্বমোট সংখ্যা দেখাবে। range() ফাংশন ফর লুপের জন্য ব্যবহার করা হয়। দুবার এন্টার চাপলে দেখবেন এক এক করে পরপর সব অক্ষর দেখাচ্ছে। এখানে দুটি বিষয় লক্ষ করুন: range() ফাংশন দিয়ে যেকোনো list সংক্ষেপে প্রকাশ করা যায়। আরেকটি হচ্ছে, যেকোনো স্ট্রিংয়ের প্রতিটি অক্ষরের একটি index থাকে, যা 0 থেকে শুরু হয়।

লেবেল, বাটন ও টেক্সটবক্স (পর্ব-৯)


আমরা ছোট একটি ফর্মে লেবেল, টেক্সটবক্স ও বাটনের উদাহরণ দেখব আজকের পর্বে। নিচের সংকেতটি দেখুন:

def showtext(buttontext):

if buttontext==”OK”:

entry.insert(t.END,”You’ve pressed “+str(buttontext))

else:

entry.delete(0,t.END)

import tkinter as t

root=t.Tk()

t.Button(root,text=”OK”,

command=lambda x=”OK”: showtext(x)).grid(row=1,column=0)

t.Button(root,text=”Clear All”,

command=lambda x=”CA”: showtext(x)).grid(row=1,column=1)

label=t.Label(root, text=”This will show your Text”)

label.grid(row=0,column=0)

entry=t.Entry(root)

entry.grid(row=0,column=1)

root.mainloop()

প্রথমে একটি ফাংশন রয়েছে, যেটি কোনো বাটনে ক্লিক করা হলে তার ওপর আউটপুট দেবে। মূল কোডটি দেখুন, import tkinter as t দিয়ে tkinter টুলকিট t ভ্যারিয়েবলে নেওয়া হয়েছে। t.Tk() ব্যবহার করলে আপনি একটি ফর্ম দেখতে পাবেন, যা root ভ্যারিয়েবলে রাখা হয়েছে। এখন আপনি root -এর মধ্যে বাটন, লেবেল, টেক্সটবক্স (এরা কন্ট্রোল হিসাবে পরিচিত) যোগ করতে পারবেন। পরের দুটি লাইনে দুটি বাটন যোগ করা হয়েছে। তারপর রয়েছে একটি লেবেল এবং তার পরে টেক্সটবক্স যোগ করার জন্য দুটি লাইন লেখা হয়েছে। টেক্সটবক্সের কোড বাদে বাকি সবগুলোতেই text কথাটি রয়েছে। text হচ্ছে একটি প্রোপার্টি, প্রতিটি কন্ট্রোলেরই এ রকম প্রোপার্টি রয়েছে। তবে কন্ট্রোলভেদে তা ভিন্ন ভিন্ন হতে পারে। বাটনের একটি প্রোপার্টি হচ্ছে command, যা ওই বাটনটি কি কাজ করবে তা নির্দেশ করে। কমান্ড হিসেবে ফাংশন ব্যবহার করা হয়। তাই ওপরের ফাংশনটি লেখা হয়েছে। দেখুন, lambda ব্যবহার করা হয়েছে, এটি বাটনের ওপর ভিত্তি করে ওপরের ফাংশনের একটি প্রতিরূপ করবে। lambda দিয়ে প্রয়োজনমতো যেকোনো লাইনে নতুন ফাংশন লেখা যায়। কোন কন্ট্রোল কোথায় বসবে তা নির্ধারণ করা হয় সারি ও কলামের হিসাবের মাধ্যমে। দেখুন প্রতি কন্ট্রোলের একটি row এবং column রয়েছে।

পাইথনে জিআইইউ প্রোগ্রামিং (পর্ব - ৮)


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

import tkinter as t

def click(button):

if button == “=”:

try:

result = eval(entry.get())

entry.insert(t.END,”=”+str(result))

except:

entry.insert(t.END,”=>Invalid Input”)

else:

if “=” in entry.get():

entry.delete(0,t.END)

entry.insert(t.END,button)

(এ পর্যন্ত লেখা হয়ে গেলে দুবার এন্টার চাপুন, তারপর নিচের সংকেতগুলো লিখুন)

root = t.Tk() (দেখবেন, ছোট একটি উইন্ডো, এটি বন্ধ করবেন না)

root.title(“Calculator”)

buttonlist = [

“7”, “8”, “9”, “*”,

“4”, “5”, “6”, “/”,

“1”, “2”, “3”, “-”,

“0”, “.”, “=”, “+”]

r=1

c=0

for button in buttonlist:

t.Button(root,text=button,width=4,

command=lambda x=button: click(x)).grid(row=r,column=c)

c+=1

if c>3:

c=0

r+=1

(আবারও দুবার এন্টার চেপে নিচের সংকেতগুলো লিখুন)

entry = t.Entry(root,width=22)

entry.grid(row=0, column=0, columnspan=4)

root.mainloop()

সব ঠিকমতো লিখলে দেখতে পাবেন ছোট একটি ক্যালকুলেটর মনিটরের এক প্রান্তে তৈরি হয়ে আছে। পাইথনে জিআইইউ তৈরির জন্য অনেক জনপ্রিয় টুলকিট রয়েছে। এ রকম একটি টুলকিট হচ্ছে tkinter, যা import নির্দেশের মাধ্যমে ব্যবহার করা হয়েছে।

পাইথনে একটি প্রোগ্রাম (পর্ব-৭)


পাইথনে লেখা প্রোগ্রামিং সংকেত আপনি চাইলে যেকোনো ফাইলে সেভ করে পরে সরাসরি ফাইল থেকে ব্যবহার করতে পারেন। নতুনদের জন্য সহজ উপায়...

লুপ এবং ফাংশন (পর্ব-৬)


পর্ব-৫-এর while লুপের উদাহরণটি আমরা অন্যভাবেও করতে পারি। নিচে সেটা দেওয়া হলো—

res=0

for counter in [0,1,2,3,4,5,6,7,8,9]:

i=input(“Enter the values: “)

n=int(i)

res+=n

দেখুন, তৃতীয় বন্ধনীর মধ্যে ০ থেকে ৯ পর্যন্ত ১০টি সংখ্যা লেখা হয়েছে। ডেটার এ ধরনের অনুক্রমিক সংগ্রহকে পাইথনে list বলা হয়। লুপের শুরুতে counter ভ্যারিয়েবল দেওয়া হয়েছে, যেটি list-এ যতসংখ্যক ডেটা রয়েছে, ততবার লুপের মধ্যের সংকেতগুলো ব্যবহার করবে। গুরুত্বপূর্ণ বিষয় হচ্ছে, res ভ্যারিয়েবলটি প্রথমে ০ দ্বারা শুরু করা হয়েছে। সর্বশেষ লাইনটি ব্যাখ্যা করলেই বুঝতে পারবেন এর কারণ। res+=n হচ্ছে res=res+n-এর সংক্ষিপ্ত রূপ। যার মানে হচ্ছে, res ভ্যারিয়েবলের পূর্ব মানের সঙ্গে n ভ্যারিয়েবলের মান পযাগ করে আবার res ভ্যারিয়েবলেই রাখা হচ্ছে। res ভ্যারিয়েবলটিতে যদি কোনো প্রারম্ভিক মান না দেওয়া থাকে, তাহলে সংকেতটি কাজ করবে না। প্রারম্ভিক মানের ক্ষেত্রে ০ দেওয়া হয়েছে, ০ ছাড়া অন্য কোনো মান ব্যবহার করলে যোগফলে ওই মানটি যোগ হয়ে যাবে, এতে যোগফল ভুল আসবে। এখন আসা যাক ফাংশনের ধারণায়। ফাংশনের দুটি মূল উপাদান হচ্ছে প্যারামিটার ও রিটার্ন ভ্যালু। উদাহরণ:

def oddorevennum(num):

if num%2==0:

print(“It¤s an even number”)

else:

print(“It¤s an odd number”)

এখন আপনি যখনই oddorevennum()-এর ভেতরে একটি নম্বর দেবেন, তখনই এটি আউটপুট দেবে যে এটি জোড় না বিজোড় সংখ্যা। পরখ করে দেখুন oddorevennum(15) বা oddorevennum(4568)-এর জন্য কী আউটপুট আসে। শেষ করার আগে বলে নিই, % হচ্ছে মডুলাস অপারেটর। অপারেটরটির বাঁ পাশের নম্বরটিকে ডান পাশেরটি দিয়ে ভাগ করার পর ভাগশেষ কী থাকে, তা নির্ণয় করে এই অপারেটরটি।

ব্যবহারকারীর ইনপুট এবং লুপ (পর্ব-৫)


ব্যবহারকারীর ইনপুট নিয়ে পাইথনে কীভাবে কাজ করতে হয়, তার একটি উদাহরণ থাকছে আজকের পর্বে।

input(“Enter where you live: “)

নিচের লাইনে আসবে: Enter where you live: (এখানে Bangladesh লিখে এন্টার করুন) দেখবেন ‘Bangladesh’ আউটপুট এসেছে। লক্ষ করুন, আউটপুট একক উদ্ধৃতি চিহ্নের (‘’) মধ্যে দেখালেও, এটি একটি স্ট্রিং। ভ্যারিয়েবলে স্ট্রিং রাখার সময় আপনি চাইলে (‘’) বা (“”) ব্যবহার করতে পারেন। এখন ধরুন, আপনি একটি প্রোগ্রাম বানাতে চান, যেটি ব্যবহারকারীর কাছ থেকে একটি সংখ্যা নেবে এবং তার বর্গ করে দেখাবে। সংকেতটি হবে এ রকম—

userinput=input(“Enter the number: ”)

Enter the number: (এখানে 2800 লিখে এন্টার চাপুন)

num=int(userinput)

result=num**2

print(result)

ইনপুটের মাধ্যমে যে ডেটা নেওয়া হয়েছে, তা userinput ভ্যারিয়েবলে রাখা হয়েছে এবং ডেটা টাইপ হচ্ছে স্ট্রিং। গাণিতিক কাজ করার জন্য ডেটা টাইপ হতে হবে নম্বর। তাই num ভ্যারিয়েবলে ডেটাকে ইন্ট টাইপে রূপান্তর করে রাখা হয়েছে। শেষে result ভ্যারিয়েবলে সংখ্যাটির বর্গ রাখা হয়েছে। সংখ্যার ঘাত নির্ণয়ের জন্য ** অপারেটর ব্যবহূত হয়। আজ শেষ করব লুপের একটি ছোট ধারণা দিয়ে। ধরুন আপনি ব্যবহারকারীর কাছ থেকে ১০টি নম্বর নিয়ে তার যোগফল দেখাবেন। দশবার তাহলে আপনাকে ইনপুট, ডেটা টাইপ কনভার্ট ও ডেটা ভ্যারিয়েবলে যোগ করার কোড লিখতে হবে। তা না করে আপনি এভাবে করে দেখুন:

res=0

counter=1

while(counter)

প্রোগ্রামের মধ্যে সিদ্ধান্ত নেওয়া (পর্ব-৪)


কম্পিউটার প্রোগ্রামের একটি গুরুত্বপূর্ণ বিষয় হচ্ছে কোনো শর্তের ওপর ভিত্তি করে সিদ্ধান্ত নেওয়ার ব্যবস্থা। পাইথনে এ জন্য if, else, elif স্টেটমেন্ট ব্যবহার করা হয়ে থাকে। এই স্টেটমেন্টগুলো নিয়ে বিস্তারিত আলোচনার আগে স্টেটমেন্ট, এক্সপ্রেশন ও অপারেটর কী, তা জানা দরকার। স্টেটমেন্ট হচ্ছে একটি স্বয়ংসম্পূর্ণ বাক্য, যা ইন্টারপ্রেটারের বোধগম্য। এক্সপ্রেশন হচ্ছে ভ্যারিয়েবল, অপারেটর, ভ্যালু ইত্যাদির সমন্বয়ে গঠিত একটি অংশ। অপারেটর হচ্ছে গাণিতিক ও যৌক্তিক কিছু প্রতীক। নিচের উদাহরণটি দেখুন:

value=5

if(value*2==10):

print(“Value is 10”)

(দুবার এন্টার করুন আউটপুট দেখার জন্য)

ওপরের কোডে দুটি স্টেটমেন্ট আছে। একটি হচ্ছে value=5, যা অ্যাসাইনমেন্ট স্টেটমেন্ট। কারণ, এটি value ভ্যারিয়েবলে একটি ভ্যালু অ্যাসাইন করছে। পরের দুই লাইন মিলে হচ্ছে একটি if স্টেটমেন্ট, যার মধ্যে রয়েছে একটি এক্সপ্রেশন value*2==10। যদি এক্সপ্রেশনটি সত্যি হয়, তাহলে ভেতরের স্টেটমেন্টটি কাজ করবে। == (দুবার সমান চিহ্ন) হচ্ছে একটি অপারেটর। এটি দুটি ভ্যালু সমান কি না, তা তুলনা করে। এখানে দেখুন, তৃতীয় লাইনে কিছু জায়গা খালি রেখে দেওয়া হয়েছে। যেসব স্টেটমেন্ট এক লাইনের বেশি লিখতে হয়, সেসব ক্ষেত্রে প্রথম লাইনের পরের লাইনগুলো চারটি স্পেস বেশি দিয়ে লিখতে হয়। চারটি স্পেস না দিয়ে একবার ট্যাব দিতে পারেন; কিন্তু একই কোডে একই সঙ্গে ট্যাব ও স্পেস ব্যবহার করা যাবে না, যেকোনো একটি ব্যবহার করতে হবে। ওপরের কোডে value*2==10 এক্সপ্রেশনে ১০-এর জায়গায় অন্য কোনো সংখ্যা লিখে দেখুন, কোনো কিছুই আসবে না। এবার নিচের কোডটি দেখুন:

value=5

if(value*2==8):

print(“If condition TRUE”)

else:

print(“Else condition TRUE”)

(দুবার এন্টার করুন আউটপুট দেখার জন্য)

এবার আউটপুট আসবে দ্বিতীয় else স্টেটমেন্ট থেকে। দুইয়ের বেশি শর্ত থাকলে if এবং else এর মাঝে elif ব্যবহার করতে পারেন।

ডেটা টাইপ নিয়ে কিছু কথা (পর্ব-৩)


ডেটা টাইপ নিয়ে আলোচনা শুরু হচ্ছে। নম্বর ডেটা টাইপ বেশ কয়েক প্রকারের রয়েছে, যার মধ্যে দুটি হচ্ছে গুরুত্বপূর্ণ: ইন্ট (int) বা ইন্টিজার, যা পূর্ণসংখ্যা নির্দেশ করে এবং ফ্লোট (float) যা দশমিক যুক্ত সংখ্যা নির্দেশ করে। ডেটা টাইপের মধ্যে এ ধরনের বিভিন্ন শ্রেণীবিভাগ থাকার কারণ হচ্ছে, একেক ধরনের টাইপের ওপর একেক ধরনের কাজ সম্পাদন করা যায়। এক ডেটা টাইপ থেকে অন্য ডেটা টাইপে পরিবর্তনসংক্রান্ত কিছু সংকেত (কোড) নিচে দেখানো হলো।

var1=100

var2=10.66

var3=int(var2)

var4=“100”

var5=var1*4

var6=var4*4

var7=int(var6)

var8=var7/4

print(var1, var2, var3, var4, var5, var6, var7, var8)

আউটপুট: 100 10.66 10 100 400 100100100100 100100100100 25025025025.0

দেখুন, প্রথম ভ্যারিয়েবলটির টাইপ হচ্ছে ইন্ট, দ্বিতীয়টি ফ্লোট, তৃতীয় ভ্যারিয়েবলে দ্বিতীয় ভ্যারিয়েবলের টাইপ পরিবর্তন (কনভারশন) করে ফ্লোট থেকে ইন্ট করা হয়েছে। চতুর্থ ভ্যারিয়েবলটি সংখ্যা হলেও এটির ডেটা টাইপ কিন্তু স্ট্রিং (সংক্ষেপে str)। এর কারণ, উদ্ধৃতি চিহ্নের মধ্যে লেখা সংখ্যাও স্ট্রিং হিসেবে বিবেচিত হয়। পরের দুটি ভ্যারিয়েবলে যথাক্রমে ইন্ট এবং স্ট্রিং ডেটা টাইপের দুটি গুণন রাখা হয়েছে। পরেরটিতে স্ট্রিংকে ইন্ট ডেটা টাইপে নেওয়া হয়েছে এবং তার পরেরটিতে আরেকটি গুণ করা হয়েছে। আউটপুট খেয়াল করুন, var5 দুটি সংখ্যার গুণফল দেখালেও, var6 পর পর চারবার প্রিন্ট করে দেখিয়েছে var4-এর স্ট্রিংকে।

পাইথনে ডেটা টাইপ এবং ভ্যারিয়েবল (পর্ব-২)


যেকোনো প্রোগ্রামিং ভাষায় কাজ করার জন্য ডেটা টাইপ এবং ভ্যারিয়েবলের ধারণা থাকা জরুরি। ডেটা টাইপ হচ্ছে যে তথ্য বা উপাত্ত নিয়ে কাজ করা হচ্ছে, তার প্রকারভেদ। সহজে ব্যাপারটি এভাবে দেখা যায়, আমি একজন বাংলাদেশি, এটি হচ্ছে কতগুলো অক্ষরের সমন্বয়ে তৈরি একটি বাক্য, আবার ১০০০, ২৫০০০ ইত্যাদি হচ্ছে সংখ্যা। পাইথন প্রোগ্রামিংয়ের ক্ষেত্রে বাক্য বা অক্ষরের ডেটা টাইপ হচ্ছে স্ট্রিং এবং সংখ্যার জন্য তা হচ্ছে নম্বর। এ ছাড়া রয়েছে বুলিয়ান, যেটা দিয়ে কোনো শর্ত সত্য না মিথ্যা তা নির্ণয় করা হয়। ভ্যারিয়েবল হচ্ছে তথ্য (ডেটা) সংরক্ষণ করার একটি অস্থায়ী ব্যবস্থা। ভ্যারিয়েবলে ডেটা রেখে আপনি বিভিন্ন গাণিতিক এবং যৌক্তিক কাজ সম্পাদন করতে পারবেন। তাহলে পাইথন চালু করে লিখে ফেলুন নিচের লাইনগুলো (প্রতি লাইনের পর এন্টার করুন)।

num1 = 5600

num2 = 6500

num1+num2

(এখানে আউটপুট দেখাবে)

country = “Bangladesh”

print(“I live in ” + country)

(এখানে আউটপুট দেখাবে)

ভ্যারিয়েবল নামকরণের ক্ষেত্রে সতর্ক থাকতে হবে। নাম অবশ্যই কোনো অক্ষর দিয়ে শুরু করতে হবে, সংখ্যা বা অন্য কিছু দিয়ে শুরু করা যাবে না এবং ভ্যারিয়েবলের নামে অক্ষর কিংবা সংখ্যা বা আন্ডারস্কোর (-) ছাড়া অন্য কিছু ব্যবহার করা যাবে না। এ ছাড়া লক্ষণীয় যে বড় হাতের অক্ষর এবং ছোট হাতের অক্ষরে লেখা ভ্যারিয়েবল এক নয়। যেমন— num1, Num1 এবং NUM1 তিনটি আলাদা ভ্যারিয়েবল নির্দেশ করে। লক্ষ করুন, ডেটা টাইপ স্ট্রিং হলে তা উদ্ধৃতি চিহ্নের (“ ”) ভেতরে লিখতে হবে। যাঁদের জাভার মতো প্রোগ্রামিং ভাষায় কাজ করার অভিজ্ঞতা রয়েছে, তাঁরা লক্ষ করুন, পাইথনে ভ্যারিয়েবলের টাইপ ডিক্লেয়ার করার কোনো প্রয়োজন নেই।