গণিতে, এমন কিছু ক্রিয়াকলাপ রয়েছে যা ঋণাত্মক সংখ্যা বা শূন্য সংখ্যায় কাজ করে না। উদাহরণস্বরূপ, বর্গমূল বিবেচনা করুন। আপনি একটি ঋণাত্মক সংখ্যার বর্গমূল খুঁজে পাবেন না। পাইথন স্বীকার করে যে সমস্ত অপারেশন ঋণাত্মক বা শূন্য সংখ্যার সাথে কাজ করে না।
পাইথন একটি ত্রুটি উত্থাপন করবে যখন আপনি একটি অপারেশনে একটি নেতিবাচক সংখ্যা ব্যবহার করার চেষ্টা করবেন যা একটি সমর্থন করে না। এই নির্দেশিকায়, আমরা ValueError: math domain error
এর কারণ সম্পর্কে কথা বলতে যাচ্ছি . গাইডের শেষের দিকে, আমরা এই সমস্যার একটি সমাধানের মধ্য দিয়ে চলে যাব।
মান ত্রুটি:গণিত ডোমেন ত্রুটি
পাইথন ValueError: math domain error
উত্থাপিত হয় যখন আপনি একটি সংখ্যা ব্যবহার করেন যা একটি গাণিতিক অপারেশন দ্বারা সমর্থিত নয়। এই ত্রুটিটি সাধারণত sqrt()
দিয়ে উত্থাপিত হয় পদ্ধতি এবং log()
পদ্ধতি
ValueError হল এক ধরনের ত্রুটি যা নির্দেশ করে যে আপনি একটি মানের উপর একটি গাণিতিক অপারেশন করছেন যা সেই অপারেশনের সাথে কাজ করে না। "গণিতের ডোমেন ত্রুটির" ক্ষেত্রে, আমরা একটি ঋণাত্মক সংখ্যা বা একটি শূন্য সংখ্যা ব্যবহার করছি যেখানে আমাদের থাকা উচিত নয়।
চলুন ValueError: math domain error
-এর একটি উদাহরণের মাধ্যমে চলুন কর্মে সমস্যা।
একটি উদাহরণ দৃশ্য
আমরা একটি প্রোগ্রাম তৈরি করছি যা একটি প্রদত্ত সংখ্যার বর্গমূল গণনা করে। এই প্রোগ্রামটি শিক্ষার্থীদের বর্গমূল সম্পর্কে তাদের জ্ঞান সংশোধন করতে সাহায্য করার জন্য ডিজাইন করা হয়েছে।
আসুন একটি প্রোগ্রাম লিখি যা একটি প্রদত্ত সংখ্যার বর্গমূল গণনা করে। আমরা গণিত লাইব্রেরি আমদানি করে শুরু করব যা আমাদের একটি বর্গমূল গণনা করতে হবে:
import math
পরবর্তী, আমরা ব্যবহারকারীর কাছ থেকে একটি সংখ্যা সংগ্রহ করতে যাচ্ছি:
81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷
৷গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় ব্যয় করেছে।
number = input("Try solving the problem first using pencil and paper. Then, insert the number whose square root you want to verify: ")
আমরা ব্যবহারকারীকে নিজেরাই উত্তর খোঁজার চেষ্টা করার জন্য অনুরোধ করি, কারণ আমাদের প্রোগ্রামটি লোকেদের তাদের উত্তর পরীক্ষা করতে সহায়তা করার জন্য ডিজাইন করা হয়েছে। এর পরে, আমরা ব্যবহারকারীর সন্নিবেশ করা মানটির বর্গমূল খুঁজে বের করতে যাচ্ছি:
answer = math.sqrt(int(number))
আমরা "সংখ্যা" এর মানকে রূপান্তর করি, যা ব্যবহারকারী যে সংখ্যাটির বর্গমূল খুঁজে পেতে চায় সেটিকে একটি পূর্ণসংখ্যাতে সংরক্ষণ করে। এটি প্রয়োজনীয় কারণ input()
পদ্ধতি, যা আমরা পূর্বোক্ত সংখ্যা সংগ্রহ করতে ব্যবহার করেছি, একটি স্ট্রিং প্রদান করে। আমরা একটি স্ট্রিং মানের বর্গমূল খুঁজে পাচ্ছি না।
অবশেষে, কনসোলের উত্তরটি প্রিন্ট করা যাক:
print("The square root of {} is {}.".format(number, answer))
আমরা একটি format()
ব্যবহার করি বিবৃতি আমাদের স্ট্রিং নম্বর যোগ করার জন্য. আমাদের স্ট্রিং দেখাবে:
"The square root of [Number user inserted] is [The square root our program calculated]"
আসুন একটি নেতিবাচক সংখ্যা দিয়ে আমাদের প্রোগ্রাম পরীক্ষা করি:
Try solving the problem first using pencil and paper. Then, insert the number whose square root you want to verify: -16 Traceback (most recent call last): File "test.py", line 5, in <module> answer = math.sqrt(int(number)) ValueError: math domain error
আমরা -16
মান সন্নিবেশ করেছি আমাদের প্রোগ্রামের মধ্যে। আমাদের কোড একটি ত্রুটি ফেরত.
আসুন এই ত্রুটিটি ঠিক করি।
সমাধান
এই ত্রুটিটি ঠিক করার জন্য, আমাদের ব্যবহারকারীকে অনুরোধ করতে হবে যে আমরা math.sqrt()
চালানোর আগে আপনি একটি ঋণাত্মক সংখ্যার বর্গমূল গণনা করতে পারবেন না। ফাংশন
এটি ঘটতে আমাদের কোড সংশোধন করা যাক:
import math number = input("Try solving the problem first using pencil and paper. Then, insert the number whose square root you want to verify: ") if int(number) >= 0: answer = math.sqrt(int(number)) print("The square root of {} is {}.".format(number, answer)) else: print("You cannot find the square root of a number less than 0.")
আমরা একটি if
ব্যবহার করি ব্যবহারকারী প্রোগ্রামে যে সংখ্যাটি সন্নিবেশ করেন তা শূন্যের সমান বা বেশি কিনা তা পরীক্ষা করার জন্য বিবৃতি। সংখ্যাটি এই মানদণ্ড পূরণ করলে, if
এর বিষয়বস্তু বিবৃতি রান. অন্যথায়, else
বিবৃতি কার্যকর করে, আমাদেরকে একটি বার্তা দিয়ে উপস্থাপন করে যে আমরা একটি অবৈধ নম্বর সন্নিবেশ করেছি।
আবার আমাদের প্রোগ্রাম চালানো যাক. আমাদের প্রোগ্রাম ফিরে আসে:
Try solving the problem first using pencil and paper. Then, insert the number whose square root you want to verify: -16 You cannot find the square root of a number less than 0.
আমাদের কোড সফলভাবে কাজ করে৷
উপসংহার
ValueError: math domain error
উত্থাপিত হয় যখন আপনি একটি নেতিবাচক বা শূন্য সংখ্যার উপর একটি গাণিতিক ফাংশন সম্পাদন করেন যা গণনা করা যায় না। এই ত্রুটিটি সমাধান করতে, আপনি যে গাণিতিক ফাংশনটি ব্যবহার করছেন তার জন্য আপনি একটি বৈধ সংখ্যা ব্যবহার করছেন তা নিশ্চিত করুন।
আপনি যদি পাইথনে কোডিং সম্পর্কে আরও জানতে চান, আমাদের পাইথন কীভাবে শিখবেন নির্দেশিকা দেখুন। এই নির্দেশিকাটিতে অনেকগুলি শেখার সংস্থান, কোর্স এবং বই রয়েছে যারা পাইথন প্রোগ্রামিং ভাষা শিখছেন তাদের জন্য ডিজাইন করা হয়েছে৷