Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन ValueError:गणित डोमेन त्रुटि समाधान

गणित में ऐसे ऑपरेशन होते हैं जो ऋणात्मक संख्याओं या शून्य संख्याओं पर कार्य नहीं करते हैं। उदाहरण के लिए, वर्गमूल पर विचार करें। आप एक ऋणात्मक संख्या का वर्गमूल नहीं खोज सकते। पायथन मानता है कि सभी ऑपरेशन नकारात्मक या शून्य संख्याओं के साथ काम नहीं करते हैं।

जब आप किसी ऐसे ऑपरेशन पर ऋणात्मक संख्या का उपयोग करने का प्रयास करते हैं जो किसी एक का समर्थन नहीं करता है, तो पायथन एक त्रुटि उत्पन्न करेगा। इस गाइड में, हम ValueError: math domain error . के कारण के बारे में बात करने जा रहे हैं . मार्गदर्शिका के अंत में, हम इस समस्या के समाधान पर चलेंगे।

ValueError:गणित डोमेन त्रुटि

पायथन ValueError: math domain error जब आप किसी ऐसी संख्या का उपयोग करते हैं जो किसी गणितीय संक्रिया द्वारा समर्थित नहीं है, तो इसे उठाया जाता है। यह त्रुटि आमतौर पर sqrt() . के साथ उठाई जाती है विधि और log() तरीका।

ValueError एक प्रकार की त्रुटि है जो इंगित करती है कि आप एक ऐसे मान पर गणितीय ऑपरेशन कर रहे हैं जो उस ऑपरेशन के साथ काम नहीं करता है। "गणित डोमेन त्रुटि" के मामले में, हम एक ऋणात्मक संख्या या शून्य संख्या का उपयोग कर रहे हैं जहां हमें नहीं होना चाहिए।

आइए ValueError: math domain error के एक उदाहरण के माध्यम से चलते हैं कार्रवाई में मुद्दा।

एक उदाहरण परिदृश्य

हम एक प्रोग्राम बना रहे हैं जो किसी दी गई संख्या के वर्गमूल की गणना करता है। यह कार्यक्रम छात्रों को वर्गमूल के अपने ज्ञान को संशोधित करने में मदद करने के लिए बनाया गया है।

आइए एक प्रोग्राम लिखें जो किसी दिए गए नंबर के वर्गमूल की गणना करता है। हम गणित पुस्तकालय को आयात करके शुरू करेंगे जिसे हमें वर्गमूल की गणना करने की आवश्यकता है:

<पूर्व>आयात गणित

इसके बाद, हम उपयोगकर्ता से एक नंबर एकत्र करने जा रहे हैं:

81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।

बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।

नंबर =इनपुट ("पेंसिल और पेपर का उपयोग करके पहले समस्या को हल करने का प्रयास करें। फिर, वह संख्या डालें जिसका वर्गमूल आप सत्यापित करना चाहते हैं:")

हम उपयोगकर्ता को स्वयं उत्तर खोजने का प्रयास करने के लिए प्रेरित करते हैं, क्योंकि हमारा कार्यक्रम लोगों को उनके उत्तरों की जांच करने में मदद करने के लिए डिज़ाइन किया गया है। इसके बाद, हम उपयोगकर्ता द्वारा डाले गए मान का वर्गमूल खोजने जा रहे हैं:

उत्तर =math.sqrt(int(number))

हम "नंबर" के मान को परिवर्तित करते हैं, जो उस संख्या को संग्रहीत करता है जिसका वर्गमूल उपयोगकर्ता खोजना चाहता है, एक पूर्णांक में। यह आवश्यक है क्योंकि input() विधि, जिसका उपयोग हम उपरोक्त संख्या एकत्र करने के लिए करते हैं, एक स्ट्रिंग देता है। हमें किसी स्ट्रिंग मान का वर्गमूल नहीं मिल सकता है।

अंत में, कंसोल के उत्तर को प्रिंट करते हैं:

print("{} का वर्गमूल {} है।".format(number, answer))

हम एक format() . का उपयोग करते हैं हमारे स्ट्रिंग में नंबर जोड़ने के लिए स्टेटमेंट। हमारा तार दिखाएगा:

"[नंबर उपयोगकर्ता डाला गया] का वर्गमूल है [हमारे कार्यक्रम की गणना का वर्गमूल]"

आइए हमारे कार्यक्रम को एक नकारात्मक संख्या के साथ जांचें:

पेंसिल और कागज का उपयोग करके पहले समस्या को हल करने का प्रयास करें। फिर, वह संख्या डालें जिसका वर्गमूल आप सत्यापित करना चाहते हैं:-16 ट्रेसबैक (सबसे हालिया कॉल अंतिम):फ़ाइल "test.py", पंक्ति 5, <मॉड्यूल> उत्तर =math.sqrt (int (संख्या)) में ValueError:गणित डोमेन त्रुटि

हमने -16 . मान डाला है हमारे कार्यक्रम में। हमारे कोड ने एक त्रुटि लौटा दी।

आइए इस त्रुटि को ठीक करें।

समाधान

इस त्रुटि को ठीक करने के लिए, हमें उपयोगकर्ता को यह संकेत देना होगा कि math.sqrt() निष्पादित करने से पहले आप किसी ऋणात्मक संख्या के वर्गमूल की गणना नहीं कर सकते हैं। समारोह।

ऐसा करने के लिए आइए हमारे कोड को संशोधित करें:

import mathnumber =input("पेंसिल और पेपर का उपयोग करके पहले समस्या को हल करने का प्रयास करें। फिर, वह संख्या डालें जिसका वर्गमूल आप सत्यापित करना चाहते हैं:") if int(number)>=0:answer =math.sqrt(int (संख्या))प्रिंट ("{} का वर्गमूल {} है।"। प्रारूप (संख्या, उत्तर)) और:प्रिंट ("आप 0 से कम संख्या का वर्गमूल नहीं ढूंढ सकते")

हम एक if . का उपयोग करते हैं यह जाँचने के लिए कथन कि उपयोगकर्ता द्वारा प्रोग्राम में डाली गई संख्या शून्य के बराबर या उससे अधिक है या नहीं। यदि संख्या इस मानदंड को पूरा करती है, तो if . की सामग्री स्टेटमेंट रन। अन्यथा, else कथन निष्पादित होता है, हमें एक संदेश के साथ प्रस्तुत करता है कि हमने एक अमान्य संख्या डाली है।

चलिए फिर से अपना प्रोग्राम चलाते हैं। हमारा कार्यक्रम वापस आता है:

पेंसिल और कागज का उपयोग करके पहले समस्या को हल करने का प्रयास करें। फिर, वह संख्या डालें जिसका वर्गमूल आप सत्यापित करना चाहते हैं:-16 आपको 0 से कम संख्या का वर्गमूल नहीं मिल सकता है।

हमारा कोड सफलतापूर्वक काम करता है।

निष्कर्ष

ValueError: math domain error जब आप एक ऋणात्मक या शून्य संख्या पर गणितीय कार्य करते हैं जिसकी गणना नहीं की जा सकती है। इस त्रुटि को हल करने के लिए, सुनिश्चित करें कि आप जिस गणितीय फ़ंक्शन का उपयोग कर रहे हैं, उसके लिए आप एक मान्य संख्या का उपयोग कर रहे हैं।

यदि आप पायथन में कोडिंग के बारे में अधिक जानना चाहते हैं, तो हमारा हाउ टू लर्न पायथन गाइड देखें। इस गाइड में कई सीखने के संसाधन, पाठ्यक्रम और किताबें शामिल हैं जो उन लोगों के लिए डिज़ाइन की गई हैं जो पायथन प्रोग्रामिंग भाषा सीख रहे हैं।


  1. पायथन में किसी संख्या के वर्गमूल की गणना कैसे करें?

    पायथन लाइब्रेरी के गणित मॉड्यूल में परिभाषित sqrt() फ़ंक्शन का उपयोग करना किसी संख्या के वर्गमूल की गणना करने का सबसे आसान तरीका है >>> import math >>> math.sqrt(10) 3.1622776601683795 >>> math.sqrt(3) 1.7320508075688772

  1. पायथन में किसी संख्या की शक्ति कैसे प्राप्त करें?

    किसी संख्या की शक्ति की गणना दो विधियों से की जा सकती है। math.pow() फ़ंक्शन का उपयोग करना >>> math.pow(10,2) 100.0 घातांक ऑपरेटर का उपयोग करना >>> 10**2 100

  1. पायथन में किसी संख्या के प्राकृतिक लॉग की गणना कैसे करें?

    गणित मॉड्यूल में, लघुगणकीय मान की गणना के लिए दो कार्यों को परिभाषित किया गया है। लॉग () फ़ंक्शन किसी संख्या का प्राकृतिक लघुगणक देता है, जबकि लॉग 10 () मानक लोरिथम की गणना करता है यानी आधार 10 लॉग () फ़ंक्शन दो तर्क लेता है, संख्या और आधार आयात करें .pi) :, math.log(math.pi))