পাইথন অপারেটর
এই অধ্যায়ে আপনি পাইথনে ব্যবহৃত বিভিন্ন অপারেটর, এগুলোর সিনট্যাক্স এবং এগুলোকে কিভাবে আপনার নিজের প্রোগ্রামে প্রয়োগ করবেন তা জানবেন।
পাইথনে অপারেটর হলো বিশেষ ধরনের প্রতীক যা গাণিতিক এবং যৌক্তিক (logical) হিসাব-নিকাশে ব্যবহৃত হয়। অপারেটর(+, -, * ইত্যাদি) যে ভ্যালুকে অপারেট করে তাকে অপারেন্ড বলা হয়।
উদাহরণস্বরূপঃ
>>> 3+7
#Output: 10
এখানে
+
একটি অপারেটর যা যোগের কাজে ব্যবহৃত হয়েছে। 3
ও 7
অপারেন্ড এবং 10
অপারেশনের আউটপুট।
পাইথনে অপারেটরসমূহঃ
- এরিথমেটিক অপারেটর(Arithmetic operator)
- কম্প্যারিজম অপারেটর(Comparison (Relational) operator)
- লজিক্যাল অপারেটর(Logical (Boolean) operator)
- বিটওয়াইজ অপারেটর( Bitwise operator)
- এসাইনমেন্ট অপারেটর(Assignment operator)
- স্পেসিয়াল অপারেটর(Special operator)
এরিথমেটিক অপারেটর
গাণিতিক যোগ-বিয়োগ, গুণ-ভাগ ইত্যাদিতে এরিথমেটিক অপারেটর(Arithmetic operator) ব্যবহৃত হয়।
অপারেটর | অর্থ | উদাহরণ |
---|---|---|
+ | দুটি অপারেন্ডের যোগ বা ইউনারি যোগ(unary plus) | x + y |
- | বাম অপারেন্ড থেকে ডান অপারেন্ড বিয়োগ বা ইউনারী বিয়োগ | x - y |
* | দুটি অপারেন্ডের গুণ | x * y |
/ | বাম অপারেন্ডকে ডান অপারেন্ড দিয়ে ভাগ(ফলাফল সব সময় দশমিক হবে) | x / y |
% | মডিউলাস(Modulus) - বাম অপারেন্ডকে ডান অপারেন্ড দিয়ে ভাগ করে ভাগশেষ | x % y (x/y এর ভাগশেষ) |
// | Floor division -ভাগশেষ বাদে পূর্ণ সংখ্যায় ভাগফল | x // y |
** | সূচক(Exponent)- ডান অপারেন্ড বাম অপারেন্ড এর সূচক | x**y (x এর সূচক y) |
উদাহরণঃ পাইথনে এরিথমেটিক অপারেটর
x = 10
y = 4
print('x + y =',x+y)
# Output: x + y = 14
print('x - y =',x-y)
# Output: x - y = 6
print('x * y =',x*y)
# Output: x * y = 40
print('x / y =',x/y)
# Output: x / y = 2.50
print('x // y =',x//y)
# Output: x // y = 3
print('x ** y =',x**y)
# Output: x ** y = 10000
কম্প্যারিজন অপারেটর
দুই বা ততোধিক ভ্যালুর মধ্যে তুলনা করতে কম্প্যারিজন অপারেটর ব্যবহৃত হয়। কোনো শর্তের(condition) উপরে ভিত্তিকরে এটি হয়
True
অথবা False
রিটার্ন করে।অপারেটর | অর্থ | উদাহরণ |
---|---|---|
> | Greater Than - বামপক্ষ ডানপক্ষের চেয়ে বড় হলে True হবে। | x > y |
< | Less Than - বাম পক্ষ্য ডানপক্ষের চেয়ে ছোট হলে True হবে। | x < y |
== | Equal to - বামপক্ষ এবং ডানপক্ষ সমান হলে True হবে। | x == y |
!= | Not equal to - বামপক্ষ এবং ডানপক্ষ সমান না হলে True হবে। | x != y |
>= | Greater than or equal to - বামপক্ষ ডানপক্ষের চেয়ে বড় বা সমান হলে True হবে। | x >= y |
<= | Less than or equal to - বামপক্ষ ডানপক্ষের চেয়ে ছোট বা সমান হলে True হবে। | x <= y |
উদাহরণঃ পাইথনে কম্প্যারিজন অপারেটর
x = 10
y = 15
print('x > y is',x>y)
# Output: x > y is False
print('x < y is',x<y)
# Output: x < y is True
print('x == y is',x==y)
# Output: x == y is False
print('x != y is',x!=y)
# Output: x != y is True
print('x >= y is',x>=y)
# Output: x >= y is False
print('x <= y is',x<=y)
# Output: x <= y is True
লজিক্যাল অপারেটর
পাইথনে
and
, or
এবং not
অপারেটরসমূহকে লজিক্যাল অপারেটর(Logical operator) বলা হয়।অপারেটর | অর্থ | উদাহরণ |
---|---|---|
and | উভয় অপারেন্ড true হলে True | a and b |
or | যেকোনো একটি অপারেন্ড true হলে True | a or b |
not | অপারেন্ড false হলে True | not a |
উদাহরণঃ পাইথনে লজিক্যাল অপারেটর
a = True
b = False
print('a and b is',a and ab)
# Output: a and b is False
print('a or b is',a or b)
# Output: a or b is True
print('not a is',not a)
# Output: not a is False
লজিক্যাল অপারেটর সম্মন্ধে আরও জানতে truth table অধ্যায় ভিজিট করুন।
বিটওয়াইজ অপারেটর
পাইথনে বাইনারি সংখ্যা স্ট্রিং এর মতই এবং এ সংখ্যাকে অপারেট করার জন্য বিটওয়াইজ অপারেটর ব্যবহৃত হয়। বিট এর সাথে বিট অপারেট হওয়ায় নামটি যথাপোযুক্ত।
উদাহরণস্বরূপঃ
2
এর বাইনারি মান 10
এবং 7
এর বাইনারি মান 111
।
মনেকরি, নিচের টেবিলে x = 10 (বাইনারিতে 0000 1010) এবং y = 4 (বাইনারিতে 0000 0100)
অপারেটর | অর্থ | উদাহরণ x = 10, y = 4 |
---|---|---|
& | Bitwise AND | x& y = 0 (0000 0000 ) |
| | Bitwise OR | x | y = 14 (0000 1110 ) |
~ | Bitwise NOT | ~x = -11 (1111 0101 ) |
^ | Bitwise XOR | x ^ y = 14 (0000 1110 ) |
>> | Bitwise right shift | x>> 2 = 2 (0000 0010 ) |
<< | Bitwise left shift | x<< 2 = 42 (0010 1000 ) |
এসাইনমেন্ট অপারেটর
ভ্যারিয়েবলে ভ্যালু এসাইন বা আরোপ করার জন্য পাইথনে এসাইনমেন্ট অপারেটর(Assignment operator) ব্যব্যহৃত হয়।
a = 10
একটি সাধারণ এসাইনমেন্ট অপারেটর যা ডানপাশের ভ্যালু 10 কে বামপাশের ভ্যারিয়েবল a তে এসাইন করে।
পাইথনে বিভিন্ন ধরণের অপারেটর আছে যেমন-
a += 5
ভ্যারিয়েবলের সাথে ভ্যালু যোগ করে যোগফল পরবর্তীতে একই ভ্যারিয়েবলে এসাইন করে। এটি a = a + 5
এর সমতুল্য।অপারেটর | উদাহরণ | সমতুল্য |
---|---|---|
= | x = 5 | x = 5 |
+= | x += 5 | x = x + 5 |
-= | x -= 5 | x = x - 5 |
*= | x *= 5 | x = x * 5 |
/= | x /= 5 | x = x / 5 |
%= | x %= 5 | x = x % 5 |
//= | x //= 5 | x = x // 5 |
**= | x **= 5 | x = x ** 5 |
&= | x &= 5 | x = x & 5 |
|= | x |= 5 | x = x | 5 |
^= | x ^= 5 | x = x ^ 5 |
>>= | x >>= 5 | x = x >> 5 |
<<= | x <<= 5 | x = x << 5 |
বিশেষ অপারেটর
উপরোক্ত অপারেটর ছাড়াও পাইথনে কিছু বিশেষ অপারেটর(Special operator) রয়েছে। যেমন- আইডেন্টিটি অপারেটর এবং মেম্বারশিপ অপারেটর। নিম্নে এগুলো উদাহরণসহ আলোচনা করা হলোঃ
আইডেন্টিটি অপারেটর
পাইথনে
is
এবং is not
হচ্ছে আইডেন্টিটি অপারেটর। দুটি ভ্যলু(অথবা ভ্যারিয়েবল) মেমোরির একই অংশে অবস্থিত কিনা চেক করার জন্য এগুলো ব্যবহৃত হয়।
দুটি ভ্যারিয়েবল সমান হওয়ার অর্থ এই নয় যে তারা আইডেন্টিকাল। সুতরাং দুটি ভ্যালু সমান হলে তারা আইডেন্টিকাল নাও হতে পারে।
অপারেটর | অর্থ | উদাহরণ |
---|---|---|
is | অপারেনড আইডেন্টিকাল হলে True হবে(একই অবজেক্টকে রেফার করে)। | x is True |
is not | অপারেনড আইডেন্টিকাল না হলে True (একই অবজেক্টকে রেফার করে না) হবে। | x is not True |
উদাহরণঃ পাইথনে আইডেন্টিকাল অপারেটর
x1 = 5
y1 = 5
x2 = 'Hello'
y2 = 'Hello'
x3 = [1,2,3]
y3 = [1,2,3]
print(x1 is not y1)
# Output: False
print(x2 is y2)
# Output: True
print(x3 is y3)
# Output: False
এখানে আমরা দেখতে পাচ্ছি যে, x1 এবং y1 একই ভ্যালুর পূর্ণ সংখ্যা, সুতরাং এরা সমান এবং আইডেন্টিকাল। একইভাবে স্ট্রিং x2 এবং y2 সমান এবং আইডেন্টিকাল।
কিন্তু x3 এবং y3 হচ্ছে লিস্ট। এরা সমান কিন্তু আইডেন্টিকাল নয়। যেহেতু লিস্ট পরিবর্তনশীল তাই এরা সমান হওয়া সত্ত্বেও ইন্টারপ্রেটার এদেরকে মেমোরির বিভিন্ন জায়াগায় স্থান দেয়।
মেম্বারশিপ অপারেটর
পাইথনে
in
এবং not in
হচ্ছে মেম্বারশিপ অপারেটর(Membership operator)। কোনো ভ্যালু বা ভ্যারিয়েবল string, list, tuple, set এবং dictionary ক্রমের মধ্যে আছে কি না যাচাই করার জন্য এগুলো ব্যবহৃত হয়।
ডিকশনারিতে ভ্যালুর পরিবর্তে কোনো কী(key)-এর উপস্থিতি আছে কিনা যাচাই করা হয়।
অপারেটর | অর্থ | উদাহরণ |
---|---|---|
in | ক্রম(sequence)-এর মধ্যে ভ্যলু/ভ্যারিয়েবল থাকলে True হবে। | 5 in x |
not in | ক্রম(sequence)-এর মধ্যে ভ্যলু/ভ্যারিয়েবল না থাকলে True হবে। | 5 not in x |
উদাহরণঃ পাইথনে মেম্বারশিপ অপারেটর
x = 'Hello world'
y = {1:'a',2:'b'}
print('H' in x)
# Output: True
print('hello' not in x)
# Output: True
print(1 in y)
# Output: True
print('a' in y)
# Output: False
এখানে x এর মধ্যে
'H'
আছে কিন্তু x এর মধ্যে 'hello'
নাই (মনে রাখবেন, পাইথন কেস-সেন্সিটিভ)। একইভাবে ডিকশনারিতে y-এ 1
হচ্ছে কী 'a'
হচ্ছে ভ্যালু। , 'a' in y
এর ফলাফল False
হয়।পাইথন if স্টেটমেন্ট
সিদ্ধান্ত গ্রহণের জন্য প্রোগ্রামিং এ সচরাচর কন্ডিশনাল(conditional) স্টেটমেন্ট ব্যবহৃত হয়। এই অধ্যায়ে আপনি if কন্ডিশনাল স্টেটমেন্ট ব্যবহার করে সিদ্ধান্ত গ্রহণ করা শিখবেন।
কন্ডিশনাল স্টেটমেন্ট
পাইথন প্রোগ্রামিং এ তিন ধরণের if কন্ডিশনাল(conditional) স্টেটমেন্ট রয়েছেঃ
পাইথনে if স্টেটমেন্ট এর সিনট্যাক্স
if testExpression:
statement(s)
সিনট্যাক্স এর ব্যাখ্যা
- প্রোগ্রাম প্রথমে testExpression কে মূল্যায়ন করে এবং এটি যদি True হয় তাহলে statement(s) সম্পাদিত হয়।
- যদি textExpression এর ভ্যালু
False
হয় তাহলে statement(s) সম্পাদিত হয় না। - পাইথনে
if
স্টেটমেন্ট এর বডি(Body)-কে ইন্ডেন্টেশন(indentation)-এর মাধ্যমে লিখতে হয়। সুতরাং Body শুরু হয় ইন্ডেন্টেশনের মাধ্যমে এবং প্রথম যেখান থেকে ইন্ডেন্টেশন শুরু হয় সেখানেই শেষ হয়। - শূন্য নয় এমন ভ্যালুকে পাইথন True হিসাবে গণ্য করে। None এবং 0 কে False হিসাবে গণ্য করে।
if স্টেটমেন্টের ফ্লোচার্ট
উদাহরণঃ পাইথন if স্টেটমেন্ট
# ধনাত্বক সংখ্যা হলে আমরা একটি ম্যাসেজ আউটপুট পাবো
num = 5
if num > 0:
print(num, "is a positive number.")
print("This is always printed.")
num = -5
if num > 0:
print(num, "is a positive number.")
print("This is also always printed.")
আউটপুট
5 is a positive number.
This is always printed.
This is also always printed.
উদাহরণের ব্যাখ্যা
- উপরের উদাহরণে num > 0 হচ্ছে testExpression।
- যদি testExpression এর ভ্যালু True হয় তাহলে if এর বডি সম্পাদিত হবে।
- যখন ভ্যারিয়েবল num এর ভ্যালু 5 এর সমান হয় তখন testExpression এর ভ্যালু true এবং if এর ভেতরে অবস্থিত বডি সম্পাদিত হবে।
- যদি ভ্যারিয়েবল num এর ভ্যালু -5 এর সমান হয় তাহলে testExpression এর মান false হয় এবং if এর ভেতরে অবস্থিত বডিকে স্কিপ করে পরবর্তী স্টেটমেন্ট সম্পাদিত হয়।
- print() স্টেটমেন্ট if ব্লক এর বাহিরে থাকায় এটি testExpression কে গ্রাহ না করে সব সময়ই সম্পাদিত হয়।
পাইথন if...else স্টেটমেন্ট
সিদ্ধান্ত গ্রহণের জন্য প্রোগ্রামিং এ সচরাচর কন্ডিশনাল(conditional) স্টেটমেন্ট ব্যবহৃত হয়। এই অধ্যায়ে আপনি if কন্ডিশনাল স্টেটমেন্ট ব্যবহার করে সিদ্ধান্ত গ্রহণ করা শিখবেন।
পাইথন if...else স্টেটমেন্ট
কন্ডিশন True হলে কিছু কোড এবং False হলে অন্য কিছু কোড সম্পাদন(execution) এর জন্য পাইথন if...else স্টেটমেন্ট ব্যবহৃত হয়।
if...else সিনট্যাক্স
if testExpression:
Body of if
else:
Body of else
সিনট্যাক্স এর ব্যাখ্যা
- প্রোগ্রাম প্রথমে testExpression-কে মূল্যায়ন করে এবং এটি যদি True হয় তাহলে if এর বডি সম্পাদিত হয়।
- অন্যথায়, else এর বডি সম্পাদিত হয়। if এবং else ব্লক নির্ধারনের জন্য ইন্ডেন্টেশন ব্যবহার করা হয়।
পাইথন if..else ফ্লোচার্ট
উদাহরণঃ পাইথন if...else স্টেটমেন্ট
#এই প্রোগ্রামটি প্রথমে চেক করে দেখে সংখ্যাটি ধনাত্মক না ঋণাত্মক।
# ফলাফল অনুযায়ী স্ক্রিনে উপযুক্ত ম্যাসেজ প্রিন্ট করে।
num = 5
# num =-5 দিয়েও যাচাই করুন
if num >= 0:
print("Positive or zero")
else:
print("Negative number")
উদাহরণের ব্যাখ্যা
- উপরের উদাহরণে যদি ভ্যারিয়েবল num এর ভ্যালু 5 এর সমান হয় তাহলে testExpression এর মান True হয় এবং if এর body সম্পাদিত হয়, else কে স্কিপ করে যায়।
- যদি num এর মান -5 এর সমান হয় তাহলে testExpression এর মান False হয় এবং else এর কোড ব্লক সম্পাদিত হয় কিন্তু if কে স্কিপ করে যায়।
পাইথন if...elif...else স্টেটমেন্ট
কন্ডিশন True/False যাই হোক না কেন আমরা কোড এক্সিকিউট করতে চাই অর্থাৎ সিদ্ধান্ত গ্রহণ করতে চাই, সেক্ষেত্রে if...else স্টেটমেন্ট ব্যবহৃত হয়। কিন্তু মাঝে মাঝে সিদ্ধান্ত গ্রহণ দুই এর অধিক কন্ডিশনের উপর নির্ভর করতে পারে।
দুই এর অধিক এক্সপ্রেশনকে টেস্ট করে কোড এক্সিকিউট করার জন্য নেস্টেড if...else স্টেটমেন্ট ব্যবহৃত হয়।
if...elif...else সিনট্যাক্স
if testExpression:
Body of if
elif testExpression:
Body of elif
else:
Body of else
সিনট্যাক্স এর ব্যাখ্যা
- else if এর সংক্ষিপ্তরূপ হচ্ছে elif। এটার মাধ্যমে আমরা একাধিক(multiple) কন্ডিশন চেক করতে পারি।
- if এক্সপ্রেশন বা কন্ডিশন যদি False হয় তাহলে পরবর্তী elif কন্ডিশন(condition) চেক করে এবং এভাবে চলতে থাকে।
- যদি সবগুলো কন্ডিশনই False হয় তাহলে else এর কোড ব্লক সম্পাদিত হয়।
- কন্ডিশনের উপর ভিত্তিকরে বিভিন্ন if...elif...else ব্লক এর মধ্য থেকে কেবলমাত্র একটি ব্লক এর কাজ সম্পাদিত হয়।
- একটি if ব্লকের একটি মাত্র else ব্লক থাকে। কিন্তু এটার অনেকগুলো elif ব্লক থাকতে পারে।
উদাহরনঃ পাইথনে if...elif...else স্টেটমেন্ট
# এই প্রোগ্রামটি প্রথমে চেক করে দেখে সংখ্যাটি
# ধনাত্মক, ০(শূন্য) না ঋণাত্মক।
# এর পরে ফলাফল/সিদ্ধান্ত অনুসারে স্ক্রিনে উপযুক্ত ম্যাসেজ প্রিন্ট করে।
num = -5
# num =5 এবং num =0 দিয়েও যাচাই করুন।
if num > 0:
print("Positive number")
elif num == 0:
print("Zero")
else:
print("Negative number")
উদাহরণের ব্যাখ্যা
- যখন ভ্যারিয়েবল num এর মান ধনাত্মক(Positive) হয়, তখন Positive number প্রিন্ট হয়।
- যখন num এর মান 0 হয়, তখন Zero প্রিন্ট হয়।
- যখন ভ্যারিয়েবল num এর মান ঋণাত্মক(negative) হয়, তখন Negative number প্রিন্ট হয়।
পাইথন নেস্টেড(Nested) if স্টেটমেন্ট
আমরা এক if...elif...else স্টেটমেন্টেের মধ্যে অন্য if...elif...else স্টেটমেন্টকেও রাখতে পারি। এ পদ্ধতিকে কম্পিউটার প্রোগ্রামিং এ নেস্টেড বলা হয়।
একটি স্টেটমেন্টের মধ্যে যেকোনো সংখ্যক স্টেটমেন্ট নেস্টেড হতে পারে। এগুলো বুঝার একমাত্র উপায় হচ্ছে ইন্ডেন্টেশন (Indentation)। এটি আপনাকে বিভ্রান্তির মধ্যে ফেলতে পারে। তাই যতদূর সম্ভব এটি এড়িয়ে চলা উচিৎ।
উদাহরনঃ পাইথন নেস্টেড if স্টেটমেন্ট
# এই প্রোগ্রামটি ইনপুট নিয়ে প্রথমে চেক করে দেখে সংখ্যাটি
# ধনাত্মক, ০(শূন্য) না ঋণাত্মক।
# এর পরে ফলাফল/সিদ্ধান্ত অনুসারে স্ক্রিনে উপযুক্ত ম্যাসেজ প্রিন্ট করে।
num = float(input("Enter a number: "))
if num >= 0:
if num == 0:
print("Zero")
else:
print("Positive number")
else:
print("Negative number")
উদাহরণের ব্যাখ্যা
- যখন ভ্যারিয়েবল num এর মান ধনাত্মক(Positive) হয়, তখন Positive number প্রিন্ট হয়।
- যখন num এর মান 0 হয়, তখন Zero প্রিন্ট হয়।
- যখন ভ্যারিয়েবল num এর মান ঋণাত্মক(negative) হয়, তখন Negative number প্রিন্ট হয়।
পাইথন প্রোগ্রামিং for লুপ
কোনো নির্দিষ্ট কোড ব্লককে রিপিট(repeat) করার জন্য প্রোগ্রামিং এ লুপ(loop) ব্যবহৃত হয়। এই অধ্যায়ে আপনি পাইথন প্রোগ্রামিং এ for লুপ তৈরি করা শিখবেন।
কন্ডিশন(condition) মিথ্যা না হওয়া পর্যন্ত কোনো কোড ব্লককে রিপিট(repeat) করার জন্য প্রোগ্রামিং এ লুপ ব্যবহৃত হয়।
list, tuple, string ইত্যাদি সিকুয়েন্স বা অন্যান্য ইটারেবল অবজেক্টকে ইটারেট(iterate) করতে পাইথনে for লুপ ব্যবহৃত হয়। সিকুয়েন্সকে ইটারেট করার এই পদ্ধতিকে ট্রাভার্সাল(traversal) বলা হয়।
পাইথনে for স্টেটমেন্ট এর সিনট্যাক্স
for value in sequence:
Body of for
সিনট্যাক্স এর ব্যাখ্যা
- এখানে value হচ্ছে ভ্যারিয়েবেল যা প্রতিবার ইটারেশন(iteration) এর সময় সিকুয়েন্স থেকে ভ্যালু গ্রহণ করে।
- সিকুয়েন্সের শেষ উপাদানে না পৌঁছা পর্যন্ত এই লুপ চলতেই থাকে। for লুপ এর body-কে আলাদা করার জন্য ইন্ডেন্টেশন ব্যবহার করা হয়।
for স্টেটমেন্টের ফ্লোচার্ট
উদাহরনঃ পাইথন for লুপ
# এই প্রোগ্রামটি লিস্ট এ জমা রাখা সকল আইটেম
# এর যোগফল নির্ণয় করবে।
# সংখ্যার লিস্ট
numbers = [1,9,7,8,2,5,8]
# যোগফল জমা রাখার ভ্যারিয়েবল
sum = 0
# লিস্টের সবগুলো আইটেম পুনরাবৃত্তি(iterate) করবে।
for val in numbers:
sum = sum+val
# যোগফল প্রিন্ট করবে।
print("The sum is",sum)
# Output: The sum is 40
range() ফাংশন
range() ফাংশন ব্যবহার করে আমরা নাম্বার এর সিকুয়েন্স তৈরি করতে পারি। যেমন- range(10) ফাংশন এর মাধ্যমে 0 থেকে 9 পর্যন্ত ১০টি নাম্বার পাওয়া যায়।
range() ফাংশন এর সিনট্যাক্স
range(start, stop, step size)
প্যারামিটার এর ব্যাখ্যা
- start এবং stop যথাক্রমে ব্যবধীর(range) প্রথম এবং শেষ উপাদান।
- step size হলো উপাদের ক্রমিক ধাপ। কোনো কিছু না বলে দিলে step size এর ডিফল্ট মান 1 থাকে।
range() ফাংশনের সকল ভ্যালু মেমোরিতে সংরক্ষিত হয় না। সুতরাং এটি শুধুমাত্র start, stop এবং step size মনে রাখে এবং সেই অনুযায়ী নাম্বার উৎপাদন করে।
এই ফাংশন এর মাধ্যমে সকল উপাদান বা আইটেম এর আউটপুট নিতে আমরা list() ফাংশন ব্যবহার করতে পারি।
নিচের উদাহরণের মাধ্যমে এটি আপনার কাছে আরও পরিষ্কার হয়ে যাবে।
# রেঞ্জ প্রিন্ট হবে
print(range(10))
# Output: range(0, 10)
# 0 থেকে 10 এর মধ্যে রেঞ্জ এর লিস্ট প্রিন্ট হবে
print(list(range(10)))
# Output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 3 থেকে 6 এর মধ্যে রেঞ্জ এর লিস্ট প্রিন্ট হবে
print(list(range(3,6)))
# Output: [3, 4, 5]
# 4 ব্যবধানে 3 থেকে 20 এর মধ্যে রেঞ্জ এর লিস্ট প্রিন্ট হবে
print(list(range(3, 20, 4)))
# Output: [3, 7, 11, 15, 19]
for লুপ এর মধ্যে range() ফাংশন ব্যবহার করে আমরা নাম্বারের সিকুয়েন্সকে ইটারেট(iterate) করতে পারি। ইন্ডেক্সিং ব্যবহার করে সিকুয়েন্সকে ইটারেট করতে এই ফাংশন এর প্যারামিটার হিসাবে আমরা len() ফাংশন ব্যবহার করতে পারি।
উদাহরণস্বরূপঃ
# index ব্যবহার করে সমগ্র লিস্টকে ইটারেট করবে।
# color এর লিস্ট
color = ['red','green','blue']
# index ব্যবহার করে সম্পূর্ণ লিস্টের পুনরাবৃত্তি ঘটাবে
for i in range(len(color)):
print("I like",color[i])
# Output:
# My favourite color is red
# My favourite color is green
# My favourite color is blue
else সহ for লুপ
for লুপের সাথে অতিরিক্ত হিসাবে else ব্লকও থাকতে পারে। for লুপের কন্ডিশন False হলে else এর কোড ব্লক সম্পাদিত হবে।
for লুপ বন্ধ করার জন্য break স্টেটমেন্ট ব্যবহার করা হয়। এক্ষেত্রে এটি else অংশকে এড়িয়ে যায়।
সুতরাং লুপের else অংশ কেবল তখনই সম্পন্ন হয় যখন কোনো break স্টেটমেন্ট থাকে না এবং কন্ডিশন false হয়।
নিচের উদাহরণের মাধ্যমে এটি আপনার কাছে পরিষ্কার হয়ে যাবে।
# for লুপ এর সাথে else ব্লক এর ব্যবহার
# ডিজিট এর একটি লিস্ট
list_of_digits = [0,1,2,3,4,5,6,7,8,9]
# বিভিন্ন রেজাল্ট পাওয়ার ইনপুট ডিজিট পরিবর্তন করুন
input_digit = 4
# ইউজার থেকে ইনপুট নিতে নিচের কোড এর কমেন্ট তুলে দিন
#input_digit = int(input("Enter a digit: "))
# আমাদের লিস্ট থেকে ইনপুট ডিজিট খুঁজে বের করবে।
for i in list_of_digits:
if input_digit == i:
print("Digit is in the list")
break
else:
print("Digit not found in list")
# Output: আপনার ইনপুট এর উপর ভিত্তি করে ফলাফল পাবেন।
এখানে 0 থেকে 9 পর্যন্ত আমাদের একটি লিস্ট আছে। আমরা ইউজারকে একটি নাম্বার প্রবেশ করাতে বলি এবং আমাদের লিস্টে আছে কি না তা চেক করি। যদি নাম্বারটি আমাদের লিস্টে থাকে তাহলে for লুপ স্থায়ীভাবে বন্ধ হয়ে যাবে।
সুতরাং else অংশ রান করবে না। কিন্তু নাম্বারটি যদি আমাদের লিস্টে না থাকে তাহলে else অংশ রান হবে।
পাইথন while লুপ
কোনো নির্দিষ্ট কোড ব্লককে রিপিট করার জন্য প্রোগ্রামিং এ লুপ ব্যবহৃত হয়। এই অধ্যায়ে আপনি পাইথনে while লুপ তৈরি করা শিখবেন।
যতক্ষণ পর্যন্ত testExpression বা কন্ডিশন true থাকে ততক্ষণ পর্যন্ত কোড ব্লককে ইটারেট করার জন্য পাইথনে while লুপ ব্যবহৃত হয়।
কোনো কোড ব্লককে কত সংখ্যকবার ইটারেট(iterate) করতে হবে তা পূর্বে থেকে জানা না থাকলে আমরা সাধারণত লুপ ব্যবহার করি।
পাইথন while লুপ এর সিনট্যাক্স
while testExpression:
Body of while
Syntax এর ব্যাখ্যা
- while লুপে প্রথমে testExpression কে চেক করে। প্রোগ্রাম লুপের Body এর মধ্যে কেবল তখনই প্রবেশ করে( লুপের কোড ব্লক রান করে) যখন testEexpression এর মান True হয়।
- একবার ইটারেশন(iteration) এর পরে testExpression পুনরায় চেক হয়। testExpression এর মান False না হওয়া পর্যন্ত এই প্রক্রিয়া চলতেই থাকে।
- পাইথনে while লুপের body নির্ণয়ের জন্য ইন্ডেন্টেশন ব্যবহৃত হয়।
- Body শুরু হয় ইন্ডেন্টেশন দিয়ে এবং শেষ হয় যেখান থেকে প্রথম ইন্ডেন্টেশন শুরু হয়েছিল।
নোটঃ শূন্য নয় এমন যেকোনো ভ্যালুকে পাইথন True হিসাবে গণ্য করে। None এবং 0 কে False হিসাবে গণ্য করে।
while লুপ ফ্লোচার্ট
উদাহরনঃ পাইথন while লুপ
# স্বাভাবিক সংখ্যার যোগফল নির্ণয়ের প্রোগ্রাম
# sum = 1+2+3+...+n
# ইউজার থেকে ইনপুট গ্রহন এর জন্য
# কমেন্ট তুলে দিন
# n = int(input("Enter n: "))
n = 10
# count এবং sum কে ইনিশিয়ালাইজ করা
count = 1
sum = 0
while count <= n:
sum = sum + count
count = count + 1 # update counter
#যোগফল প্রিন্ট হবে
print("The sum is", sum)
আউটপুট
উদাহরণের ব্যাখ্যা
- উপরের প্রোগ্রামে testExpression ততক্ষণ পর্যন্ত True থাকবে যতক্ষণ পর্যন্ত ভ্যারিয়েবল count এর মান 10 এর সমান বা ছোট থাকবে। আমাদের প্রোগ্রামে count এর মান 10।
- লুপের body এর মধ্যে কাউন্টার(counter) ভায়রিয়েবলের মান বৃদ্ধি করা দরকার। এটি অত্যন্ত জরুরী, মজার বিষয় হলো প্রায় সময়ই আমরা এটা করতে ভুলে যায়। এটা করতে ভুলে গেলে প্রোগ্রাম অসীম সংখ্যকবার চলতে থাকবে, অর্থাৎ শেষই হবে না।
- পরিশেষে ফলাফল প্রদর্শিত হবে।
else সহ while লুপ
for লুপের ন্যায় while লুপেরও অতিরিক্ত else ব্লক থাকতে পারে।
এক্ষেত্রে while লুপের কন্ডিশন False হলে else অংশ সম্পাদিত হয়। while লুপ বন্ধ করার জন্য break স্টেটমেন্ট ব্যবহার করা হয়। এটি else অংশকেও এড়িয়ে যায়।
সুতরাং লুপের else অংশ কেবল তখনই সম্পন্ন হয় যখন কোনো break স্টেটমেন্ট থাকে না এবং কডিশন False হয়।
নিচের উদাহরণের মাধ্যমে এটি আপনার কাছে আরও পরিষ্কার হয়ে যাবে।
# for লুপ এর সাথে else স্টেটমেন্ট এর ব্যবহার
counter = 0
while counter < 5:
print("Inside while loop")
counter = counter + 1
else:
print("Inside else ")
আউটপুট
উদাহরণের ব্যাখ্যা
- উপরের প্রোগ্রামে স্ট্রিং Inside while loop কে ৫ বার প্রিন্ট করার জন্য আমরা কাউন্টার ভ্যারিয়েবল ব্যবহার করেছি।
- while লুপের ৬ষ্ট ইটারেশনে কন্ডিশন False হয়। সুতরাং else অংশ সম্পাদিত(executed) হয়।
পাইথন break স্টেটমেন্ট
এই অধ্যায়ে আপনি break স্টেটমেন্ট ব্যবহার করে লুপ এর ফ্লো পরিবর্তন করা শিখবেন।
অন্যান্য প্রোগ্রামিং এর মত পাইথনেও break স্টেটমেন্ট লুপের স্বাভাবিক ফ্লো পরিবর্তন করতে পারে।
টেস্ট এক্সপ্রেশন false না হওয়া পর্যন্ত লুপ(loop) একগুচ্ছ কোডকে ইটারেট(iterate) করতেই থাকে অর্থাৎ একই কোড বার বার এক্সিকিউট করতে থাকে। কিন্তু মাঝেমাঝে আমরা লুপের চলমান ইটারেশন অথবা এমনকি টেস্ট এক্সপ্রেশন চেক না করেই সমগ্র লুপের অবসান ঘটাতে চাই। এক্ষেত্রে break স্টেটমেন্ট ব্যবহত হয়।
পাইথন ব্রেক(break) স্টেটমেন্ট
যে লুপের মধ্যে break স্টেটমেন্ট থাকে সেই লুপকে ব্রেক স্টেটমেন্ট শেষ করে দিতে পারে। অর্থাৎ লুপের সমাপ্তি ঘটাতে পারে। এক্ষেত্রে প্রোগ্রামের কন্ট্রোল লুপের Body থেকে বের হয়ে ঠিক তার পরের স্টেটমেন্টে চলে যায়।
নেস্টেড লুপ(লুপের মধ্যে লুপ)-এর মধ্যে যদি break স্টেটমেন্ট থাকে তাহলে break স্টেটমেন্ট ভেতরের লুপটিকে টার্মিনেট(terminate) করে।
break এর সিনট্যাক্স
break
Break স্টেটমেন্ট এর ফ্লোচার্ট
break স্টেটমেন্ট এর সাক্ষাৎ পাওয়া মাত্রই প্রোগ্রামের কন্ট্রোল লুপ থেকে বের হয়ে যায়।
for লুপ এবং while লুপ এর মধ্যে break স্টেটমেন্ট কিভাবে কাজ করে নিচে চিত্রের সাহায্যে দেখানো হলোঃ
উদাহরণ: পাইথন break স্টেটমেন্ট
# for লুপের মধ্যে break স্টেটমেন্টের ব্যবহার
for value in "bangladesh":
if value == "e":
break
print(value)
print("stop printing")
আউটপুট
b
a
n
g
l
a
d
stop printing
উদাহরণের ব্যাখ্যা
- উপরের প্রোগ্রামে আমরা সম্পূর্ন সিকুয়েন্স "bangladesh" কে ইটারেট করতে চেয়েছিলাম। কিন্তু Break স্টেটমেন্টের ব্যবহার দেখানোর জন্য আমরা value ভ্যারিয়েবলের ভ্যালু "e" কিনা চেক করেছি, "e" হলেই for লুপ থেকে বিরিত(break) নিতে চেয়েছি। তাই আমরা আমদের "e" এর পুর্ববর্তী সবগুলো অক্ষরের আউটপুট পেয়েছি। তারপরে লুপের অবসান ঘটেছে।
পাইথন continue স্টেটমেন্ট
এই অধ্যায়ে আপনি continue স্টেটমেন্ট ব্যবহার করে লুপ এর ফ্লো পরিবর্তন করা শিখবেন।
অন্যান্য প্রোগ্রামিং এর মত পাইথনেও continue স্টেটমেন্ট লুপের স্বাভাবিক ফ্লো পরিবর্তন করতে পারে।
টেস্ট এক্সপ্রেশন false না হওয়া পর্যন্ত লুপ(loop) একগুচ্ছ কোডকে ইটারেট(iterate) করতেই থাকে অর্থাৎ একই কোড বার বার এক্সিকিউট করতে থাকে। কিন্তু মাঝেমাঝে আমরা লুপের চলমান ইটারেশনকে এড়িয়ে যেতে চাই। এক্ষেত্রে continue স্টেটমেন্ট ব্যবহত হয়।
পাইথন continue স্টেটমেন্ট
শুধুমাত্র চলমান ইটারেশনের জন্য লুপের মধ্যে বিদ্যমান কোডের এক্সিকিউশনকে এড়িয়ে যাওয়ার জন্য পাইথন continue স্টেটমেন্ট ব্যবহার করা হয়। এক্ষেত্রে লুপের অবসান ঘটে না বরং পরবর্তী ইটারেশনের জন্য লুপ চলমান হয়।
continue এর সিনট্যাক্স
continue
continue স্টেটমেন্ট এর ফ্লোচার্ট
নিচের চিত্রে for এবং while লুপ এর মধ্যে continue স্টেটমেন্টের ব্যবহার দেখানো হলোঃ
উদাহরণ: পাইথন continue স্টেটমেন্ট
# for লুপের মধ্যে continue স্টেটমেন্টের ব্যবহার
for value in "bangladesh":
if value == "e":
continue
print(value)
print("stop printing")
আউটপুট
b
a
n
g
l
a
d
s
h
stop printing
উদাহরণের ব্যাখ্যা
- এই উদাহরণটি পূর্বের অধ্যায়ের উদাহরণের মতই শুধুমাত্র পার্থক্য হচ্ছে এখানে break স্টেটমেন্টের পরিবর্তে continue স্টেটমেন্ট ব্যবহার করা হয়েছে।
- continue স্টেটমেন্টের ব্যবহার দেখানোর জন্য আমরা value ভ্যারিয়েবলের ভ্যালু "e" কিনা চেক করেছি, "e" হলেই for লুপের চলমান কোড এক্সিকিউশনকে এড়িয়ে পরবর্তী ভ্যালুর জন্য লুপটি পুনরায় চলমান হয়। তাই আমরা "e" ব্যতীত সবগুলো ভ্যালুর আউটপুট দেখতে পেয়েছি।
পাইথন pass স্টেটমেন্ট
এই অধ্যায়ে আপনি pass স্টেটমেন্ট সম্মন্ধে জানবেন। এটি ফাংশন, লুপ ইত্যাদিকে ভবিষ্যতে ব্যাবহার এর জন্য স্থানধারক(placeholder) হিসাবে ব্যবহার করা হয়।
পাইথনে pass একটি ফাঁকা স্টেটমেন্ট। comment এবং pass এর মধ্যে পার্থক্য হচ্ছে ইন্টারপ্রেটার কমেন্টকে সম্পূর্ণভাবে অবজ্ঞা করে কিন্তু pass কে অবজ্ঞা করে না।
যাইহোক pass স্টেটমেন্ট সম্পাদিত হলে কোনো কিছুই ঘটে না। এটি এই ফলাফল দেয় যে, প্রোগ্রামে কোনো অপারেশনই সম্পন্ন হয় নি।
pass এর সিনট্যাক্স
pass
আমরা সাধারণত স্থানধারক হিসাবে এটি ব্যবহার করি।
মনেকরি, আমাদের একটি loop অথবা ফাংশন রয়েছে যার কাজ এখনো করিনি। কিন্তু ভবিষ্যতে আমরা এর কাজ করতে চাই।
পাইথনে loop এর body সাধারনত ফাঁকা রাখা যায় না। কারণ ইন্টারপ্রেটার body এর জন্য অভিযোগ করে বসতে পারে। সুতরাং আমরা pass স্টেটমেন্ট ব্যবহার করি এমন একটি body গঠন করতে যা আসলে কোনো কিছুই করে না।
উদাহরণ: পাইথন pass স্টেটমেন্ট
# pass হলো ভবিষ্যতে ব্যাবহার এর জন্য
# একটি স্থানধারক(placeholder)
sequence = {'p', 'a', 's', 's'}
for value in sequence:
pass
একই কাজ আমরা ফাঁকা ফাংশন অথবা ক্লাসেও করতে পারি।
function এ pass স্টেটমেন্ট
# ফাংশনে pass এর ব্যবহার
def function(args):
pass
class এ pass স্টেটমেন্ট
# ক্লাসে pass এর ব্যবহার
class className:
pass
0 comments:
Post a Comment