Categories
Bangla Python Series

বাংলায় পাইথন – লিস্ট (দ্বিতীয় পর্ব)

আমরা আগের পোস্টে দেখেছি কিভাবে লিস্ট ডিক্লেয়ার করা যায়, কিভাবে লিস্টের ভ্যালু গুলো এক্সেস করা যায় । আজ আমরা দেখব লিস্ট সম্পর্কিত আরো কিছু জিনিস । আমি এর আগে dir() ফাংশনের কথা উল্লেখ করেছিলাম । পাইথনে কোন নাম সম্পর্কে টেকনিক্যাল বিষয় (প্রোপার্টিজ, মেথডস ইত্যাদি) জানার জন্য আমরা এই ফাংশনটি ব্যবহার করি । আসুন ঝটপট একটি লিস্টের উপর এই ফাংশনটি প্রয়োগ করি :

আমরা দেখতে পাচ্ছি একটি লিস্টের অনেকগুলো মেথড ও প্রোপার্টি রয়েছে । যেগুলোর আগে এবং পরে __ (ডাবল আন্ডারস্কোর) রয়েছে সেগুলো নিয়ে আমরা মাথা ঘামাব না । বাকিগুলোর মধ্যে আমরা দেখতে পাচ্ছি:

append()
count()
extend()
index()
insert()
pop()
remove()
reverse()
sort()

কোন লিস্টের শেষে আরেকটি আইটেম যোগ করতে আমরা append() ব্যবহার করি । যেমন:

এখানে l একটি লিস্ট যেটার শেষে আমরা 3 যোগ করলাম । কোন লিস্টে একটি আইটেম কতবার আছে তা জানার জন্য আমরা count() ব্যবহার করি । যেমন:

তাহলে দেখলাম l লিস্টটিতে বিভিন্ন আইটেম কতবার আছে তা কিভাবে বের করা যায় । লক্ষ্য করূন অন্যান্য অনেক প্রোগ্রামিং ল্যাঙ্গুয়েজে count বা length এই ধরনের ফাংশন, মেথড বা প্রোপার্টি দিয়ে লিস্টের আকার বা আইটেমের সংখ্যা নির্নয় করা হয় । পাইথনে count এর ব্যবহারটি কিছুটা ভিন্ন । আর পাইথনে একটি লিস্ট এর আইটেম সংখ্যা বের করতে আমরা len() ফাংশনটি ব্যবহার করি । যেমন:

এই কোড রান করে দেখুন আউটপুট কি দেখায় । একটি লিস্টের শেষে আরেকটি লিস্ট যোগ করতে আমরা extend() ব্যবহার করি । যেমন:

এখানে lst1 লিস্টটির শেষে lst2 যোগ করলাম । এর ফলে lst1 এর আইটেমগুলোর সাথে lst2 এর আইটেমগুলোও যুক্ত হয়ে গেল ।

এবার আসা যাক index() এ । কোন লিস্টে কোন আইটেম এর অবস্থান বা ইন্ডেক্স জানতে আমরা এটি ব্যবহার করি । লিস্টে যদি ঐ আইটেম একাধিকবার থাকে তাহলে প্রথম অবস্থানটি পাওয়া যাবে। যেমন:

এখানে 2 আইটেমটি দুবার এসেছে – 1 এবং 2 ইন্ডেক্সে । তাই প্রথম অবস্থানটি পেলাম আমরা ।

সময়ের স্বল্পতার কারণে আজ আর বাকি মেথডগুলো কাভার করব না । ইনশাআল্লাহ নেক্সট পোস্টে আবার শুরু করব ।

Categories
Bangla Python Series

বাংলায় পাইথন – লিস্ট

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

কিভাবে লিস্ট ডিক্লেয়ার করব? (থার্ড) ব্রাকেটের ভিতরে কমা দিয়ে একেকটি আইটেম সেপারেট করে দিলেই লিস্ট তৈরি হয়ে যাবে । আসুন উদাহরণ দেখি:

প্রথমে কোডগুলো মনোযোগ দিয়ে পড়ুন । বোঝার চেষ্টা করূন এর আউটপুট কি হতে পারে ।

বরাবরের মত একটি পাইথন ফাইলে এই কোডগুলো লিখে রান করে দেখুন কি আউটপুট দেখায় । type() ফাংশনটির ব্যবহার আমরা আগেই দেখেছি । আউটপুট দেখে মিলিয়ে নিন আপনি কি আশা করেছিলেন আউটপুট হিসেবে আর কি এসেছে আউটপুট । যদি না মিলে, বোঝার চেষ্টা করূন কোথায় বুঝতে পারেন নি ।

এই কোড থেকে আমরা কি কি দেখলাম:

  • কিভাবে লিস্ট ডিক্লেয়ার করতে হয়
  • লিস্টের আইটেমগুলোর একটি ইন্ডেক্স ভ্যালু থাকে। এই ইন্ডেক্স ভ্যালু ব্যবহার করে আমরা n-তম আইটেমের মান বের করতে পারি
  • এই ভ্যালুর মান 0 থেকে শুরু হয় । অর্থাৎ প্রথম আইটেমের ইন্ডেক্স 0, দ্বিতীয়টির 1 এভাবে n-তম আইটেমের ইন্ডেক্স (n-1)

লিস্ট সম্পর্কে আরো জানার আগে আমরা range() ফাংশনটির ব্যবহার দেখে নেই । এই ফাংশনটির একটি উদাহরণ দেখি :

এই ফাংশনটি সংখ্যার লিস্ট তৈরি করে । এর সিগনেচার অনেকটা এরকম: range(min,max,step) । এখানে min হল নূন্যতম ভ্যালু যেটা থেকে লিস্ট শুরু হবে । max হল সর্বোচ্চ ভ্যালু যেটার ঠিক আগের ভ্যালু পর্যন্ত লিস্ট তৈরি হবে । step হল মধ্যবর্তী ব্যবধান ।

উপরোক্ত কোড রান করালে প্রথমে আমরা পাব 0 থেকে শুরু করে 10 এর ঠিক আগের ভ্যালু অর্থাৎ 9 পর্যন্ত । যদি step না দেওয়া হয় তাহলে পাইথন এটার ভ্যালু 1 ধরে নেয় । দ্বিতীয় বার আমরা step হিসেবে 10 দিয়েছি । তাই এবার আমরা 0 থেকে শুরু করে প্রতি 10 ঘর পর পর সংখ্যার লিস্ট পাব 90 পর্যন্ত ।

আমরা লিস্ট প্র্যাকটিস করার জন্য range() ফাংশনটি ব্যবহার করে দ্রুত লিস্ট তৈরি করে নিব । আসুন ফেরা যাক লিস্টে । আমরা দেখেছি কিভাবে ইন্ডেক্স ব্যবহার করে আমরা লিস্টের আইটেমগুলো এক্সেস করেছি । ধরূন আমাদের লিস্টের সব ডাটা লাগবে না, আমরা একটি নির্দিষ্ট রেঞ্জ নিয়ে কাজ করতে চাই । পাইথন আমাদের সেই সুবিধা দেয় (যা অন্য অনেক ল্যাঙ্গুয়েজে পাওয়া যায় না ) । আসুন দেখি কিভাবে:

এই উদাহরণটি নিজেরা চেষ্টা করার জন্য প্রথমেই একটি লিস্ট তৈরি করে নেই ।

আসুন এবার লিস্ট নিয়ে নাড়া চাড়া করা যাক:

এই কোড রান করালে দেখা যাবে list1to5 একটি লিস্ট যার ভ্যালু 1 থেকে 5 । sl[0:5] বলতে বোঝানো হয় sl নামক লিস্টের 0-তম আইটেম থেকে শুরু করে 5-তম আইটেমের আগের আইটেম পর্যন্ত আইটেমগুলো নিয়ে তৈরি একটি লিস্ট । এবার নিজে নিজেই বোঝার চেষ্টা করুন list2to7 এর ভ্যালু কি হতে পারে এবং কেন ।

এবার নিজে কিছু কাজ করুন:
3 থেকে 9 পর্যন্ত লিস্ট বোঝাতে আমরা কি লিখব?
sl[:5] এর ভ্যালু কত হবে?
sl[4:] এর ভ্যালু কত হবে?
sl[:] এর ভ্যালু কত হবে? কেন?

আমরা range ফাংশনে step এর ব্যবহার দেখেছিলাম । লিস্টের ক্ষেত্রেও step ব্যবহার করা যায় । যেমন:

অর্থাৎ শেষে আরেকটি কোলন দিয়ে আমরা step ভ্যালুটি নির্দেশ করে থাকি । তাই প্রথম ক্ষেত্রে আমরা 0-তম আইটেম থেকে শুরু করে 2টি আইটেম বাদ দিয়ে দিয়ে 10-তম আইটেমের আগের আইটেম পর্যন্ত যে আইটেগুলো আছে সেগুলোর লিস্ট পাব । নিজে নিজে বোঝার চেষ্টা করি দ্বিতীয় ক্ষেত্রে কি ঘটছে ।

যে কোন ভ্যালুর আগে মাইনাস চিহ্ন দিলে তার অবস্থান বিপরীত দিক থেকে বিবেচনা করা হয় । তাই শেষ দিক থেকে 5-তম আইটেমের ভ্যালু হবে sl[-5] । এভাবে শেষ দিক থেকে 2-তম আইটেমের আগ পর্যন্ত আইটেমগুলোর লিস্ট পাব: sl[:-2] । step এর ভ্যালু নেগেটিভ হলে গনণা উল্টো দিকে হবে । যেমন শেষ দিক থেকে 2-তম আইটেমের আগের আইটেম থেকে শুরু করে 3-তম আইটেম পর্যন্ত আইটেমগুলো 2 ধাপ করে পেছালে আমরা যে লিস্টটি পাব তার জন্য আমাদের কে লিখতে হবে : sl[-2:3:-2]

এভাবে নিজেরা ইচ্ছামত লিস্ট তৈরি করে তার বিভিন্ন অংশ আলাদা করার চেষ্টা করি । প্রথমবার দেখে লিস্টের সিন্ট্যাক্স খুব জটিল মনে হতে পারে । কিন্তু কিছুদিন অনুশীলন করলেই ঠিক হয়ে যাবে । পাইথনের চমৎকার ফিচারগুলোর মধ্যে অন্যতম হল লিস্ট এর এই ব্যবহার । একটি লিস্ট এর যে কোন অংশ নিয়ে আরেকটি লিস্ট খুব সহজেই তৈরি করা যায়। পাইথনে লিস্টের আরো চমকপ্রদ কিছু ব্যবহার রয়েছে যেগুলো নিয়ে ভবিষ্যতে কোন এক সময় লিখব ।

Categories
Bangla Python Series

বাংলায় পাইথন – ম্যাথ সিম্বলস

পাইথনে গানিতিক সমস্যা সমাধানের জন্য যে প্রতীক চিহ্নগুলো ব্যবহার করা হয় সেগুলো হল:

  • + প্লাস বা যোগ
  • – মাইনাস বা বিয়োগ
  • / স্ল্যাশ বা ভাগ
  • * এস্টেরিস্ক বা গুন
  • % পার্সেন্ট বা মডুলাস বা ভাগশেষ
  • < লেস দ্যান বা ক্ষুদ্রতর
  • > গ্রেটার দ্যান বা বৃহত্তর
  • <= লেস দ্যান অর ইকুয়াল অর্থাৎ ক্ষুদ্রতর অথবা সমান
  • >= গ্রেটার দ্যান অর ইকুয়াল অর্থাৎ বৃহত্তর অথবা সমান

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

এবার উদাহরণসহ দেখা যাক এদের কোনটার কাজ কি:

যোগ থেকে আরম্ভ করে ভাগ : এগুলোর কাজ বোধহয় বলার অপেক্ষা রাখে না । আমরা কিছু উদাহরণ দেখব।

আপনারা এই কোডটি কোন পাইথন ফাইলে টাইপ করে (কখনোই কপি পেস্ট করবেন না প্লিজ) রান করে দেখুন । এবার পাইথনের ইন্টারএক্টিভ শেলে নিজের ইচ্ছামত কিছু যোগ বিয়োগ গুন ভাগ করে দেখুন পাইথন এর এই শেলটিকে আসলে ক্যালকুলেটর হিসেবে ব্যবহার করা যায় কিনা 🙂

আমি করলাম:

একটু লক্ষ্য করলে দেখবেন পাইথনও ক্যলকুলেশন করার সময় BODMAS এর প্যটার্ন ফলো করে । এটাকে অপারেটর প্রিসিডেন্সও বলা হয় ।

পার্সেন্ট বা মডুলাস (%): এটি দিয়ে আমরা ভাগশেষ বের করি । যেমন:

১৫ কে ৭ দিয়ে ভাগ করলে ভাগশেষ ১ থাকে, এটা কে না জানে, কিন্তু বলুন তো ১৫৭৯ কে ৩৭ দিয়ে ভাগ দিলে ভাগশেষ কত আসবে? নিজেই করে দেখুন না, অবশ্যই পাইথন ব্যবহার করে ।

বাকি প্রতীক গুলো (<, >, <=, >=): এগুলো দিয়ে আমরা দুটি সংখ্যা বা এক্সপ্রেশনের মানের তুলনা করতে পারি । যেমন:

অর্থাৎ আমরা যখন টাইপ করব 5 > 4, পাইথন আমাদেরকে জানিয়ে দিবে এটা সত্যি (সম্ভব) কিনা । যেমন: 5 > 4 এ আমরা পাব True কেননা ৪ অপেক্ষা ৫ বড় কিন্তু 5 > 10 এ পাব False কারণ ৫ কোনভাবেই ১০ এর চেয়ে বড় না ।

কিন্তু 5 >= 5 কেন True? কারণ ইকুয়াল সাইন থাকলে বোঝায় “সমান অথবা বৃহত্তর” । এখানে ৫ যেহেতু ৫ এর সমান সেহেতু এটি True ।

এভাবে নিজে নিজে কিছু সংখ্যা নিয়ে এই প্রতীকগুলো ব্যবহার করে দেখুন । আশাকরি আরো ভাল ধারণা পাবেন ।

এবার দেখা যাক জটিল এক্সপ্রেশন কিভাবে বিশ্লেষন করা সম্ভব:

এক্ষেত্রে ৩৫ থেকে ১৪ বাদ দিলে থাকছে ২১, অপরদিকে ১০০১ থেকে ৯৯৯ বাদ দিলে থাকছে ২ । ২১ অবশ্যই ২ অপেক্ষা বড়, তাই এক্সপ্রেশনের ভ্যালু হবে True.

এই জিনিসগুলো বার বার নিজে অনুশীলন করে নিন, আশা করি পাইথনে সাধারণ হিসাব নিকাশ খুব সহজেই করে নিতে পারবেন ।