পাইথনে ইংলিশ ডিকশনারি বানানো

এই টিউটোরিয়াল দেখার আগে আমি আশা করছি আপনারা পাইথনের একদমই বেসিক জিনিসগুলো জানেন।

ভূমিকাঃ

আজকে আমরা দেখব পাইথন দিয়ে কীভাবে একটি Interactive English Dictionary বানানো যায়। ডিকশনারি বানাতে হলে আমাদের প্রয়োজন ইংলিশ ভোকাবুলারির একটি ডাটা ফাইল, যেটি json ফরম্যাটে পাওয়া যাবে এই লিঙ্ক থেকে। ডাউনলোড করুন 

ডাউনলোড হয়ে গেলে json ফাইলটি একটি ফোল্ডারে রাখুন, ফোল্ডারের নাম দিন dictionary (বা আপনার পছন্দমত যেকোন নাম)। এরপর সেই ফোল্ডারে আর একটি ফাইল তৈরী করুন পাইথনের এক্সটেনশনে, নাম দিন dictionary.py (বা আপনার পছন্দমত যেকোন নাম)। এরপর সেই ফোল্ডারটি যেকোন একটি লাইট কোড এডিটরে ওপেন করুন। বিভিন্ন ফ্রি কোড এডিটর আপনি ব্যবহার করতে পারেন VS Code, Sublime, Atom, Brackets, Notepad++ etc. আমি সাধারণ VS Code ব্যবহার করি।

দুটো ফাইল একটি ফোল্ডারে রাখা হয়েছে।

ডিকশনারি তৈরিঃ

ওকে, আমাদের মোটামুটি প্রস্তুতি বা ভূমিকা পর্ব শেষ। এবার আসুন ডিকশনারি তৈরি শুরু করা যাক। কোড এডিটরে dictionary.py ফাইলটি ওপেন করুন। প্রথমে আমরা কী কী করব সেটার একটা স্ট্রাকচার দাঁড় করানো যাক।

আমাদের প্রয়োজন json ফাইলটিকে পাইথনে কল করা যাতে json ফাইলে যে ডাটা আছে সেটা ইউজার আউটপুট দিতে পারে। সেজন্যে পাইথনে একটি মডিউল ব্যবহার করা হয় যেটাকে বলে import মডিউল। এরপর json ফাইল লোড করা এবং ওপেন করা এই বিষয়টিকে আমরা একটা ভ্যারিয়েবলে রাখব। এরপর ইউজার আমাদের কাছে যে শব্দ জানার জন্য ইনপুট দিবে সেটাকে আমরা একটা ভ্যারিয়েবলে রাখব। আপাতত এই তিনটি বিষয়ের কোড লিখে ফেলা যাক।

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

Great Work! এখন আপনি যদি এই ফাইলটিকে পাইথনে রান করান এবং বিভিন্ন শব্দ প্রবেশ করান তাহলে এর অর্থ চলে আসবে। যেমনঃ

এইতো মোটামুটি একটা ডিকশনারি বানানো হয়ে গেলো। যদিও এই ডিকশনারি থেকে অর্থ বের করতে হলে আপনাকে পাইথন কনসোলে কমান্ড লাইন ব্যবহার করতে হয়। আমরা গ্রাফিক্স ইন্টারফেস বানানো বা ওয়েব এপস বানানো পরের পর্বে শিখব। আপাতত এইখানে আরও কিছু কাজ করা যাক। যেমন, ইউজার যদি কোন শব্দ দিয়ে তার অর্থ খুঁজে না পায় তখন ইউজারকে কী বলা যায়? বলা যায় যে, “Word is not exist! please try again.” এই কথাটা আমরা কীভাবে দিব? এছাড়াও আরও একটা ইস্যু আছে সেটা হলো কেউ যদি ছোট অক্ষর বড় অক্ষর মিলিয়ে লিখে তাহলে কি পাইথন সঠিক আউটপুট দিবে? দিবে না, কারণ পাইথন কেস সেন্সিটিভ। sky লিখলে সেটার অর্থ পাইথন জানাবে, কেউ যদি SkY বা sKy এভাবে লিখে? এই সমস্যা থেকে বাঁচার জন্য আমরা .lower মেথড ব্যবহার করব। .lower মেথড যেটা করবে সেটা হলো আপনার ছোট বড় সকল অক্ষরকেই পাইথনে ছোট অক্ষরে হিসেবে নিবে। চলুন তাহলে এই কোডটুকু লেখা হোক

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

আপাতত আজকে এটুকুই। আরও বিস্তারিত নিয়ে অন্যদিক আলোচনা হবে।  সোর্স কোড পাওয়া যাবে গিটহাবে।