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.

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

Categories
Bangla Python Series

বাংলায় পাইথন – সিঙ্গল কোট, ডাবল কোট ও এস্কেপ ক্যারেক্টার

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

একটি ফাইলে এই কোড টাইপ করে রান করে দেখুন কি আউটপুট দেখায় ।