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

কিন্তু সচরাচর কাজ করার জন্য আমাদেরকে বিভিন্ন ধরনের তথ্য-উপাত্ত নিয়ে কাজ করতে হয়, অর্থাৎ ভেরিয়েবল গুলোও ভিন্ন ভিন্ন হয়। আমরা যেমন এক এক কেজি পানি না কিনে এক লিটার পানি কিনি, তেমনও প্রোগ্রামিং ভাষাগুলোর জন্যো নির্দিষ্ট কাজের জন্য নির্দিষ্ট ধরনের ডাটা ব্যবহার করা হয়। আর এই ভিন্ন ভিন্ন ডাটার ধরণকেই ডাটা টাইপ (Data type) বলা হয়।

প্রত্যেক প্রোগ্রামিং ভাষাতেই সরবরাহকৃত কিছু নির্দিষ্ট বা বিল্ট-ইন (Built-in) ডাটা টাইপ রয়েছে। পাইথনেও আছে, তবে পাইথনের ডাটা টাইপ অনেক সমৃদ্ধ হবার কারণে এবং বোঝার সুবিধার্থে এটাকে কিছু মৌলিক ভাগে ভাগ করা যায় –

  • বুলিয়ান (Boolean)
    • bool
  • বাইনারি (Binary)
    • bytes
    • Bytearray
    • Memoryview
  • নিউমেরিক (Numeric)
    • int
    • float
    • complex
  • স্ট্রিং (String)
    • str
  • সিকুয়েন্স (Sequence)
    • list
    • tuple
  • ম্যাপিং (Mapping)
    • dict
  • সেট (Set)
    • set
    • frozenset

এখন আমরা এই ডাটা টাইপগুলোর বিস্তারিত জানব।

বুলিয়ান (Boolean)

বুলিয়ান ডাটা টাইপ খুবই সীমাবদ্ধ একটা ডাটা টাইপ যেটা শুধুমাত্র True এবং False এর মধ্যেই সীমাবদ্ধ। অর্থাৎ এখানে শুধু এই দুইটা ভ্যালুই থাকতে পারে।

bool

বুলিয়ান ডাটা টাইপকে পাইথনে bool দ্বারা নির্দেশ করা হয়। বুলিয়ান ডাটা কোন কন্ডিশনাল স্টেটমেন্টের ভ্যালু, কোন স্টেটমেন্টের মেসেজ বা ভ্যারিয়েবল ইভালুয়েট ইত্যাদি করতে ব্যবহার করা হয়।

# This program is an example of boolean operator in python

a=10
b=5

# As a Conditional Statement
print(a>b) 
print(a<b)

print(bool("python")) # As a validator

# As a message
if a>b:
    print('a is greater than b')
else:
    print('a is less than b')

ফলাফল আসবে –

True
False
True
a is greater than b

বিঃ দ্রঃ

  • যেহেতু পাইথন কেস সেন্সিটিভ (case sensitive) তাই বুলিয়ান ভ্যালু শুধুমাত্র True এবং False; true এবং false নয়। আশাকরি পার্থক্যটা বুঝতে পেরেছেন।
  • ১০ নম্বর লাইনে লক্ষ্য করলে দেখবেন যে এটার ফলাফল True এসেছে। কেন True? কারণ বুলিয়ান অপারেটর কোন ভ্যারিয়েবলে ভ্যালু থাকলে সেটাকে True এবং না থাকলে অর্থাৎ ফাকা থাকলে False নির্দেশ করে।

নিউমেরিক ডাটা টাইপ (Numeric data type)

নিউমেরিক ডাটা সম্পর্কে আমরা আগেই কমবেশি জানি। অর্থাৎ এখানে সংখ্যা নিয়ে আলোচনা করা হবে।

int

int ডাটা টাইপ একটি পূর্ণ সংখ্যা, ধনাত্বক বা ঋনাত্নক যেকোন সংখ্যার ধারক। পাইথন ডাইনামিক্যালি টাইপ ডিফাইন করে তাই এখানে বড় সংখ্যা নিয়ে কোন চিন্তা করতে হয়না; শুধু খেয়াল রাখতে হবে যেন এটা কোন ভগ্নাংশ না হয়ে যায়।

float

float ডাটা টাইপ দশমিকের পরের সংখ্যাগুলোও নিতে পারে। এখানেই শুধুমাত্র int এর সাথে এর পার্থক্য। float নাম্বার ধনাত্বক বা ঋণাত্বকও হতে পারে।

complex

বিভিন্ন জটিল গাণিতিক সমস্যার ক্ষেত্রে জটিল সংখ্যা ব্যবহার করা হয়। আর এই জটিল সংখ্যাটির জন্যই complex ডাটা ব্যবহার করা হয়। complex নাম্বার কে j দ্বারা প্রকাশ করা হয়।

এখন এই সবগুলো কে একসাথে উদাহরণের মাধ্যমে দেখে নেই –

# This program is an example of numerical data type in python
 
a=10
b=55555555555555555555555555
c=15.155
d=3+4j

print("The value of a is {} and type {}".format(a,type(a)))
print("The value of c is {} and type {}".format(c,type(c)))
print("The value of c is {} and type {}".format(d,type(d)))

ফলাফলঃ

The value of a is 10 and type <class 'int'>
The value of c is 15.155 and type <class 'float'>
The value of c is (3+4j) and type <class 'complex'>

বিঃদ্রঃ এখানে ফলাফল প্রদর্শন করার জন্য .format ব্যবহার করা হয়েছে। এটি ব্যবহারের নিয়ন হচ্ছে যেখানে যেখানে ভ্যাল্য বসবে সেখানে {} দিয়ে ফাঁকা রাখতে হবে, পরে format এর ভিতর ভেরিয়েবল দিয়ে দিতে হবে। {} এর স্থলে ভেরিয়েবল্গুলো একে একে বসে যাবে।

স্ট্রিং (String)

ক্যারেকটার (character) বা অক্ষরের ক্রমিক সন্নিবেশকেই ‘স্ট্রিং’ বলে। ‘স্ট্রিং’ পাইথনে একটি বহুল ব্যবহৃত ডাটা টাইপ। সাধারণ প্রোগ্রাম লেখা থেকে জটিল সফটওয়্যার বানানো, সবখানেই স্ট্রিং এর ব্যবহার অপরিহার্য। এখানে আমরা স্ট্রিং কিভাবে ব্যবহার করতে হয় সেটা দেখার পাশাপাশি কিছু বিল্ট-ইন মেম্বার ফাংশন দেখে নেব।

str

পাইথনে স্ট্রিং কে str দ্বারা প্রকাশ করা হয়। একটা উদাহরণ দেখে নিই –

name="Karim"
print("Your name is {} and the data type is {}".format(name,type(name)))

ফলাফলঃ

Your name is Karim and the data type is <class 'str'>  

অর্থাৎ এখানে Karim একটা স্ট্রিং ডাটা টাইপ।

পূর্বেই উল্লেখ করেছি যে স্ট্রিং হচ্ছে ক্যারেকটার এর ক্রমিক সন্নিবেশ। সুতরাং, ক্যারেকটার গুলো একটি নির্দিষ্ট ইনডেক্স (index) অনুসারে সজ্জিত থাকে, এবং এই ইনডেক্সগুলো আলাদা আলাদা ভাবে নির্দেশ করা যায়। যেমন –

name="Karim"
print("Your name is {} and the 3rd character is {}".format(name,name[2]))

ফলাফলঃ

Your name is Karim and the 3rd character is r

এখানে উল্লেখ্য, ইনডেক্স শুরু হয় 0 থেকে কখনোই 1 থেকে নয়। এখানে name[2] অর্থ তৃতীয় এলিমেন্ট (element)।

স্ট্রিং এর আলোচনার পরিধি অনেক বেশি হবার কারণে এখানেই শেষ করছি, পরবর্তিতে আরো বিস্তারিত আলোচনা করা যাবে।

সিকুয়েন্স (Sequence)

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

লিস্ট (list)

লিস্ট হচ্ছে কালেকশন অফ ডাটা, অন্যান্য প্রোগ্রামিং ভাষায় (C, C++ ইত্যাদি) এটিকে অ্যারে (Array) বলা হয়। লিস্ট ডিফাইন করার জন্য আলাদা কোন মেথড বা ফাংশন নেই। ব্র্যাকেটের ভিতর ডাটাগুলো একে একে কমা দিয়ে স্থাপন করলেই হয়। লিস্টের ভ্যালু পরিবর্তন করা যায়।

# This program is an example of list data type in python
 
a=[10,20,40] #Declaring a list

print("The value of a is {} and type {}".format(a,type(a)))

ফলাফল-

The value of a is [10, 20, 40] and type <class 'list'>

স্ট্রিং এর মত লিস্ট এলিমেন্টগুলো index দিয়ে access করা হয়। নির্দিষ্ট index এর অধীনে লিস্টের ভ্যালু আপডেট করতে হয়।

a=[10,20,40] #Declaring a list

print("The Third value of this list is {}".format(a[1])) # Accessing a specific element in a list

a[1]=30 #update list for specific index

print("The value of updeted list is {}".format(a))

ফলাফল-

The third value of this list is 20                                                                                                                                                     
The value of updated list is [10, 30, 40]

৫ম লাইনে লক্ষ্য করলে দেখতে পাবেন যে এখানে একটি নির্দিষ্ট ইনডেক্স ব্যবহার করে ভ্যালু পরিবর্তন করা হয়েছে।

টাপল (Tuple)

টাপল এবং লিস্ট প্রায় একই ধরনের ডাটা টাইপ; শুধু পার্থক্য হচ্ছে লিস্টে ভ্যালু আপডেট বা ডিলিট করা যায় আর টাপলে যায়না। অর্থাৎ টাপল ইমিউটেবল (immutable) ডাটা টাইপ।

টাপল এর এলিমেন্টগুলোকে প্যারেন্থেসেস () এর ভিতরে কমা দিয়ে লিখতে হয়।

# This program is an example of Tuple data type in python
 
a=(10,20,40) #Declairng a tpple

print("Third value of this tuple is {}".format(a[1])) # Accessing a specific element in a tuple

a[1]=30 #update list for specific index

ফলাফল-

Third value of this list is 20                                                                                                                                                     
Traceback (most recent call last):                                                                                                                                                 
  File "main.py", line 15, in <module>                                                                                                                                             
    a[1]=30 #update list for specific index                                                                                                                                        
TypeError: 'tuple' object does not support item assignment 

উপরের ফলাফলে আমরা একটা এরর দেখতে পাচ্ছি কারণ আমরা ৪র্থ লাইনে টাপলের ভ্যালু আপডেট করার চেষ্টা করেছি যেটা পাইথনে গ্রহণযোগ্য নয়।

ম্যাপিং (Mapping)

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

dict

dict পাইথনের আন অরডারড (unordered) ডাটা টাইপ। সাধারণভাবে চিন্তা করলে একটা বাংলা বা ইংরেজি ডিকশনারিতে যেভাবে শব্দগুলো একটি অক্ষরের অধীনে সন্নিবেশিত থাকে, পাইথন ডিকশনারীতেও একটি key, value pair থাকে। কোনে একটি নির্দিষ্ট value কে তার key দিয়ে access করতে হয়। গঠনটা এমন হয় – key:value, নিচে আমরা উদাহরণের সাহায্যে দেখে নিই।

# This program is an example of dict data type in python
 
a={1:'Python',2:'Anaconda',4:'Cobra'} #Declaring a dict

print("Third value of this dict is {}".format(a)) # Accessing dict
print("The first value of this dict is {}".format(a[1])) # Accessing a specific element in a dict

ফলাফল-

Third value of this dict is {1: 'Python', 2: 'Anaconda', 4: 'Cobra'}                                                                                                               
The first value of this dict is Python  

৬ষ্ঠ লাইনে লক্ষ্য করলে দেখতে পাব যে বিদ্যমান ডিকশনারিটির key দিয়ে value access করা হয়েছে।

সেট (set)

set

গণিতের সেটের ধারণাকে প্রতিপাদন করার জন্য পাইথনে set ডাটা টাইপ তৈরি করা হয়েছে। সেটে কখনো ডুপ্লিকেট ভ্যালু যুক্ত করা যায়না। কোন একটা নির্দিষ্ট এলিমেন্টকে খুজে পেতে লিস্ট অপেক্ষা সেট অনেক বেশি দ্রুততর। সেটে union, intersection এই operation গুলো করা যায়।

# This program is an example of set data type in python
 
a={"Python","Anaconda","Cobra"} #Declaring a set

print("Third value of this set is {}".format(a)) # Accessing set
print("The value Python exists in this set a :{}".format("Python" in a)) # Accessing a specific element in a dict

a.add("Vipers") #adding element in set
a.remove("Anaconda") #remove and element from a set

print("Third value of this set is {}".format(a)) # Accessing set

ফলাফল –

Third value of this set is {'Anaconda', 'Cobra', 'Python'}                                                                                                                         
The value Python exists in this set a :True                                                                                                                                         
Third value of this set is {'Cobra', 'Vipers', 'Python'}

৮ম লাইনে একটা নতুন উপাদান Vipers কে যুক্ত করা হয়েছে।

৯ম লাইনে একটি উপাদান Anaconda কে মুছে ফেলা হয়েছে।

১১ তম লাইনের ফলাফল থেকে দেখতে পাচ্ছি যে আমাদের সেটে Vipers যুক্ত হয়েছে এবং Anaconda বিযুক্ত হয়েছে।

ধন্যবাদ সবাইকে।