সং

সংখ্যা মধ্যে Python

78টি অনুশীলনী

সংখ্যা সম্পর্কে

Python-এ বিল্ট-ইন সংখ্যার তিনটি ভিন্ন টাইপ আছে: ইন্টিজার (int), ফ্লোটিং-পয়েন্ট (float) এবং কমপ্লেক্স (complex)। ফ্র্যাকশন (fractions.Fraction) এবং ডেসিমাল (decimal.Decimal)-ও স্ট্যান্ডার্ড লাইব্রেরি থেকে ইমপোর্ট করে ব্যবহার করা যায়।

দশমিক স্থান ছাড়া পূর্ণসংখ্যাগুলোকেও ints হিসেবে চিহ্নিত করা হয়, যার মধ্যে হেক্সাডেসিমাল (hex()), অক্টাল (oct()) এবং বাইনারি (bin()) সংখ্যা পড়ে:

# Ints are whole numbers.
>>> 1234
1234
>>> type(1234)
<class 'int'>

>>> -12
-12

দশমিক বিন্দু আছে এমন সংখ্যা (ভগ্নাংশের অংশ থাকুক বা না থাকুক) floats হিসেবে চিহ্নিত করা হয়:

>>> 3.45
3.45
>>> type(3.45)
<class 'float'>

পাটিগণিত

Python এই ভিন্ন ভিন্ন সংখ্যা টাইপের মধ্যে পাটিগণিত সম্পূর্ণভাবে সমর্থন করে এবং বাইনারি গাণিতিক অপারেটর (+, -, *, /, // ও %) ব্যবহার করলে ছোট পরিসরের সংখ্যাগুলোকে তার চেয়ে বড় পরিসরের সংখ্যার সাথে মিলিয়ে রূপান্তর করে।

কমপ্লেক্স ছাড়া বাকি সব সংখ্যাই সব পাটিগণিত অপারেশন সমর্থন করে, যেগুলো অপারেটর প্রেসিডেন্স অনুযায়ী হিসাব করা হয়। কমপ্লেক্স সংখ্যার জন্য (+ ও - ছাড়া অন্য) গাণিতিক ফাংশনের সহায়তা cmath মডিউলে পাওয়া যাবে।

যোগ ও বিয়োগ

যোগ ও বিয়োগ অপারেটর সাধারণ গণিতের মতোই কাজ করে। যদি অপারেন্ডের একটি বা একাধিক float হয়, তবে বাকি int-গুলোও float-এ রূপান্তরিত হবে:

>>> 5 - 3
2
# The int is widened to a float here, and a float is returned.
>>> 3 + 4.0
7.0

গুণ

যোগ ও বিয়োগের মতোই, গুণও ছোট পরিসরের সংখ্যাগুলোকে বড় পরিসরের সংখ্যার সাথে মিলিয়ে রূপান্তর করে:

>>> 3 * 2
6

>>> 3 * 2.0
6.0

ভাগ

ভাগ সর্বদা একটি float রিটার্ন করে, ফলাফল পূর্ণসংখ্যা হলেও:

>>> 6/5
1.2

>>> 6/2
3.0

ফ্লোর ডিভিশন

যদি int ফলাফল দরকার হয়, তবে ফলাফলটি ছেঁটে ফেলতে ফ্লোর ডিভিশন ব্যবহার করতে পারেন। ফ্লোর ডিভিশন করা হয় // অপারেটর দিয়ে:

>>> 6//5
1

>>> 6//2
3

মডুলো

মডুলো অপারেটর (%) দুটি অপারেন্ডের ভাগের ভাগশেষ রিটার্ন করে:

# The result of % is zero here, because dividing 8 by 2 leaves no remainder
>>> 8 % 2
0

# The result of % is 2 here, because 3 only goes into 5 once, with 2 left over
>>> 5 % 3
2

5 % 3 দেখার আরেকটি উপায়:

>>> whole_part = int(5/3)
1

>>> decimal_part = 5/3 - whole_part
0.6666666666666667

>>> whole_remainder = decimal_part * 3
2.0

সূচকীকরণ

** অপারেটর দিয়ে সূচকীকরণ করা হয়:

>>> 2 ** 3
8

>>> 4 ** 0.5
2

রূপান্তর

বিল্ট-ইন ফাংশন int() ও float() ব্যবহার করে সংখ্যাকে int থেকে float-এ এবং float থেকে int-এ রূপান্তর করা যায়:

>>> int(3.45)
3

>>> float(3)
3.0

রাউন্ড

Python একটি বিল্ট-ইন ফাংশন round(<number>, <decimal_places>) দেয়, যা একটি ফ্লোটিং পয়েন্ট সংখ্যাকে নির্দিষ্ট সংখ্যক দশমিক স্থানে রাউন্ড অফ করে। দশমিক স্থানের সংখ্যা উল্লেখ না করা হলে সংখ্যাটি নিকটতম ইন্টিজারে রাউন্ড অফ হয় এবং একটি int রিটার্ন করে:

>>> round(3.1415926535, 2)
3.14

>>> round(3.1415926535)
3

প্রাধান্য ও বন্ধনী

Python-এ বন্ধনী দিয়ে এক্সপ্রেশন গুছিয়ে লেখা যায়। ক্রিয়ার ডিফল্ট ক্রম বদলাতে চাইলে এটি কাজে লাগে।

>>> 2 + 3 * 4
14

>>> (2 + 3) * 4
20

Python অপারেটর প্রেসিডেন্সের জন্য PEMDAS নিয়ম অনুসরণ করে। এর অর্থ হলো ()-এর ভেতরের হিসাবের প্রাধান্য সবচেয়ে বেশি, তারপর **, তারপর *, /, //, %, + ও -:

>>> 2 + 3 - 4 * 4
-11

>>> (2 + 3 - 4) * 4
4

# In the following example, the `**` operator has the highest priority, then `*`, then `+`
# Meaning we first do 4 ** 4, then 3 * 256, then 2 + 768
>>> 2 + 3 * 4 ** 4
770

নির্ভুলতা ও উপস্থাপনা

Python-এর ইন্টিজারের আরবিট্রারি প্রেসিশন থাকে। অঙ্কের সংখ্যা সীমিত হয় কেবল হোস্ট সিস্টেমের উপলব্ধ মেমোরি দিয়ে।

ফ্লোটিং পয়েন্ট সংখ্যা সাধারণত C-তে একটি double দিয়ে বাস্তবায়ন করা হয় (১৫ দশমিক স্থানের নির্ভুলতা), তবে হোস্ট সিস্টেম অনুযায়ী এদের উপস্থাপনা ভিন্ন হয়। কমপ্লেক্স সংখ্যার একটি real ও একটি imaginary অংশ থাকে, যার দুটিই ফ্লোটিং পয়েন্ট সংখ্যা দিয়ে উপস্থাপন করা হয়।

প্রোগ্রামিং ভাষাগুলোতে ফ্লোটিং পয়েন্ট পাটিগণিতের সমস্যা ও সীমাবদ্ধতা নিয়ে আরও বিস্তারিত আলোচনার জন্য 0.30000000000000004.com এবং The Python Tutorial দেখুন।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি নতুন একটি উইন্ডো বা ট্যাবে খুলবে

সংখ্যা শিখুন

অনুশীলন লক করা আছে

সংখ্যা অনুশীলন করতে আরও 3টি অনুশীলনী আনলক করুন