কম্পিউটার টিউটোরিয়াল

পাইথনে Fraction মডিউল (ভগ্নাংশ হ্যান্ডলিং)

পাইথনের Fraction মডিউল রেশনাল নাম্বার এরিথমেটিক সাপোর্ট করে। এই মডিউল ব্যবহার করে আমরা ইন্টিজার, ফ্লোট, ডেসিমেল এবং কিছু অন্যান্য সংখ্যামূলক ভ্যালু ও স্ট্রিং থেকে ভগ্নাংশ তৈরি করতে পারি।

Fraction Instance-এ একটি কনসেপ্ট রয়েছে। এটি একটি ইন্টিজার জোড়া হিসেবে গঠিত হয় numerator (লব) এবং denominator (হর) হিসেবে।

fractions.Fraction ক্লাসটি একটি Fraction অবজেক্ট তৈরি করতে ব্যবহৃত হয়। এটি Numerator এবং Denominator নেয়। numerator-এর ডিফল্ট ভ্যালু 0 এবং denominator-এর 1। denominator 0 হলে ZeroDivisionError উত্থাপন করে।

প্রথমে দেখব ক্লাসটি কীভাবে Numerator এবং Denominator ব্যবহার করে ভগ্নাংশ তৈরি করে।

উদাহরণ কোড

from fractions import Fraction as frac
print(frac(45, 54))
print(frac(12, 47))
print(frac(0, 15))

আউটপুট

5/6
12/47
0

আমরা Fraction অবজেক্টের আর্গুমেন্ট হিসেবে কিছু ফ্লোটিং পয়েন্ট নম্বর দিতে পারি। যদি আমরা সঠিক ফ্লোটিং পয়েন্ট ভ্যালু দিয়ে থাকি, এটি ইন্টিজার টাইপের numerator এবং denominator ভ্যালুতে রূপান্তর করার চেষ্টা করবে। এই কেসে, এটি পরিমানিক ভ্যালুর কাছাকাছি পৌঁছানোর চেষ্টা করে। যদি ফ্লোটিং পয়েন্ট নম্বরটি স্ট্রিং হিসেবে প্রদান করা হয়, তবে এটি সঠিক ভ্যালু Fraction হিসেবে খুঁজে বের করার চেষ্টা করবে। নিচের উদাহরণগুলো থেকে পার্থক্য দেখতে পারবেন।

উদাহরণ কোড

from fractions import Fraction as frac
print(frac(33.33))
print(frac('33.33'))

আউটপুট

2345390243441541/70368744177664
3333/100

স্ট্রিং টাইপ আর্গুমেন্টের Fraction অবজেক্টের ওপর কিছু আরো উদাহরণ দেখুন। এটি সংখ্যার সাইন (+ বা -) সাপোর্ট করে।

উদাহরণ কোড

from fractions import Fraction as frac
print(frac('5/6'))
print(frac('-25.12'))
print(frac('96.251 \t\n'))
print(frac('3.14159265359'))

আউটপুট

5/6
-628/25
96251/1000
314159265359/100000000000

দেখা যাচ্ছে, কখনও কখনও Fraction অবজেক্টে denominator খুব বড় হয়। তাই আমরা denominator-এর দৈর্ঘ্য লিমিট করতে পারি। ডিফল্ট দৈর্ঘ্য ১০০০০০০। এটি ফ্লোটিং পয়েন্ট ডেটার জন্য রেশনাল অ্যপ্রক্সিমেশন করতে সাহায্য করে। Denominator লিমিট করার জন্য limit_denominator() ফাংশন রয়েছে।

কখনও কখনও আমরা পুরো ভগ্নাংশ অবজেক্ট ছাড়া শুধু numerator বা denominator চাই। তাই এই মেথডে numerator এবং denominator কীওয়ার্ড রয়েছে সেগুলো পেতে।

উদাহরণ কোড

from fractions import Fraction as frac
print(frac('3.14159265359'))
print(frac('3.14159265359').limit_denominator(1000))
print(frac('3.14159265359').limit_denominator(100))
print(frac('3.14159265359').limit_denominator(10))
print(frac('36.25'))
print(frac('36.25').numerator)
print(frac('36.25').denominator)

আউটপুট

314159265359/100000000000
355/113
311/99
22/7
145/4
145
4

ভগ্নাংশ গাণিতিক অপারেশনও সাপোর্ট করে, যেমন যোগ, বিয়োগ, গুণ, ভাগ, পাওয়ার ইত্যাদি।

উদাহরণ কোড

from fractions import Fraction as frac
print('Add: ' + str(frac('5/4') + frac('9/8')))
print('Subtract: ' + str(frac('15/20') - frac('2/8')))
print('Multiply: ' + str(frac('2/3') * frac('5/7')))
print('Divide: ' + str(frac('80/125') / frac('12/45')))
print('Power: ' + str(frac('5/6') ** 3))

আউটপুট

Add: 19/8
Subtract: 1/2
Multiply: 10/21
Divide: 12/5
Power: 125/216

স্কয়ার রুট, ফ্লোর, সিলিং এবং কিছু অন্যান্য অপারেশনও এই অবজেক্ট দ্বারা সাপোর্ট করা হয়।

উদাহরণ কোড

from fractions import Fraction as frac
import math
print('Square Root: ' + str(math.sqrt(frac(36, 64))))
print('Square Root: ' + str(frac(math.sqrt(frac(36, 64)))))
print('Floor Value: ' + str(math.floor(frac('22/7'))))
print('Ceiling Value: ' + str(math.ceil(frac('22/7'))))

আউটপুট

Square Root: 0.75
Square Root: 3/4
Floor Value: 3
Ceiling Value: 4
  1. পাইথনে টাপল ভাগ করা (Tuple Division)

  2. পাইথনে প্যাটার্ন প্রিন্ট করার পদ্ধতি

  3. পাইথন getpass মডিউল

  4. পাইথনে তারিখ ম্যানিপুলেশনের জন্য মডিউল