HomeCoursesPython
Chapter 3 of 14

অপারেটর ও এক্সপ্রেশন

Arithmetic, comparison, logical, assignment & bitwise operators

Arithmetic Operators (গাণিতিক অপারেটর)

Python-এ গাণিতিক হিসাবের জন্য ৭টি arithmetic operator আছে। এগুলো সংখ্যা (int, float) নিয়ে কাজ করে:

অপারেটরনামউদাহরণফলাফলবিবরণ
+যোগ (Addition)10 + 313দুটি সংখ্যা যোগ করে
-বিয়োগ (Subtraction)10 - 37দুটি সংখ্যা বিয়োগ করে
*গুণ (Multiplication)10 * 330দুটি সংখ্যা গুণ করে
/ভাগ (Division)10 / 33.333...ভাগফল — সবসময় float দেয়
//Floor Division10 // 33ভাগফলের পূর্ণ অংশ (দশমিক বাদ)
%Modulus (ভাগশেষ)10 % 31ভাগের অবশিষ্ট (remainder)
**Power (ঘাত)2 ** 382 এর 3 ঘাত = 2×2×2
# Arithmetic Operators উদাহরণ
a = 17
b = 5

print(a + b)   # 22 — যোগ
print(a - b)   # 12 — বিয়োগ
print(a * b)   # 85 — গুণ
print(a / b)   # 3.4 — ভাগ (float)
print(a // b)  # 3 — floor division (পূর্ণ অংশ)
print(a % b)   # 2 — ভাগশেষ
print(a ** b)   # 1419857 — 17⁵

/ বনাম // — ভাগের পার্থক্য

/ সবসময় float ফলাফল দেয়, এমনকি পূর্ণভাবে ভাগ হলেও। // সবসময় নিচের দিকে round করে (floor):

print(10 / 2)    # 5.0 (float!)
print(10 // 2)   # 5 (int)

# ঋণাত্মক সংখ্যায় সাবধান!
print(-7 // 2)   # -4 (নিচের দিকে: -3.5 → -4)
print(7 // -2)   # -4

Comparison Operators (তুলনা অপারেটর)

দুটি মান তুলনা করতে comparison operators ব্যবহার করা হয়। এদের ফলাফল সবসময় True বা False (bool):

অপারেটরঅর্থউদাহরণফলাফল
==সমান কিনা5 == 5True
!=সমান নয় কিনা5 != 3True
>বড় কিনা10 > 5True
<ছোট কিনা3 < 1False
>=বড় বা সমান5 >= 5True
<=ছোট বা সমান7 <= 3False
# Comparison Operators
x = 10
y = 20

print(x == y)   # False
print(x != y)   # True
print(x < y)    # True
print(x >= 10)  # True

# String comparison (alphabetical order)
print("apple" < "banana")  # True (a < b)
print("cat" == "Cat")      # False (case-sensitive)

# Chained comparison — Python-এর অনন্য সুবিধা!
age = 25
print(18 <= age <= 60)    # True (18 ≤ 25 ≤ 60)
🔑 গুরুত্বপূর্ণ পার্থক্য: = বনাম ==
  • = হলো Assignment Operator — মান রাখে (x = 10 মানে x-এ 10 রাখো)
  • == হলো Comparison Operator — তুলনা করে (x == 10 মানে x কি 10 এর সমান?)
  • এই দুটি গুলিয়ে ফেলা নতুনদের সবচেয়ে সাধারণ ভুল!

Logical Operators (যৌক্তিক অপারেটর)

একাধিক condition একসাথে যুক্ত করতে logical operators ব্যবহার করা হয়। Python-এ তিনটি logical operator আছে:

অপারেটরঅর্থউদাহরণফলাফলব্যাখ্যা
andএবং (উভয় True হলে True)True and FalseFalseদুটোই True হলেই True
orঅথবা (যেকোনো একটি True হলে True)True or FalseTrueএকটিও True হলে True
notনা (উল্টো করে)not TrueFalseTrue → False, False → True
# Logical Operators — বাস্তব উদাহরণ
age = 25
has_id = True
is_student = False

# and — দুটোই সত্য হতে হবে
can_vote = age >= 18 and has_id
print(can_vote)  # True (25 ≥ 18 = True, has_id = True → True and True = True)

# or — একটি সত্য হলেই যথেষ্ট
gets_discount = age < 18 or is_student
print(gets_discount)  # False (False or False = False)

# not — উল্টো
print(not is_student)  # True (not False = True)

# combined
result = (age > 18 and has_id) or is_student
print(result)  # True

Short-circuit Evaluation

Python short-circuit evaluation করে — অর্থাৎ ফলাফল নিশ্চিত হলে বাকি অংশ evaluate করে না:

# and — প্রথমটি False হলে দ্বিতীয়টি দেখে না
False and print("এটি প্রিন্ট হবে না")

# or — প্রথমটি True হলে দ্বিতীয়টি দেখে না
True or print("এটিও প্রিন্ট হবে না")

Assignment Operators (অ্যাসাইনমেন্ট অপারেটর)

Assignment operators ভ্যারিয়েবলে মান রাখতে এবং একই সাথে গণনা করতে ব্যবহৃত হয়। এগুলো shorthand হিসেবে কাজ করে:

অপারেটরউদাহরণসমতুল্যবিবরণ
=x = 10মান assign করে
+=x += 3x = x + 3যোগ করে assign
-=x -= 3x = x - 3বিয়োগ করে assign
*=x *= 3x = x * 3গুণ করে assign
/=x /= 3x = x / 3ভাগ করে assign
//=x //= 3x = x // 3Floor division করে assign
%=x %= 3x = x % 3Modulus করে assign
**=x **= 3x = x ** 3Power করে assign
# Assignment Operators উদাহরণ
score = 100

score += 10   # score = 110
print(score)

score -= 20   # score = 90
print(score)

score *= 2    # score = 180
print(score)

score //= 3   # score = 60
print(score)

# String-এও += কাজ করে
greeting = "Hello"
greeting += " World"
print(greeting)  # Hello World

Bitwise Operators (বিটওয়াইজ অপারেটর)

Bitwise operators সংখ্যার binary representation-এ কাজ করে। প্রতিটি bit (0 বা 1) আলাদাভাবে operate হয়। এগুলো competitive programming ও system-level কাজে ব্যবহৃত হয়:

অপারেটরনামউদাহরণ (5, 3)Binaryফলাফল
&AND5 & 3101 & 0111 (001)
|OR5 | 3101 | 0117 (111)
^XOR5 ^ 3101 ^ 0116 (110)
~NOT (complement)~5~00000101-6
<<Left Shift5 << 1101 → 101010
>>Right Shift5 >> 1101 → 102
# Bitwise Operators
a = 5   # binary: 101
b = 3   # binary: 011

print(a & b)   # 1  (001) — AND: দুটোতেই 1 হলে 1
print(a | b)   # 7  (111) — OR: যেকোনো একটিতে 1 হলে 1
print(a ^ b)   # 6  (110) — XOR: ভিন্ন হলে 1
print(~a)      # -6 — NOT: সব bit উল্টে যায়

# Shift — গুণ/ভাগের shortcut
print(5 << 1)  # 10 (5 × 2)
print(5 << 2)  # 20 (5 × 4)
print(20 >> 1) # 10 (20 ÷ 2)
print(20 >> 2) # 5  (20 ÷ 4)

Operator Precedence (অপারেটর অগ্রাধিকার)

একটি expression-এ একাধিক operator থাকলে Python কোনটি আগে execute করবে তা precedence দিয়ে নির্ধারিত হয়। উচ্চ precedence-এর operator আগে কাজ করে:

অগ্রাধিকারঅপারেটরবিবরণ
১ (সর্বোচ্চ)()Parentheses (বন্ধনী)
**Exponentiation (ঘাত)
~, +x, -xBitwise NOT, Unary plus/minus
*, /, //, %গুণ, ভাগ, Floor division, Modulus
+, -যোগ, বিয়োগ
<<, >>Bitwise Shift
&Bitwise AND
^Bitwise XOR
|Bitwise OR
১০==, !=, >, <, >=, <=Comparison
১১notLogical NOT
১২andLogical AND
১৩ (সর্বনিম্ন)orLogical OR
# Precedence উদাহরণ
result = 2 + 3 * 4     # 3*4=12, তারপর 2+12=14
print(result)           # 14 (গুণ আগে!)

result = (2 + 3) * 4   # বন্ধনী আগে: 5*4=20
print(result)           # 20

result = 2 ** 3 ** 2    # ডান থেকে: 3**2=9, তারপর 2**9=512
print(result)           # 512 (** right-associative!)

# জটিল expression
result = 10 + 5 * 2 - 8 // 3
# Step 1: 5*2 = 10
# Step 2: 8//3 = 2
# Step 3: 10 + 10 - 2 = 18
print(result)  # 18
💡 মনে রাখার কৌশল — "PEMDAS"

Operator Precedence মনে রাখতে: Parentheses → Exponent → Multiplication/Division → Addition/Subtraction = PEMDAS। সন্দেহ হলে বন্ধনী () ব্যবহার করুন — কোড পরিষ্কার থাকবে!

🔑 অপারেটর টিপস
  • / সবসময় float দেয় — integer ভাগফল চাইলে // ব্যবহার করুন
  • ** হলো right-associative — ডান থেকে বামে evaluate হয় (2**3**2 = 2**(3**2))
  • Precedence ভুলে গেলে বন্ধনী () ব্যবহার করুন — এটিই সবার আগে execute হয়
  • Left shift << n মানে ×2ⁿ এবং right shift >> n মানে ÷2ⁿ
🧠 Quick Check
এই অধ্যায়ের উপর ৫টি প্রশ্নের উত্তর দিন
Q1. 17 // 5 এর ফলাফল কত?
✅ সঠিক উত্তর: খ) 3// হলো Floor Division — এটি ভাগফলের পূর্ণ অংশ (দশমিক বাদ দিয়ে নিচের দিকে) দেয়। 17 / 5 = 3.4, floor = 3
Q2. not (5 > 3 and 2 < 1) এর ফলাফল কী?
✅ সঠিক উত্তর: ক) True। ধাপে ধাপে: 5 > 3 = True, 2 < 1 = False → True and False = False → not False = True
Q3. 2 + 3 * 4 এর ফলাফল কত?
✅ সঠিক উত্তর: খ) 14। Operator precedence অনুযায়ী গুণ (×) যোগ (+)-এর আগে হয়। তাই 3 * 4 = 12, তারপর 2 + 12 = 14। (2+3)*4 = 20 হতো বন্ধনী থাকলে।
Q4. x = 10 এর পর x **= 2 করলে x এর মান কত হবে?
✅ সঠিক উত্তর: গ) 100x **= 2 মানে x = x ** 2 = 10 ** 2 = 100** হলো power/exponent operator।
Q5. 5 << 2 এর ফলাফল কত?
✅ সঠিক উত্তর: খ) 20। Left shift << n মানে সংখ্যাটিকে 2ⁿ দিয়ে গুণ করা। 5 << 2 = 5 × 2² = 5 × 4 = 20। Binary: 10110100
← Previous: ভ্যারিয়েবল ও ডেটা টাইপ Next: ইনপুট আউটপুট ও টাইপ কনভার্শন →