![]() |
| পাইথন নিউমেরিক ডেটা টাইপ - ০২ |
গতপর্বে আমরা শিখেছি কিভাবে ভ্যারিয়েবল
ছাড়াই নিউমেরিক ডেটা টাইপগুলো প্রিন্ট করা যায়।
এ পর্বে আমরা ভ্যারিয়েবলে ভ্যালু রেখে কিভাবে প্রিন্ট করাতে
পারি এবং কত উপায়ে প্রিন্ট করাতে পারি সবই শিখবো। আমরা যারা আগে থেকেই প্রোগ্রামিংয়ের
সাথে টুকটাক পরিচিত তাদের ভ্যারিয়েবল সম্পর্কে ধারণা আছে। কিন্তু যারা একেবারেই নতুন
তাদের প্রোগামিং ল্যাংগুয়েজে ভ্যারিয়েবল সম্পর্কে ধারণা না থাকাটাই স্বাভাবিক। তাহলে
চলুন ভ্যারিয়েবল সম্পর্কে জেনে নেই।
ইংরেজি 'Variable' শব্দটাকে ভাঙ্গলে
আমরা পাবো 'Vary' এবং 'able'। 'Vary' অর্থ হলো পরিবর্তিত হওয়া এবং 'able' অর্থ সক্ষম।
অর্থাৎ ভ্যারিয়েবল মানে পরিবর্তিত হতে সক্ষম। প্রশ্ন হলো, কি পরিবর্তিত করতে সক্ষম?
এটা আসলে ভ্যালু পরিবর্তিত করতে
সক্ষম। অর্থাৎ ভ্যারিয়েবলের মধ্যে আমরা যে ভ্যালু রাখবো এটা বারবার আমাদের প্রয়োজনমতো পরিবর্তিত করতে পারবো। অন্যান্য
প্রোগ্রামিং ল্যাংগুয়েজ যেমনঃ সি, সি++, জাভা ইত্যাদিতে ভ্যারিয়েবল ডিক্লেয়ার করা যায়
এবং তার পূর্বে অবশ্যই ভ্যারিয়েবলের ডেটা টাইপ বলে দিতে হয়। ধরুন, মাস্কের দাম রাখার
জন্য একটা ভ্যারিয়েবল তৈরি করবো। যদি সি প্রোগামিংয়ে এই ভ্যারিয়েবলের ডিক্লেয়ার করতে
চাই সেজন্য লিখতে হবেঃ
int
mask_er_dam;
এখানে int মানে এটা ইন্টিজার ডেটা
টাইপের ভ্যারিয়েবল ডিক্লেয়ার করলাম। আবার আমরা চাইলে মাস্কের দামও বলে দিতে পারি। ধরি,
মাস্কের দাম ৫ টাকা। তারজন্য লিখতে হবেঃ
int mask_er_dam = 5;
অর্থাৎ মাস্কের দাম ৫ টাকা - এটাকে
ভ্যারিয়েবলের মাধ্যমে এভাবে আমরা বলে দিতে পারি। আমরা যদি mask_er_dam ভ্যারিয়েবলটাকে
প্রিন্ট করি তাহলে আউটপুট হবে 5 কারণ আমরা তারমধ্যে ভ্যালু দিয়েছি 5। এটাকে আমরা প্রোগ্রামিংয়ের
ভাষায় এসাইন (Assign) করা বলি। অর্থাৎ
আমরা বলি, mask_er_dam ভ্যারিয়েবলে ভ্যালু 5 এসাইন করে দিয়েছি। এখন ধরি, মাস্কের দাম
বেড়ে গিয়ে ৫০ টাকা হয়েছে। তাহলে আমরা মাস্কের দাম 50 এসাইন করবো। সেজন্য লিখতে হবেঃ
int mask_er_dam = 50;
এখন যদি mask_er_dam ভ্যারিয়েবলটাকে
প্রিন্ট করি তাহলে আউটপুট পাবো 50। তাহলে আমরা দেখতে পাচ্ছি যে, একই নামের ভ্যারিয়েবলে বিভিন্ন ভ্যালু দিয়ে
এর ভ্যালু পরিবর্তন করতে পারছি। যেহেতু এটা বিভিন্ন সময় বিভিন্ন ভ্যালু পরিবর্তিত করতে
পারছে এজন্যই একে ভ্যারিয়েবল বলে। এবং অবশ্যই মনে রাখতে হবে পাইথনে ভ্যারিয়বল ডিক্লেয়ার
করার সময় সি/সি++ এর মতো ডেটাটাইপ লিখা যাবেনা। আমরা খুব সহজে
পাইথনে যেকোনো নামে ভ্যারিয়েবল ডিক্লেয়ার করতে পারবো। সেজন্য কোডপত্র আইডিই তে গিয়ে লিখুনঃ
mask_er_dam = 5
এবার এই ভ্যারিয়েবলকে প্রিন্ট করতে
হলে আমরা প্রিন্ট ফাংশন ব্যবহার করবো এবং ব্রাকেটের ভিতরে ভ্যারিয়েবলের নাম লিখে দিবো।
তাহলে লিখে ফেলুনঃ
print (mask_er_dam)
আউটপুট আসবে 5। গতপর্বে আমরা প্রিন্ট
ফাংশনের ভিতরে ডিরেক্ট ভ্যালু দিয়ে প্রিন্ট করিয়েছি। এবার আমরা সেই ভ্যালুকে একটা ভ্যারিয়েবলে
রেখে শুধু ভ্যারিয়েবলটাকে প্রিন্ট ফাংশনের ভিতরে লিখলেই তা প্রিন্ট করে দেখাবে। ব্যাপারটা
কিছুটা এরকম হয়ে গেলো যে আমরা সরাসরি হাত দিয়ে না খেয়ে মাথার পিছন দিক দিয়ে হাত ঘুরিয়ে
এনে খাবার খেলাম। ভ্যারিয়েবলকে মিনিংলেস ভাবা যাবেনা কারণ আমরা অনেক কাজই
করবো এই ভ্যারিয়েবল ব্যবহার করেই। তো, এই ভ্যারিয়েবলের নাম আমরা আমাদের ইচ্ছামতো দিতে
পারি তবে কিছু শর্ত মেনে ভ্যারিয়েবল বানাতে হবে। সেগুলো আপনারা এখান থেকে Rules for naming
variable পড়ে সেগুলো নিজে নিজে প্রোগামে প্র্যাক্টিস করে নিবেন। Rules গুলো বুঝতে অসুবিধা
হলে অবশ্যই কমেন্টে জানাবেন।
তো এবার মুল আলোচনায় চলে যায়। ধরা
যাক, ঈদের সালামিতে আপনাকে আপনার মা দিয়েছে
500 টাকা এবং বাবা দিয়েছে 1000 টাকা। আপনি সেগুলো যোগ করার জন্য একটা পাইথন প্রোগ্রাম
লিখতে চান। তাহলে আগে ভ্যারিয়েবল ডিক্লেয়ার করা লিখে ফেলুনঃ
ma_diyeche = 500
baba_diyeche = 1000
ব্যাস, ভেরিয়েবল ডিক্লেয়ার করা শেষ
এবং তার মধ্যে আমরা ভ্যালুর এসাইনও করে দিয়েছি। পাইথন এই ভ্যারিয়েবলগুলাকে ইন্টিজার টাইপ ধরে নিবে কারণ এর
মধ্যে আমরা ইন্টিজার ভ্যালু রেখেছি। এটা অবশ্যই মনে রাখবেন, একটু পরেই কাজে দিবে। যদি সন্দেহ হয় তাহলে তো ডিএনএ টেস্ট
তো আছেই যা গতপর্বে দেখিয়েছি। আপনি চাইলে চেক করে নিতে পারেন। তো এখন দরকার আমাদের
এই ভ্যালুগুলো যোগ করা। তার জন্য আরেকটা ভ্যারিয়েবল নিবো যার মধ্যে আমরা যোগফলটা রাখবো।
ধরা যাক, সেই ভ্যারিয়েবলের নাম দিবো total_tk_ache। সেজন্য লিখতে হবেঃ
total_tk_ache = ma_diyeche +
baba_diyeche
এখানে আমরা total_ache নামে একটা
ভেরিয়েবল তৈরি করলাম এবং তার মধ্যে যোগফল রেখে দিলাম। এখন আমরা চাইলে শুধু যোগফল প্রিন্ট করতে পারি। চাইলে
মা কত টাকা দিয়েছে, বাবা কত টাকা দিয়েছে তাও প্রিন্ট করতে পারি। আমরা এক এক করে প্রিন্ট করে দেখবো।
প্রিন্টিং পদ্ধতিঃ
এখানে আমরা total_tk_ache এই ভ্যারিয়েবলটাকে
প্রিন্ট করবো টেক্সট ছাড়া এবং টেক্সট সহ। প্রথমে দেখি টেক্সট ছাড়া কিভাবে প্রিন্ট করা
যায়। সেজন্য লিখতে হবেঃ
print (total_tk_ache)
এবার Run বাটনে ক্লিক করুন। শেলে
আউটপুট দেখাবে 1500। তাহলে আমরা যোগ করে ফেললাম। কিন্তু আউটপুট কেমন যেনো খালি খালি লাগছে। তাই না? সেজন্য
আমরা এখন টেক্সট সহ প্রিন্ট করবো। আমরা যদি চাই আমাদের আউটপুট এরকম আসুক,
'Ma diyeche : 500 Tk. Baba
diyeche : 100 Tk. and amar kache total ache : 1500 Tk.'
সেটাও করতে পারবো। এবং এগুলো আমরা
৪ (চার) উপায়ে প্রিন্ট করতে পারবো। আমি এক এক করে সবগুলো আলোচনা করছি।
1st way:
শুরুতেই আমরা সিনট্যাক্সটা দেখে
নেই।
Syntax: print ("Text_Text", var_name)
এটা হচ্ছে সিংগেল ভ্যারিয়েবল প্রিন্ট
করার উপায়। একাধিক ভ্যারিয়েবল প্রিন্ট করার সিনট্যাক্সটা এরকমঃ
Syntax: print ("Text_Text",var_name_1,
"Text_text", var_name_2)
এখানে Text_Text মানে আমাদের ইচ্ছে
মতো যেকোনো টেক্সট ব্যবহার করতে পারবো এবং অবশ্যই তা ডাবল কোটেশনের মধ্যে হতে হবে।
ডাবল কোটেশনের পরে comma (,) দিয়ে আমরা ভ্যারিয়েবলের নাম লিখে দিলেই প্রিন্ট করে দিবে।
যেমনঃ
print ("Ma diyeche
:", ma_diyeche, "Tk. Baba diyeche :", baba_diyeche, "Tk.
and amar kache ache total :", total_tk_ache, "Tk.")
এখানে খেয়াল করুন, আমরা অনেকবার
ডাবল কোটেশন দিয়ে বারবার comma (,) ব্যবহার করে প্রিন্ট করতে হচ্ছে। কোথাও যদি comma বাদ পড়ে তাহলে error আসবে
এবং অনেকেই আমরা এই পদ্ধতিতে বেশি ভুল করে থাকি। সেজন্য আমরা আরেকটু সহজ উপায় দেখবো।
2nd way:
শুরুতেই আমরা সিনট্যাক্সটা দেখে
নেই।
Syntax: print ("Text_Text : {}",
.format(var_name))
format() ফাংশন ব্যবহার করেও কিন্তু
প্রিন্ট করা যায় তবে তার আগে অবশ্যই একটা ডট (.) দিতে হবে। এখানে আমরা { } ব্যবহার করেছি। এটাকে বলা হয় প্লেস হোল্ডার।
অর্থাৎ এটার মাধ্যমে আমরা বলে দিয়েছি যে আমরা আমাদের ভ্যালু এই জায়গায় প্রিন্ট করাতে
চাই এবং যে ভ্যারিয়েবলের ভ্যালু দেখাতে চাই সেই ভ্যারিয়েবলকে .format() ফাংশনের ভিতর
লিখে দিতে হবে। আউটপুট দেখানোর জন্য আমাদের লিখতে হবেঃ
print ("Ma diyeche : {}
Tk. Baba diyeche : {} Tk. and amar kache toal ache : {}
Tk.".format(ma_diyeche, baba_diyeche, total_tk_ache))
Output: Ma diyeche : 500 Tk.
Baba diyeche : 1000 Tk. and amar kache toal ache : 1500 Tk.
এটা প্রথম পদ্ধতির চেয়ে তুলনামূলক
একটু সহজ।
এই পদ্ধতিতে একটু টুইস্ট আছে। আমরা
চাইলে প্লেস হোল্ডারের ভিতর সংখ্যা লিখে কোন ভ্যারিয়েবলটা কোন প্লেস হোল্ডারে প্রিন্ট
করতে চাই সেটা বলে দিতে পারবো। এক্সাম্পল দেখতে ক্লিয়ারলি বুঝতে পারবো। একটু লিখে ফেলিঃ
print ("Ma diyeche : {0}
Tk. Baba diyeche : {1} Tk. and amar kache toal ache : {2}
Tk.".format(ma_diyeche, baba_diyeche, total_tk_ache))
আউটপুট কিন্তু একই আসবে। এখন কথা
হচ্ছে এখানে { } এর ভিতরে 0, 1, 2 দিয়ে কি বুঝায়? 0 দিয়ে বুঝায় এখানে ,format() ফাংশনের
ভিতরে প্রথম ভ্যারিয়েবল প্রিন্ট হবে, 1 দিয়ে বুঝায় এখানে দ্বিতীয় ভ্যারিয়েবল প্রিন্ট
হবে এবং 2 দিয়ে বুঝায় এখানে তৃতীয় ভ্যারিয়েবল প্রিন্ট হবে। আমরা চাইলে 1, 2, 3 লিখতে পারবোনা কারণ format() ফাংশনের ভিতরে
ভ্যারিয়েবলগুলোর নাম্বারিং শুরু হয় 0 দিয়ে। 1, 2, 3 দিয়ে লিখলে error আসবে। তবে আমরা
চাইলে 0, 1, 2 উল্টোপাল্টা করে বসাতে পারি।
print ("Ma diyeche : {1}
Tk. Baba diyeche : {0} Tk. and amar kache toal ache : {2}
Tk.".format(ma_diyeche, baba_diyeche, total_tk_ache))
এখন আউটপুটে কি ম্যাজিক হয় নিজেই
রান করে দেখে নিন। আরেকটু টুইস্ট বাকি আছে সেটা আমরা স্ট্রিং ডেটা টাইপে আলোচনা করবো ইনশা আল্লহ।
3rd way:
শুরুতেই আমরা সিনট্যাক্সটা দেখে
নেই।
Syntax: print ("Text_Text : %d" %var_name)
এটা সি প্রোগ্রামিংয়ের মতোই। স্পেসিফায়ার
ইউজ করেও আমরা প্রিন্ট করতে পারি। ইন্টিজারের জন্য আমরা %d অথবা %i অথবা %u ব্যবহার
করতে পারি। আমি কিন্তু আগেই বলে রেখেছি আমরা যে ভ্যারিয়েবল ডিক্লেয়ার করেছি সেগুলো
কিন্তু ইন্টিজার। তাই আমরা এখানে %d অথবা %i অথবা %u ব্যবহার করবো। তবে এটা সিংগেল
ভ্যারিয়েবল প্রিন্ট করার জন্য। যদি অনেকগুলো ভ্যারিয়েবল প্রিন্ট করতে চাই তাহলে কি করবো? তখন সিনট্যাক্সটা এরকম
হবেঃ
Syntax: print ("Text_1 : %d. Text_2 : %d"
%(var_name_1, var_name_2))
অর্থাৎ ডাবল কোটেশনের বাইরে আমাদের % এর পরে ব্রাকেট
দিয়ে ভ্যারিয়েবলগুলোর নাম comma দিয়ে আলাদা করে লিখতে হবে। আউটপুট দেখানোর জন্য আমাদের লিখতে হবেঃ
print ("Ma diyeche : %d
Tk. Baba diyeche : %d Tk. and amar kache toal ache : %d Tk." %(ma_diyeche,
baba_diyeche, total_tk_ache))
Output: Ma diyeche : 500 Tk.
Baba diyeche : 1000 Tk. and amar kache toal ache : 1500 Tk.
এটা দ্বিতীয় পদ্ধতির মতোই। শুধু
প্লেস হোল্ডারের জায়গায় আমরা স্পেসিফায়ার ব্যবহার করেছি।
Way 4:
শুরুতেই আমরা সিনট্যাক্সটা দেখে
নেই।
Syntax: print (f"Text_Text : {var_name}")
এটা পাইথন 3.6+ ভার্সনে এসেছে। এটা
সবচেয়ে সিম্পল, ঝামেলামুক্ত এবং আমার সবচেয়ে পছন্দের। আমি বেশিরভাগ সময় এভাবেই প্রিন্ট
করি। এখানে খেয়াল করলে দেখবেন যে শুরুর ডাবল কোটেশনের আগে একটা f লিখতে হবে এবং {
} অর্থাৎ প্লেস হোল্ডারের ভিতরে যে ভ্যারিয়েবলের ভ্যালু প্রিন্ট করতে চাই তা লিখে দিতে
হবে। ব্যাস, হয়ে গেলো প্রিন্ট। কত সহজ তাই না? একে বলা হয় f-string অথবা আরেকটু কঠিন
নামে "formatted string literals" বলা হয়। চলুন, তাহলে প্র্যাকটিস করে ফেলিঃ
print (f"Ma diyeche :
{ma_diyeche} Tk. Baba diyeche : {baba_diyeche} Tk. and amar kache toal ache :
{total_tk_ache} Tk.")
Output: Ma diyeche : 500 Tk.
Baba diyeche : 1000 Tk. and amar kache toal ache : 1500 Tk.
আজ এতটুকুই। ধৈর্য্য ধরে পড়ার জন্য
ধন্যবাদ। পরবর্তী পর্বে আমরা অন্য ডেটা টাইপ নিয়ে আলোচনা করবো ইনশা আল্লাহ।

carry on
উত্তরমুছুন