Learn it.Share it.

১০। পাইথনঃ নাম্বার |Python Number

2:12 AM 0 Comments



পাইথনের অন্যতম গুরুত্বপূর্ণ একটি ডেটা টাইপ হল সংখ্যা বা নাম্বার। পাইথনে তিন ধরণের নাম্বার আছে।যথাঃ
  1.Integer বা পূর্ণ সংখ্যা,

  2.Floating Point numbers বা দশমিক ভগ্নাংসপূর্ণ সংখ্যা ও


  3. Complex numbers বা জটিল সংখ্যা।


Integer মানে হল পূর্ণ সংখ্যা।পাইথনে সমস্ত ধনাত্মকপূর্ণ ও ঋণাত্মকপূর্ণ সংখ্যাকেই Integer বলা হয়।
যেমনঃ 1,  5,  50,  666,  0 ,  -29,  - 1000

যেকোন টেক্সট নাম্বারকে ইন্টিজারে রূপান্তর করা যায় int () ফাংশনের মাধ্যমে, int হল integer এর সংক্ষিপ্ত রূপ।অর্থাৎ কোন সংখ্যাকে যদি উদ্ধৃতি চিহ্নের মাধ্যমে প্রকাশ করা হয়, তখন তা প্রোগ্রামে স্ট্রিং ভ্যালু হিসেবে পরিগণিত হয়। আর এই ধরণের স্ট্রিংকে int () ফাংশনের মাধ্যমে ইন্টিজারে রূপান্তর করা যায়।যেমন -

Pic-1

এখানে ( Pic-1) এ  '4' একটি স্ট্রিং ভ্যালু এবং একে সংখ্যায় বা Integer এ রূপান্তর করার জন্য int() ফাংশন ব্যবহার করা হয়েছে। int ('4') লিখে এন্টার চাপলে, পাইথন 4 কে Integer হিসেবে রিটার্ন করবে।

কম্পিউটারের মেমোরিতে ইন্টিজার সংরক্ষণের উপর নির্ভর করে,পাইথন ২ তে ইন্টিজারকে দুই ভাগে ভাগ করা হয়েছে।
 1. Plain Integers - কম্পিউটারের মেমোরিতে সংরক্ষণের জন্য 32 bit জায়গার প্রয়োজন।

 2. Long Integers - আনলিমিটেড মানে ইন্টিজার কত বড় হবে তার কোন লিমিট নেই। অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজে যেমন কম্পিউটারের মেমোরির উপর ভিত্তি করে ইন্টিজার সংরক্ষণের একটি নির্দিষ্ট সীমা থাকে পাইথনে ইন্টিজার এর কোন সীমা নাই। যতক্ষণ পর্যন্ত কম্পিউটারের মেমোরী মানা না করবে, ততক্ষণ পর্যন্তই প্রোগ্রামে ইন্টিজার ঢোকানো যাবে।

আর পাইথন ৩ তে ইন্টিজার মানেই Long Integers কোন Plain Integers নেই।

পাইথনে Floating Point numbers মানে হল দশমিক ভগ্নাংশযুক্ত সংখ্যা।যেমনঃ 1.22,  43.34, - 12.5555
যেকোন ফ্লটিং পয়েন্ট নাম্বারকে ইন্টিজারে কনভার্ট করা যায় int() ফাংশনের মাধ্যমে এবং যেকোন ইন্টিজারকে ফ্লটিং পয়েন্ট নাম্বারে কনভার্ট করা যায় float() ফাংশনের মাধ্যমে।

Pic-2

এখানে (Pic-2) তে 100.1 ও 100.9 যথাক্রমে দুইটি ফ্লটিং পয়েন্ট নাম্বার, যাদেরকে int () ফাংশনের মাধ্যমে পূর্ণ সংখ্যায় রূপান্তর করা হল- 100 ও 100 । শেষে দেখান হল , 100 একটি পূর্ণ সংখ্যা যাকে float () ফাংশনের মাধ্যমে ফ্লটিং পয়েন্ট নাম্বারে রূপান্তর করা হল। লক্ষণীয় ইন্টিজার নাম্বারের ক্ষেত্রে পাইথন সবসময় দশমিকের পর শূন্য বসিয়ে ইন্টিজারকে ফ্লটিং পয়েন্ট নাম্বারে রূপান্তর করে।

পাইথনে ফ্লটিং পয়েন্ট নাম্বারের রেঞ্জ বা সীমা নির্দিষ্ট।এক্ষেত্রে 17 দশমিক স্থান পর্যন্ত মান পাইথন রাখতে পারবে এবং এর পরের মান পাইথন প্রকাশ করবে না। যেমন -
Pic-3

এখানে (Pic-3)তে  5.0 ও 3.0 সংখ্যা দুইটির ডিভিশন বা ভাগফল বের করা হল পাইথন IDLE Editor ব্যবহার করে।

Pic-4


Pic-4 এ একই কাজ ক্যালকুলেটর ব্যবহার করে হল। তারমানে বুঝাই যাচ্ছে যে, পাইথন ফ্লটিং পয়েন্ট নাম্বারের ক্ষেত্রে পাইথন দশমিকের পর শুধু 16 ডিজিটই প্রকাশ করতে পারবে, এরপর আর পারবে না।

পাইথনে কমপ্লেক্স নাম্বার নিয়েও কাজ করা যায়।


A complex number is a number that can be expressed in the form a + bi, where a and b are real numbers and i is the imaginary unit, that satisfies the equation x2 = −1, that is, i2 = −1. In this expression, a is the real part and b is the imaginary part of the complex number.
 Complex Number -Wikipedia    
(কমপ্লেক্স নাম্বারকে সহজভাবে বুঝতে চাইলে, খান একাডেমীর এই ভিডিও টিউটোরিয়ালটি দেখতে পার - Introduction to Complex Numbers)

কমপ্লেক্স নাম্বারের দুইটি অংশ থাকে। যেমন a + bj যদি একটি কমপ্লেক্স নাম্বার হয় , তবে এর  -
    ১। রিয়েল অংশ- a  (Real part) ,
    ২।ইমেজিনারী অংশ- b (imaginary part) ।

পাইথনে এই দুইটি অংশই দশমিক ভগ্নাংশপূর্ণ সংখ্যা নিয়ে গঠিত। পাইথনে কমপ্লেক্স নাম্বারে, ইমেজিনারী নাম্বার হিসেবে 'j' অক্ষরটি ব্যবহার করা হয়, কিন্তু সাধারণত ম্যাথে 'i' অক্ষরটি ব্যবহার করা হয়।তাই প্রোগ্রামে j পরিবর্তনে i ব্যবহার করা হলে সিনট্যাক্স এরর আসবে।কিন্তু দুটোই একই অর্থ বোঝায় অর্থাৎ
  i = the square root of -1 = √- 1
  j = the square root of -1 = √- 1

* যেকোন নাম্বার মানেই তা 'Real Numbe' যেমন- 0, 3,-5, ∏ ।আর সব রিয়েল নাম্বারই আসলে কমপ্লেক্স নাম্বার।কারণ প্রত্যেকটি রিয়েল নাম্বারের আরেকটি অংশ হল ইমেজিনারী নাম্বার। পাইথন ব্যবহার করে খুব সহজেই একটি 'Real Numbe' এর রিয়েল ও ইমেজিনারী অংশ বের করে ফেলা যায়।আবার যেকোন রিয়েল সংখ্যাকে কমপ্লেক্স নাম্বারে কনভার্ট করা যায়।এর জন্য complex() ফাংশন ব্যবহার করা হয়।



এখানে  5 একটি সংখ্যা বা পূর্ণ সংখ্যা বা ইন্টিজার। এটি একটি Real Number আর প্রত্যেকটি রিয়েল নাম্বারই একেকটি কমপ্লেক্স নাম্বার তাই complex (5) লিখে এন্টার চাপার সাথে সাথে পাইথন রিয়েল নাম্বারকে কমপ্লেক্স নাম্বারে রূপান্তর করল যার ইমেজিনারী অংশ হল 0 (শূন্য)।

আবার পাইথনের সাহায্যে যেকোন কমপ্লেক্স নাম্বারের দুইটি অংশকে খুব সহজেই আলাদা করে বের করা যায়।এর জন্য দুইটি মেথড ব্যবহার করা হয়।রিয়েল অংশ বের করার জন্য -  c.real , এখানে c মানে হল কমপ্লেক্স নাম্বার আর ইমেজিনারী অংশ বের করার জন্য - c.imag মেথড ব্যবহার করা হয়।

IDLE Editor ব্যবহার করে প্রোগ্রাম লিখি -
Complex Number in Python
এখানে (4+8j) একটি কমপ্লেক্স নাম্বার যাকে x নামে একটি ভেরিয়েবলের মাধ্যমে প্রকাশ করা হচ্ছে। এখন এর ইমেজিনারী অংশ বের করার জন্য জন্য লিখতে হবে x.imag (এখানে x হল ভেরিয়েবলের নাম, যা কমপ্লেক্স নাম্বারকে উপস্থাপন করছে)। তারপর এন্টার চাপতে হবে।


এন্টার চাপার সাথে সাথে পাইথন এই কমপ্লেক্স নাম্বারের ইমেজিনারী অংশ 8.0 কে রিটার্ন করল। 
 একই ভাবে রিয়েল অংশও বের করা যায়-

এর রিয়েল অংশ হল 4.0 যা কিনা একটি দশমিক ভগ্নাংশপূর্ণ সংখ্যা।

 নাম্বারকে বিভিন্ন অ্যারিথমেটিক অপারেটরের মাধ্যমে প্রকাশ করা যায়।যেমনঃ
 যোগ করার জন্য -


বিয়োগ করার জন্য -



গুণ করার জন্য -
 


ভাগ করার জন্য -


 স্লেশ চিহ্নকে পাইথনে ডিভিশন অপারেটর হিসেবে ব্যবহার করা হয়।
এখানে লক্ষণীয় সিঙ্গেল স্লেশ(/) ব্যবহার করে পাইথনে ডিভিশন ফলাফল সবসময় ফ্লটিং পয়েন্ট হয়।
রাউন্ড ফলাফল পেতে হলে ডাবল স্লেশ(//) ব্যবহার করতে হবে।

ভাগশেষ করার জন্য -


ভাগশেষ নির্ণয়ের জন্য Percentage sign (%) ব্যবহার করা হয় যা কিনা Modulo অপারেটর হিসেবে পরিচিত।

 Built-in math function:

পাইথনে অনেকগুলো ম্যাথ ফাংশন আছে, যেগুলো আসলে বিল্ট ইন টাইপ।ইতোমধ্যে তিনটির ব্যবহার  দেখেছি - int(), float(), complex() ফাংশন।
আরও কিছু ফাংশনের ব্যবহার দেখি-
abs(x):

এই ফাংশনের মাধ্যমে যেকোন নাম্বারের পরম মান () বের করা যায়। ফাংশন প্যারামিটারের জায়গায় যেকোন সংখ্যা লিখলে,পাইথন তার ভ্যালু রিটার্ন করবে।



pow(x,y[,z])

 'x to the power of y/ xy  ' এর মান বের করার জন্য এই ফাংশনটি ব্যবহার করা হয়।


 

 'z = module value' অপশনাল। প্রয়োজন অনুযায়ী ব্যবহার করা যায়।

round(number[digit]):

যেকোন দশমিক সংখ্যার রাউন্ড ফিগার বের করার জন্য এই ফাংশন ব্যবহার করা হয়।


অপশনাল প্যারামিটার 'digit'। এর মানে কত সংখ্যা পর্যন্ত রাউন্ড ফিগার প্রয়োজন, তা উল্লেখ করতে হবে।
bin():

ইন্টিজারকে বাইনারী স্ট্রিং ভ্যালুতে প্রকাশের জন্য এই ফাংশন ব্যবহার করা হয়।



খেয়াল কর, প্রত্যেকটি বাইনারী সংখ্যার আগে '0b'।এখানে '0b' ব্যবহার করা হচ্ছে শুধুমাত্র বোঝানোর জন্য যে, এটি একটি বাইনারী সংখ্যা।

oct()

ইন্টিজারকে অক্টেল স্ট্রিং ভ্যালুতে প্রকাশের জন্য এই ফাংশন ব্যবহার করা হয়।



প্রত্যেকটি অক্টেল সংখ্যার আগে '0' দেওয়া আছে।এখানে '0' দিয়ে বোঝানো হচ্ছে যে, এটি একটি অক্টেল সংখ্যা।

hex():

ইন্টিজারকে হেক্সাডেসিমাল স্ট্রিং ভ্যালুতে প্রকাশের জন্য এই ফাংশন ব্যবহার করা হয়।


প্রত্যেকটি হেক্সাডেসিমাল সংখ্যার আগে '0x' দেওয়া আছে।এখানে '0x' দিয়ে বোঝানো হচ্ছে যে, এটি একটি হেক্সাডেসিমাল সংখ্যা।