পাইথন অপারেটর

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

অপারেটর গুলো যে ভ্যারিয়েবল বা যে ডেটার উপর কাজ করে, তাকে আমরা বলি অপারেন্ড (Operand)। যেমন 4 + 5 এ 4 এবং 5 হচ্ছে অপারেন্ড, এবং + হচ্ছে অপারেটর।

 

কিছু কিছু অপারেটরের জন্য একটা অপারেন্ড লাগে। কিছু কিছু অপারেটরের জন্য লাগে দুইবা তার অধিক অপারেন্ড।

 

পাইথন প্রোগ্রামিং এ নিচের অপারেটর গুলো সাপোর্ট করে

  1. Arithmetic Operators
  2. Assignment Operators
  3. Comparison (Relational) Operators
  4. Logical Operators
  5. Bitwise Operators
  6. Membership Operators
  7. Identity Operators

 

 

গণিতে আমরা যে সকল Operators ব্যাবহার করছি তাই হল Arithmetic Operators। যেমন যোগ, গুন, ভাগ ইত্যাদি।

Operator ব্যাবহার
+ যোগ
বিয়োগ
* গুণ
/ ভাগ
% মডুলাস
** এক্সপোনেন্ট বা পাওয়ার
// ফ্লোর ডিভিশন

 

এর আগের প্রোগ্রাম গুলোতে আমরা এই এরিথম্যাটিক অপারেটর গুলো ব্যবহার করেছি। এগুলো  গণিতে আমরা যেভাবে কাজ করে, সেভাবে পাইথন প্রোগ্রামিং এ ও কাজ করবে। উপরের সকল Operator সম্পর্কে ই আমরা জানি শুধু %, ** এবং // অপারেটর ছাড়া।

 

মডুলাস অপারেটর

Mode (%) কে বলা হয় মডুলাস অপারেটর। এর মানে মূলত ভাগশেষ ভ্যালু। এই Mode (%) নিয়ে কাজ করার একটা সুন্দর নাম রয়েছে, যাকে বলে Modulus Arithmetic।  Mode এর অনেক কাজ রয়েছে।

প্রতিদিন ব্যবহার করি, এমন একটা উদাহরন দেওয়া যাক।

আমরা সময় হিসেব করি, তা একটা মডুলাস এরিথম্যাটিক বা মডুলাস পাটীগণিত। আমরা যদি ১২ ঘন্টার ঘড়ির কথা চিন্তা করি, তাহলে দেখব ১২ এর পর ১৩ না হয়ে ১ টা ধরি আমরা। আর ঘড়ির এই হিসাবকে বলা যায় ১২ এর মডুলাস এরিথম্যাটিক। আমরা করি কি, প্র্যতকটা ঘন্টাকে ১২ দিয়ে ভাগ করে দি। ১ টা বাজলেও ১২ দিয়ে ভাগ করি। ২ টা বাজলেও। তেমনি ১৫টা বাজলেও। তো যখন ১৫টা বাজে, তখন আমরা মুলত দেখি (১৫%১২) = ৩ বা তিনটা। আস্তে আস্তে আমরা এরকম অনেক গুলো মডুলাস এরিথম্যাটিক নিয়ে কাজ করতে পারব।

মূলত মডের কাজ হচ্ছে একটা লিমিট সেট করে দেওয়া। ঐ লিমিট ক্রস করলে আবার প্রথম থেকে কাউন্ট শুরু করা। ঘড়ির টাইমের ক্ষেত্রে যেমন হয়, তেমনি।

২৪ ঘন্টার ঘড়ি গুলোতে ২৪ হচ্ছে সর্বোচ্চ ভ্যালু। তো ২৪ এর পর ২৫ না হয়ে হয় (২৫%২৪) = ১।

১৫%৪ = কত হবে?

১৫%৪ এটার উত্তর হবে ৩ কারন ১৫ কে ৪ দ্বারা ভাগ করলে ভাগশেষ থাকে ৩।

মড এর মান সব সময় পূর্ন সংখা হবে। অর্থাৎ ১৫.৫%৪ এর ভাগ শেষ হচ্ছে ৩.৫ কিন্তু এর মান হবে ৩।

মড সব সময় পজেটিভ হবে। ১৫%-৪ এর মান হবে ৩। -১৫%৪এর মান হবে -৩। -১৫%-৪এর মান হবে-৩। ইত্যাদি।

নিচের প্রোগ্রামটা দেখিঃ

print(11%3) 

11 কে 3 দিয়ে ভাগ করলে ভাগশেষ 2 থাকার কথা, তাই না? তাই আমাদের পোগ্রামের আউটপুট হচ্ছে 2।

 

এক্সপোনেন্ট অপারেটর

 

যদি আমরা লিখি 10*6 তাহলে আমারা পাবো 60। একটা এসটেরিক্স (*) হচ্ছে সাধারণ গুণ করার অপারেটর। কিন্তু যদি লিখি 10**6 মানে দুইটা এসটেরিক্স ব্যবহার করি, তাহলে এর মানে হছে 10 to the power 6 বা 106। এবং যার মান হবে 1000000। অর্থাৎ a**b মানে ab

 

ফ্লোর ডিভিশন

 

7 কে 2 দ্বারা ভাগ করতে আমরা লিখি 7/2। আর এর মান পাবো 2। কিন্তু যখন 7//2 লিখব, তখন মান পাবো 3। এটাকে বলে ফ্লোর ডিভিশন। এটি ভাগফল হিসেবে ভগ্নাংশের কাছাকাছি পূর্ণ সংখ্যা রিটার্ণ করে।

এটি ধণাত্ত্বক  ভাজ্য অথবা ভাজকের ক্ষেত্রে দশমিকের পরের সংখ্যা বাদ দিয়ে পূর্ণ সংখ্যা রিটার্ণ করে। আবার যদি ভাজ্য অথবা ভাজক ঋণাত্ত্বক হয়, তাহলে পরবর্তী ঋণাত্ত্বক সংখ্যা রিটার্ণ করবে। যেমন print(-11//3) ক্ষেত্রে রিটার্ণ করবে -4।

 

এসাইনমেন্ট অপারেটর

ভ্যারিয়েবলে কোন ভ্যালু এসাইন করা হচ্ছে এসাইনমেন্ট অপারেটরের কাজ।  আগের অধ্যায় গুলোতে আমরা কিভাবে একটা ভ্যারিয়েবলে এসাইন করা হয়, তা শিখেছি। আমরা আগে শুধু একটা মাত্র এসাইনমেন্ট অপারেটর Equal to (=) এসাইনমেন্ট অপারেটর ব্যবহার করেছি। এটি ছাড়াও আরো অনেক গুলো Assignment operator রয়েছে। যেমনঃ

  • += (Plus equal to)
  • -= (Minus equal to)
  • *= (Product equal to)
  • /= (Division equal to)
  • %= (Mode equal to)
  • **= (Exponent equal to)
  • //= (Floorequal to) ইত্যাদি।

 

+= (Plus equal to) Assignment operator:

এটা নিচের মতো করে লেখা হয়

Expression1 += Expression2

যা (Expression1 = Expression1 + Expression2 ) এর সমান।

ব্যাখ্যাঃ মনে করি x=3 , y=5.

যদি লেখা হয়: x+=y তাহলে x এর মান হবে x = x+y অর্থাৎ x = 8.

x=3
y=5
x+=y
print(x)

x = x+y লেখা এবং x+=y লেখা একই অর্থ বহন করে। কম কোড লেখার জন্য সাধারণত আমরা এভাবে লিখে থাকি।

 

-= (Minus equal to) Assignment operator

-= এর ক্ষেত্রে নিচের মতো করে লেখা হয়

Exprission1 -= Expression2

যা (Expression1 = Expression1 – Expression2 ) এর সমান।

ব্যাখ্যাঃ মনে করি x=8 , y=5.

যদি লেখা হয়ঃ x-=y তাহলে x এর মান হবে x=x-y অর্থাৎ x=3.

x=8
y=5
x-=y
print(x)

 

উপরের প্রোগ্রামটা রান করিয়ে দেখলে আমরা আউটপুট পাবোঃ 3
*= অপারেটরঃ

এটা নিচের মতো করে লেখা হয়

 

Exprission1 *= Expression2

যা (Expression1 = Expression1 * Expression2 ) এর সমান।

 

x=8
y=5
x*=y
print(x)

 

x এর ভ্যালু প্রিন্ট করলে আমরা পাবো 40;

/= অপারেটরঃ

এটা নিচের মতো করে লেখা হয়ঃ

Expression1 /= Expression2

যা (Expression1 = Expression1 / Expression2 ) এর সমান।

x=12
y=3
x/=y
print(x)

x এর ভ্যালু প্রিন্ট করলে আমরা পাবো 4.0।

 

%= অপারেটরঃ

এটা নিচের মতো করে লেখা হয়

 

Expression1 %= Expression2

যা (Expression1 = Expression1 % Expression2 ) এর সমান।

x=11
y=3
x%=y
print(x)

Mode (%) মানে আমরা জানি ভাগশেষ। তাই আমরা এখানে x কে y দিয়ে ভাগ করলে যে ভাগশেষ থাকবে, তাই পাবো।

 

**= (Exponent equal to) অপারেটরঃ

এটা নিচের মতো করে লেখা হয়

Expression1 **= Expression2

যা (Expression1 = Expression1Expression2 ) এর সমান। মানে x**=y হচ্ছে x = xy। যেমনঃ

 

x=2
y=3
x**=y
print(x)

 

যেখানে আমরা আউটপুট পাবো ৮।

 

//= (Floor equal to) অপারেটরঃ

এটা নিচের মতো করে লেখা হয়

Expression1 //= Expression2

যা (Expression1 = Expression1 // Expression2) এর সমান।

 

আমরা যানি দুইটা ভাগ চিহ্ন (//) হচ্ছে ফ্লোর ডিভিশন। যা ভাগফল হিসেবে ভগ্নাংশের কাছাকাছি একটা পূর্ণ সংখ্যা রিটার্ণ করে।

 

x=7
y=2
x//=y
print(x)

 

এখানে x এর মান প্রিন্ট করলে আমরা পাবো 3।

 

 

Logical Operator:

পাইথন প্রোগ্রামিং এ তিনটি Logical Operator রয়েছে। তাদের নিচে দেওয়া হলঃ

Operator Meaning
and Logical And
or Logical Or
not Logical Not

 

AND operator:

মনে করি x,y,z তিনটি চলক। এখন (x<y) and (y<z) হচ্ছে একটি এক্সপ্রেশন। এখন এই পুরো এক্সপ্রেশন এর মান সত্য হবে যদি (x<y) এবং (y<z) সত্য হয়। (x<y) এবং (y<z) এর যে কোন একটি মিথ্যা হলে (x<y)and(y<z) এর মান মিথ্যে হবে।

or  operator:

মনে করি x,y,z তিনটি চলক। এখন (x<y)or(y<z) হচ্ছে একটি এক্সপ্রেশন।  এখন এই পুরো এক্সপ্রেশনের মান সত্য হবে যদি (x<y) অথবা (y<z) এর যে কোন একটি সত্য হয়। (x<y) এবং (y<z) দুটি একসাথে মিথ্যা হলে (x<y)or(y<z) এর মান মিথ্যে হবে।

 

not operator:

কোন একটা সত্য ভ্যালুকে মিথ্যে অথবা একটা মিথ্যে ভ্যালুকে সত্য করার জন্য not অপারেটর ব্যবহার করা হয়।

এই লজিক্যাল অপারেটর গুলো পরবর্তীতে লজিক্যাল কন্ডিশনে আমরা ব্যবহার করব।

 

Comparison (Relational) Operators

কোন কিছুর তুলনা করার জন্য Comparison অপারেটর ব্যবহার করা হয়। এটাকে Relational অপারেটরও বলা হয়।

পাইথন প্রোগ্রামিং এর কম্পারিজন অপারেটর গুলোঃ

Operator Meaning
== Equal to
!= Not Equal to
< Less than
<= Less than or equal to
> Greater then
>= Greater than or equal to

এখানে প্রথম টি হচ্ছে দুটি সমান চিহ্ন। দুটি মিলেই Equal to  Operator প্রকাশ করে। দ্বিতীয় টি হচ্ছে একটি !(উচ্চারণ নট) ও একটি সমান চিহ্ন নিয়ে Not Equal to  Operator প্রকাশ করে।

উদাহরনঃ মনে করি x, y দুটি ভ্যারিয়েবল। x এর মান 5।  Y এর মান 6। সুতরাং x==y এর মানে হচ্ছে x এবং y এর মান সমান কিনা, তা যাচাই করা। কিন্ত আমদের x এবং y এর মান সমান নয়। সুতরাং x==y এক্সপ্রেশন টি মিথ্যে এবং এর মান হবে 0 বা বুলিয়ান ফলস। আবার যদি x!=y (উচ্চারন x not equal to y) হয় তাহলে এক্সপ্রেশন টি সত্য হয় এবং এর মান হবে 1 বা বুলিয়ান ট্র্যু।

এখানে মনে রাখতে হবে যে Assignment operator = এবং Equality Operator == সম্পূর্নই ভিন্ন। কোন ভ্যালু কোন ভ্যারিয়েবলের মধ্যে এসাইন করার assignment operator (=) ব্যবহার করা হয়। আর দুইটা Expression এর মান সমান কিনা, তা দেখার জন্য Equality Operator (==) ব্যবহার করা হয়।  এখানে একটার স্থানে আরেকটা কোন অবস্থাতেই বসানো যাবেনা। তাহলে Program এ বিশাল ভুল আসবে। প্রথম প্রথম অনেকেই এই ভুল করে থাকে।

মনে করি x, y দুটি ভ্যারিয়েবল।   x এর মান 5,  y এর  মান 6। x<y দিয়ে দেখা হয়  x কি y থেকে ছোট কিনা। যেহেতু x y থেকে ছোট, তাই x<y  এক্সপ্রেশন টি সত্য এবং এর মান হবে 1।  আবার x>y  এক্সপ্রেশন টি মিথ্যে এবং এর মান হবে 0। কারণ x y থেকে বড় নয়।
Comparison Operator ব্যবহার করে আমরা সহজেই দুটি সংখ্যার মধ্যে কোনটা ছোট তা বের করে ফেলতে পারি।

 

Relational and Logical Operators এর কয়েকটি উদাহরন নিচে দেওয়া হল:

মনে করি x, y, z তিনটি চলক। x এর মান 5, y এর  মান 6 এবং z এর মান 7।

Expression ব্যাখ্যা মান
X<y True 1
X==5 True 1
y==4 False 0
(X+y)>z True 1
(X+y)<=z False 0
X!=y True 1
(X<y)&&(y==6) True 1
(X<y)&&(z!=y) True 1
(X>y)||(z!=y) True 1
(X>y)&&(z!=y) False 0
(X<y)&&(z==y) False 0
(X<y)||(z==y) True 1

অর্থাৎ সকল true এর মান 1 এবং false এর মান ০।

 

Bitwise Operators

 

পাইথনে সহজেই আমরা বিটওয়াইজ অপারেশন করতে পারি। নিচে বিটওয়াইজ অপারেটর গুলোর লিস্ট দেওয়া হলোঃ

  1. & Binary AND
  2. | Binary OR
  3. ^ Binary XOR
  4. ~ Binary Ones Complement
  5. << Binary Left Shift
  6. >> Binary Right Shift

 

 

 

আমরা জানি কম্পিউটারের সকল ডেটা মেমরিতে সংরক্ষিত থাকে। আর ডেটা গুলো সংরক্ষিত থাকে বিট আকারে। অর্থাৎ 0 অথবা 1 আকারে। কোন ভ্যারিয়েবলের বাইনারি রূপ দেখতে চাইলে আমরা bin() ফাংশন ব্যবহার করতে পারি।

 

9 এর বাইনারি রূপ হচ্ছে 1001। আর দশের বাইনারি রূপ হচ্ছে 1010। ধরি a =9, b=10 এরপর এ দুইটার উপর আমরা ভিবিন্ন বিটওয়াইজ অপারেশন করতে পারি। যেমন Binary and অপারেশন করতে চাইলেঃ

a = 9
b = 10
c = a&b
print(bin(c))

 

 

বাইনারি or:

a = 9
b = 10
c = a|b
print(bin(c))

 

বাইনারি XOR:

a = 9
b = 10
c = a^b
print(bin(c))

 

বাইনারি Ones Complement

a = 9
c = ~a
print(bin(c))

 

Binary Left Shift

a = 9
c = a &lt;&lt; 2;
print(bin(c))

 

Binary Right Shift

a = 9
c = a &gt;&gt; 2;
print(bin(c))

 

Membership Operators

মেম্বারশিপ অপারেটর দিয়ে কোন লিস্টে কোন আইটেম আছে কি না, তা যাচাই করা হয়।

 

  1. In
  2. not in

 

list = [1, 2, 3, 4, 5 ]

 

উপরে একটা লিস্ট রয়েছে। এখন আমরা নিচের মত করে কোড লিখতে পারিঃ

list = [1, 2, 3, 4, 5 ]
if (2 in list):
    print(<strong>"2 exist in the list"</strong>)
else:
    print(<strong>"2 is not exist in the list"</strong>)

এছাড়া একটি আইটেম লিস্টে না থাকলেও আমরা তা যাচাই করতে পারিঃ

list = [1, 2, 3, 4, 5 ]
if (6 not in list):
    print("6 is not exist in the list")

 

if else এর সম্পর্কে আমরা যদিও এখনো পরিচিত হইনি, সামনের অধ্যায়ে আমরা পরিচিত হব।

 

Identity Operators

 

আইডেন্টিটি অপারেটর দিয়ে দুইটা অবজেক্টের মেমরি লোকেশন একই কিনা, তা যাচাই করা হয়। পাইথনে দুইটা আইডেন্টিটি অপারেটর রয়েছেঃ

 

  1. is
  2. is not

 

আমরা যদি একই ভ্যালু দুইটা ভ্যারিয়েবলের রাখি, মেমরি সেভ করার জন্য ঐ দুইটা ভ্যারিয়েবলে  ঐ ভ্যালুটির লোকেশনে পয়েণ্ট করে। যেমনঃ

a = 20
b = 20

if ( a is b ):
    print ("a and b have same identity")
else:
    print ("a and b do not have same identity")

উপরের প্রোগ্রাম রান করলে দেখব আমাদের আউটপুট দিচ্ছেঃ

a and b have same identity

দুইটাতে আলাদা ভ্যালু সেট করে রান করে দেখেন কি আউটপুট দিচ্ছে।

a = 20
b = 21

if ( a is not b ):
   print ("a and b have different identity")
else:
   print ("a and b do have same identity")

উপরের প্রোগ্রাম রান করে দেখলে দকেহব আউটপুট দিচ্ছেঃ

a and b have different identity

 

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

Leave a Reply