আমরা string manipulation সম্পর্কে শিখছিলাম। একটা প্রশ্ন রেখে গিয়েছিলাম যে, পাইথনে কোন string কে পুরোপুরি ছোট হাতের অক্ষর কিংবা বড় হাতের অক্ষরে রুপান্তর করা সম্ভব কিনা ! উত্তর হ্যা, সম্ভব।
এখানেও পাইথনের মানুষের ভাষার কাছাকাছি হওয়ার ব্যাপারটা চলে আসে। ধরুন, আমরা প্রতিটা অক্ষরকে (character) কে ছোট হাতের অক্ষরে রূপান্তর করতে চাই। তাহলে, আমরা মুখে যা বলতাম তা হচ্ছে “সব ছোট হয়ে যাও” বা “be lower!” পাইথনেও string এর প্রতিটা অক্ষর ছোট হাতের অক্ষরে রূপান্তর করার ফাংশন হচ্ছে lower() ! সাধারণ মেথড, string_name.lower()। বড় হাতের অক্ষরের জন্য হচ্ছে string_name.upper()।
string manipulation এর এরকম অনেক ফাংশন আছে। তবে শুরুতে string সম্পর্কে শুধু বেসিক জ্ঞান থাকলেই চলবে। তাই এই পর্বে আমি পাইথনের arithmetic operation ব্যাখ্যা করার চেষ্টা করব।
আমরা ছোটবেলায় সরল অংক করতে যেয়ে কোন কাজটা আগে করতে হবে তা মনে রাখার জন্য “BODMAS” নামে একটা শব্দ শিখেছিলাম। এর পুরো ব্যাখ্যা হচ্ছে-
B – Brackets (বন্ধনী)
O – Onto (গুণ)
D – Division (ভাগ)
M – Multiplication (গুণ)
A – Addition (যোগ)
S – Substraction(বিয়োগ)
একটা গাণিতিক রাশিতে কোন কাজটা আগে হবে এটা নির্ধারণ করাটা হচ্ছে যেকোন গাণিতিক হিসাবের প্রথম কাজ। এটা ভুল হলে সঠিক মান পাওয়া কখনই সম্ভব নয়। তাই পাইথনে দক্ষ হতে হলেও প্রথমে এখানে arithmetic operation এর ক্রমটা জানতে হবে। এর আগে আমরা বিভিন্ন গাণিতিক হিসাবের সমতুল পাইথনের expression গুলো দেখে নেই।
যোগ(addition) – +
বিয়ো(substraction) – –
গুণ(multiplication) – *
ভাগ(division)- / অথবা //
ঘাত(power) /exponentiation- **
ভাগশেষ(remainder)- %
বন্ধনী(Braces) – ()
এখন এই expression গুলোর ক্রম হচ্ছে “PEDMAS”। অর্থাৎ
P – Parentheses
E – Exponentiation
D- Division (and than remainder)
M – Multiplication
A – Addition
S – Substraction
এখানে উল্লেখ্য যে, Parentheses বলতে কিন্তু শুধু প্রথম বন্ধনীকে বোঝানো হয়েছে। কারণ ২য় এবং ৩য় বন্ধনী ব্যবহার করে পাইথনে কিছু ডাটা টাইপ initial কর হয়। গাণিতিক রাশির মাঝে এ ধরনের বন্ধনী ব্যবহার করলে পাইথন confusion এ ভুগবে। একটা উদাহরণ দেওয়া যাক-
প্রথম এক্সপ্রেসনে সবার আগে হচ্ছে বন্ধনী এর ভিতরের অংশের কাজ। বন্ধনী এর ভিতরে গুণ এবং exponentiation এই দুটি অংশ আছে। প্রথমেই হচ্ছে exponentiation অংশের কাজ অর্থাৎ 7 ** 2 = 49 হিসাব হবে। তারপর হবে 3*5 = 15, তারপর 15 + 49 = 64!
বন্ধনীর কাজের শেষে হবে ভাগের কাজ তারপর গুণ, যোগ এবং সবশেষে বিয়োগ।
দ্বিতীয় এক্সপ্রেসনে আমরা কয়েকটি বন্ধনী দেখতে পাচ্ছি। এখানে সবার আগে হিসাব হচ্ছে সবার ভিতরের বন্ধনীর (2*1)। ব্যাপারটা অনেকটা এরকম-
10 * (5 * (2 *1)) = 10 * (5 * 2) = 10 * 10 = 100
আমরা দেখতেই পাচ্ছি, যত ধরনের গাণিতিক হিসাব আছে তা বেশিরভাগই শুধু float এবং integer ডাটা টাইপের ক্ষেত্রে প্রযোজ্য হচ্ছে। এখানে আরেকটা ব্যাপার লক্ষণীয় যে, আমরা শুধু integer বা float, একটা ডাটা নিয়ে কাজ করছি। যদি এমন হয় যে, দুটো ডাটা এর মিশ্রণ থাকে তবে? integer এবং float ডাটা এর মাঝে হিসাব হলে পাইথন by default “float” ডাটা টাইপে রেজাল্ট প্রকাশ করে। যেমন –
আচ্ছা, এখানে একটা বিষয় বাদ পরে গেছে সেটা হচ্ছে ভাগশেষ (remainder) নির্ণয়। পাইথনের remainder নির্ণয়ের অংশটা ভাগের সাথেই হিসাব হবে। অর্থাৎ Order এর ক্ষেত্রে ভাগ এবং ভাগশেষ এর order একই। তবে আগে ভাগ অংশটা হিসাব হয়ে তারপর ভাগশেষ হিসেব হবে। যেমন-
শেষ এক্সপ্রেসনটাতে যা হচ্ছেঃ- 20 / 4 % 5 = 5 % 5 = 0 (5 কে 5 দিয়ে ভাগ করলে ভাগশেষ শুন্য হয়)!
আজকে এই পর্যন্তই!
যাওয়ার আগে একটা প্রশ্ন রেখে যাচ্ছিঃ string ডাটা টাইপের ক্ষেত্রে আমরা শুধু “যোগ” পদ্ধতি এর প্র্য়োগ করতে পারি। প্রশ্ন হচ্ছে, দুটো string এর মাঝে যোগ হলে আসলে কী ঘটে? (Hint: google)
1 comment
হাকুশ পাকুশ থেকে শুরু করেছিলাম। এই টিউটোরিয়াল থেকে আবার পাইথন শেখা শুরু করব। ভাই লেখা চালিয়ে যান।