Arithmetic Operators (গাণিতিক অপারেটর)
Python-এ গাণিতিক হিসাবের জন্য ৭টি arithmetic operator আছে। এগুলো সংখ্যা (int, float) নিয়ে কাজ করে:
| অপারেটর | নাম | উদাহরণ | ফলাফল | বিবরণ |
|---|---|---|---|---|
+ | যোগ (Addition) | 10 + 3 | 13 | দুটি সংখ্যা যোগ করে |
- | বিয়োগ (Subtraction) | 10 - 3 | 7 | দুটি সংখ্যা বিয়োগ করে |
* | গুণ (Multiplication) | 10 * 3 | 30 | দুটি সংখ্যা গুণ করে |
/ | ভাগ (Division) | 10 / 3 | 3.333... | ভাগফল — সবসময় float দেয় |
// | Floor Division | 10 // 3 | 3 | ভাগফলের পূর্ণ অংশ (দশমিক বাদ) |
% | Modulus (ভাগশেষ) | 10 % 3 | 1 | ভাগের অবশিষ্ট (remainder) |
** | Power (ঘাত) | 2 ** 3 | 8 | 2 এর 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 == 5 | True |
!= | সমান নয় কিনা | 5 != 3 | True |
> | বড় কিনা | 10 > 5 | True |
< | ছোট কিনা | 3 < 1 | False |
>= | বড় বা সমান | 5 >= 5 | True |
<= | ছোট বা সমান | 7 <= 3 | False |
# 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 False | False | দুটোই True হলেই True |
or | অথবা (যেকোনো একটি True হলে True) | True or False | True | একটিও True হলে True |
not | না (উল্টো করে) | not True | False | True → 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 += 3 | x = x + 3 | যোগ করে assign |
-= | x -= 3 | x = x - 3 | বিয়োগ করে assign |
*= | x *= 3 | x = x * 3 | গুণ করে assign |
/= | x /= 3 | x = x / 3 | ভাগ করে assign |
//= | x //= 3 | x = x // 3 | Floor division করে assign |
%= | x %= 3 | x = x % 3 | Modulus করে assign |
**= | x **= 3 | x = x ** 3 | Power করে 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 | ফলাফল |
|---|---|---|---|---|
& | AND | 5 & 3 | 101 & 011 | 1 (001) |
| | OR | 5 | 3 | 101 | 011 | 7 (111) |
^ | XOR | 5 ^ 3 | 101 ^ 011 | 6 (110) |
~ | NOT (complement) | ~5 | ~00000101 | -6 |
<< | Left Shift | 5 << 1 | 101 → 1010 | 10 |
>> | Right Shift | 5 >> 1 | 101 → 10 | 2 |
# 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, -x | Bitwise NOT, Unary plus/minus |
| ৪ | *, /, //, % | গুণ, ভাগ, Floor division, Modulus |
| ৫ | +, - | যোগ, বিয়োগ |
| ৬ | <<, >> | Bitwise Shift |
| ৭ | & | Bitwise AND |
| ৮ | ^ | Bitwise XOR |
| ৯ | | | Bitwise OR |
| ১০ | ==, !=, >, <, >=, <= | Comparison |
| ১১ | not | Logical NOT |
| ১২ | and | Logical AND |
| ১৩ (সর্বনিম্ন) | or | Logical 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
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ⁿ