গতপর্বে আমরা পাইথনের ভ্যারিয়েবল সম্পর্কে জেনেছি। অপারেটর হচ্ছে সেটাই যেটা ভ্যারিয়েবল বা একটি কন্সট্যান্ট কে অপারেট করে, অর্থাৎ নতুন কোন অপারেশন করে। অপারেটর সাথে আমরা অনেক আগে থেকেই পরিচিত। উদাহরণস্বরুপ একটা গাণিতিক স্টেটমেন্ট লক্ষ্য করি –
10+10=20
এখানে 10 হচ্ছে অপারেন্ড (operand) আর + হচ্ছে অপারেটর যেটা অপারেন্ড এর উপর কাজ করছে। পাইথনে বেশ কয়েক ধরণের অপারেটর আছে –
- গাণিতিক অপারেটর (Arithmetic operator)
- এসাইনমেন্ট অপারেটর (Assignment operator)
- কমপারিজন অপারেটর (Comparison operator)
- লজিক্যাল অপারেটর (Logical operator)
- আইডেন্টিটি অপারেটর (Identity operator)
- বিটওয়াইজ অপারেটর (Bit-wise operator)
- মেম্বারশিপ অপারেটর (Membership operator)
আসুন এগুলো আমরা একে একে দেখে নেই –
গাণিতিক অপারেটর (Arithmetic operator)
নাম দেখেই হয়ত এতক্ষণে বুঝে ফেলেছেন যে এই অপারেটরের কাজ কি। হ্যা, গাণিতিক সমস্যা সমাধান করার জন্য arithmetic operator ব্যবহার করা হয়।
অপারেটর | নাম | বর্ণনা |
+ | যোগ | দুইটি সংখ্যাকে যোগ করার ক্ষেত্রে ব্যবহার করা হয়। |
– | বিয়োগ | একটি সংখ্যা থেকে আর একটি সংখ্যা বিয়োগ করার ক্ষেত্রে ব্যবহার করা হয়। |
* | গুন | দুইটি সংখ্যাকে গুন করার ক্ষেত্রে ব্যবহার করা হয়। |
** | সূচক (exponential) | সূচক বা কোন সংখ্যার পাওয়ার (Power) গণনার ক্ষেত্রে ব্যবহার করা হয়। অর্থৎ |
/ | ভাগ | একটি সংখ্যাকে আর একটি সংখ্যা দিয়ে ভাগ করার ক্ষেত্রে ব্যবহার করা হয়। |
// | ফ্লোর ডিভিশন (Floor division) | ভাগফলকে মূলদ সংখ্যা হিসেবে পাওয়ার জন্য ব্যবহার করা হয়। এক্ষত্রে ভগ্নাংশ অংশটিকে অগ্রাহ্য করা হয়। |
% | মডুলাস | ভাগ করার ফলে প্রাপ্ত ভাগশেষটি কত হবে সেটা বের করার জন্য মডুলাস ব্যবহার করা হয়। |
এখন আমরা প্র্যত্যেকটি অপারেটরের জন্য একটি করে উদাহরণ দেখে নেই –
# This program is an example of an arithmetic operator in python
a=14
b=5
print (a+b) # যোগ
print(a-b) #বিয়োগ
print(a*b) #গুন
print(a**b) #exponential
print(a/b) #ভাগ
print(a//b) #ফ্লোর ডিভিশন
print(a%b) #মডুলাস
এসাইনমেন্ট অপারেটর (Assignment operator)
এসাইনমেন্ট অপারেটর কোন একটি ভ্যারিয়েবলে ভ্যালু এসাইন করার জন্য ব্যবহার করা হয়। নিচে কিছু এসাইনমেন্ট অপারেটর দেখে নেই –
অপারেটর | ব্যাখ্যা | বর্ণনা |
= | মূলত এটাই প্রকৃত এসাইনমেন্ট অপারেটর। বাকি যেগুলো আছে সেগুলো এটি থেকেই উদ্ভূত (derived) | ডান দিকের অপারেন্ড এর ভ্যাল্যু কে বাম দিকের অপারেন্ড এ এসাইন করে। |
+= | a+=b অর্থ a=a+b | বাম এবং ডান দিকের অপারেন্ডকে যোগ করে বাম দিকের অপারেন্ডে ভ্যাল্যু এসাইন করে। |
-= | a-=b অর্থ a=a-b | ডান দিকের অপারেন্ডকে বাম দিকের অপারেন্ডের সাথে যোগ করে বাম অপারেন্ডে ভ্যালু এসাইন করে। |
*= | a*=b অর্থ a=a*b | বাম এবং ডান দিকের ভ্যালুকে গুন করে বাম অপারেন্ডে এসাইন করে। |
/= | a/=b অর্থ a=a/b | বাম অপারেন্ডকে ডান অপারেন্ডের ভ্যালু দিয়ে ভাগ করে বাম অপারেন্ডে এসাইন করে। |
%= | a%=b অর্থ a=a%b | দুইটি অপারেন্ডের মডুলাস নিয়ে বাম অপারেন্ডে এসাইন করে। |
//= | a//=b অর্থ a=a//b | বাম দিকের অপারেন্ড দ্বারা ফ্লোর ডিভিশন করে বাম দিকের অপারেন্ডে এসাইন করে। |
**= | a**=b অর্থ a=a**b | সূচকের মান গণনা করে বাম পাশের অপারেন্ডে ভ্যালু এসাইন করে। |
এখানে বিশেষভাবে উল্লেখ্য যে শুধুমাত্র ‘=’ অপারেটর ব্যবহার করেই অনেক এক্সপ্রেশনকে অনেক সংক্ষিপ্তাকারে লেখা যায়।
এখন এই অপারেন্ড ব্যবহার করে কিছু উদাহরণ দেখে নেই –
# This program is an example of assignment operator in python
a=10
b=5
c=8
d=4
e=6
f=7
g=9
h=6
i=a # = অপারেটর
print (i)
b+=a # += অপারেটর
print(b)
c-=a # -= অপারেটর
print(c)
d*=c # *= অপারেটর
print(d)
e/=d # /= অপারেটর
print(e)
f%=e # %= অপারেটর
print(f)
g//=f # //= অপারেটর
print(g)
h**=g # **= অপারেটর
print(h)
কমপারিজন অপারেটর (comparison operator)
দুইটা ভ্যালুকে তুলনা করার জন্য কমপারিজন অপারেটর ব্যবহার করা হয়। এখানে উল্লেখ্য যে এই অপারেটর ব্যবহার করে সৃষ্ট স্টেটমেন্ট এর ভ্যালু সত্য (True) অথবা মিথ্যা (False) হয়। নিচে এই অপারেটরগুলো দেখে নেই –
অপারেটর | নাম | বর্ণনা |
== | ইকুয়াল (Equal) | দুইটি অপারেন্ড সমান কিনা সেটা যাচাই করে। সমান হলে True আর না হলে False প্রদর্শন করে। |
!= | নট ইকুয়াল (Not equal) | ইকুয়াল অপারেটরের ঠিক উল্টো। অর্থাৎ সমান না হলে True এবং সমান হলে False প্রদর্শন করে। |
> | গ্রেটার দ্যান (Greater than) | দুইটা অপারেন্ড এর ভিতর বড় ছোট যাচাই করতে ব্যবহার করা হয়। ডান পাশের অপারেন্ড থেকে বাম পাশের টা বড় হলে True প্রদর্শন করে, অন্যথায় False প্রদর্শন করে। |
< | লেস দ্যান (Less than) | গ্রেটার দ্যান অপারেটরের ঠিক উল্টো, অর্থাৎ ডান পাশের অপারেন্ড থেকে বাম পাশের টা বড় হলে False এবং না হলে True প্রদর্শন করে। |
>= | গ্রেটার দ্যান অর ইকুয়াল টু (Greater than or equal to) | গ্রেটার দ্যান অপারেটরের মতই, শুধু এখানে সমান হলেও সত্য হবে। |
<= | লেস দ্যান অর ইকুয়াল টু (Less than or equal to) | লেস দ্যান অপারেটরের মতই, কিন্তু এখানে সমান হলেও সত্য হবে। |
এখানে এই অপারেটরগুলো ব্যবহার করে কিছু উদাহরণ দেখে নেই –
# This program is an example of comparison operator in python
a=10
b=5
print(a==b) # == অপারেটর
print(a!=b) # != অপারেটর
print(a>b) # > অপারেটর
print(a<b) # < অপারেটর
print(a>=b) # >= অপারেটর
print(a<=b) # <= অপারেটর
লজিক্যাল অপারেটর (Logical operator)
সাধারণত এক বা একাধিক কন্ডিশনাল স্টেটমেন্টকে সরলীকরণ করে একটা সাধারণ সিদ্ধান্তে পৌছানোর জন্য লজিক্যাল অপারেটর ব্যবহার করা হয়। সর্বমোট ৩ টা লজিক্যাল অপারেটর রয়েছে –
অপারেটর | বর্ণনা |
and | যদি দুইটি স্টেটমেন্টই সত্য হয় তাহলে True প্রদর্শন করে। |
or | যেকোন একটি স্টেটমেন্ট সত্য হলেই True প্রদর্শন করে। |
not | প্রাপ্ত ফলাফলের বিপরীতটা প্রদর্শন করে। অর্থাৎ সত্য হলে মিথ্যা এবং মিথ্যা হলে সৎ করে দেয়। |
এখন আমরা লজিক্যাল অপারেটরের কিছু উদাহরণ দেখে নেই-
# This program is an example of logical operator in python
a=5
b=10
print(a<b and b>a) # and অপারেটর
print(a>b or b>a) # or অপারেটর
print(not(a>b or b>a)) # not অপারেটর
আইডেন্টিটি অপারেটর (Identity operator)
একটু আগেই আমরা কমপারিজন অপারেটরগুলো দেখে নিলাম; কিন্তু এগুলো মূলত ভ্যালুর উপর কাজ করা। আইডেন্টিটি অপারেটর কোন অবজেক্ট একই কিনা অর্থাৎ একই মেমরি লোকেশনের কিনা সেটা যাচাই করার জন্য ব্যবহার করা হয়।
আইডেন্টিটি অপারেটরের সংখ্যা মাত্র দুইটি –
অপারেটর | বর্ণনা |
is | যদি দুইটা অবজেক্ট একই হয় তাহলে True প্রদর্শন করে। |
is not | যদি দুইটা অবজেক্ট একই না হয় তাহলে True প্রদর্শন করে। |
এখনে আমরা এ সম্পর্কিত একটা উদাহরণ দেখে নেই –
# This program is an example of identity operator in python
a=10
b=10
c=a
print(a is b) # is অপারেটর
print(a is not b) # is not অপারেটর
print(a is c) # is অপারেটর
print(a is not c) # is not অপারেটর
বিটওয়াইজ অপারেটর (Bit-wise operator)
বাইনারি হিসাব নিকাশের জন্য বিটওয়াইজ অপারেটর ব্যবহার করা হয়। যাদের লজিক গেট (Logic Gate) সম্পর্কে ভাল ধারণা আছে তাদের জন্য এই অংশটুকু বুঝতে সুবিধা হবে।
যদিও এই পর্বটা লজিক গেট বা বাইনারি সংখ্যা আলোচনার জন্য নয়, তবুও খুবই অল্প পরিমাণে গেট সম্পর্কে আলোচনা করা যাক। আমাদের কম্পিউটার বা যেকোন ইলেক্ট্রনিক্স ডিভাইস বানিনারি সংখ্যার উপর ভিত্তি করে তৈরি, অর্থাৎ ০ অথবা 1, এজন্য সচরাচর ব্যবহৃত সংখ্যাকে বাইনারিতে রুপান্তর প্রয়োজন। যেমন ৫ এর বাইনারি 101 এবং ১০ এর বাইনারি 1010. এখন আমরা যদি ৫ আর ১০ কে বাইনারি তে যোগ করি তাহলে –
1010
+101
-----
1111
1111 অর্থাৎ ১৫
আশা করি বুঝতে পেরেছেন। যদি বুঝতে না পারেন তাহলে এখান থেকে দেখে নিতে পারেন। এখন আমরা অপারেটরগুলো দেখে নেই –
অপারেটর | নাম | বর্ণনা |
& | AND | লজিক্যাল AND অপারেটর; অর্থাৎ 1 হবে যদি সকল বিট (Input Line) 1 হয়। |
| | OR | লজিক্যাল OR অপারেটর; অর্থাৎ যেকোন একটা বিট (Input Line) 1 হলেই 1 হবে। |
^ | XOR | লজিক্যাল XOR অপারেটর; অর্থাৎ যদি বিজোড় সংখ্যক বিট (Input Line) 1 হয় তবেই শুধুমাত্র 1 হবে। |
~ | NOT | লজিক্যাল NOT অপারেটর; অর্থাৎ 0 থাকলে 1 এবং 1 থাকলে 0 হবে। |
<< | Binary left shift | বিটগুলোকে বাম দিকে সরিয়ে দেওয়ার জন্য। |
>> | Binary right shift | বিটগুলোকে ডান দিকে সরিয়ে দেওয়ার জন্য। |
এখন আমরা এগুলো নিয়ে কিছু উদাহরণ দেখে আসি –
# This program is an example of bitwise operator in python
a=10
b=5
print(a&b) # AND অপারেটর
print(a|b) # OR অপারেটর
print(a^b) # XOR অপারেটর
print(~a) # NOT অপারেটর
print(a<<2) # Binary Left Shift অপারেটর।
print(a>>2) # Binary Right Shift অপারেটর
টীকাঃ এখানে a<<2 এবং a>>2 দিয়ে দুই ঘর বামে এবং ডানে সরানো হয়েছে। a এর ভ্যালু 10 এবং 10 এর বাইনারি 1010; এটাকে দুইঘর বামে সরালে হবে 1010 00 অর্থাৎ 40. আবার এটাকে ডানে সরালে 00 10 অর্থাৎ ২ হবে।
মেম্বারশিপ অপারেটর (Membership operator)
কোন পাইথন অবজেক্ট (list, tuple, string, etc.) এ নির্দিষ্ট কোন এলিমেন্ট আছে কিনা এটা যাচাই করার জন্য মেম্বারশিপ অপারেটর ব্যবহার করা হয়। পাইথনে দুইটা মেম্বারশিপ অপারেটর আছে –
অপারেটর | বর্ণনা |
in | যদি এলিমেন্টটি ঐ নির্দিষ্ট অবজেক্টে থাকে তাহলে True প্রদর্শন করবে। |
not in | যদি এলিমেন্টটি ঐ নির্দিষ্ট অবজেক্টে না থাকে তাহলে True প্রদর্শন করবে। |
আসুন আমরা একটি উদাহরণ দেখে নেই –
# This program is an example of membership operator in python
a=10
b=5
testList=[1,10,20,30,40,50] # This is a list
print(a in testList) # in অপারেটর
print(b in testList) # in অপারেটর
print(a not in testList) # not in অপারেটর
print(b not in testList) # not in অপারেটর
বিঃ দ্রঃ লিস্ট নিয়ে এখন পর্যন্ত আলোচনা করা হয়নি। সংক্ষেপে লিস্ট এমন একটি পাইথন অবজেক্ট যেখানে একটা ভ্যারিয়েবলের ভিতরেই একাধিক ভ্যালু থাকতে পারে।
এই পর্বে আমরা পাইথনের বিভিন্ন অপারেটর সম্পর্কে জানলাম। যদি কোথাও বুঝতে অসুবিধা হয় বা কোন প্রশ্ন থাকে তাহলে অনুগ্রহ করে মন্তব্য করুন বা প্রশ্ন করুন।
ধন্যবাদ 🙂
খুবই সুন্দর ও সহজ ভাবে উপস্থাপন করা হয়েছে। বেশ ভালো লেগছে।
অনেক ধন্যবাদ আপনাকে। ভাল লেগেছে জেনে খুশি হলাম