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

पायथन TypeError: not enough arguments for format string समाधान

पायथन स्ट्रिंग्स को सही संख्या में आर्गुमेंट्स का उपयोग करके फॉर्मेट किया जाना चाहिए। जब आपके द्वारा निर्दिष्ट आर्गुमेंट्स की संख्या उन मानों की संख्या से कम होती है जिन्हें आप स्ट्रिंग में फॉर्मेट करना चाहते हैं, तो आपको "TypeError: not enough arguments for format string" जैसी त्रुटि का सामना करना पड़ता है।

इस गाइड में, हम बात करते हैं कि इस त्रुटि का क्या अर्थ है और यह क्यों उठाई जाती है। हम एक उदाहरण देखते हैं ताकि आप समझ सकें कि आप इस त्रुटि को अपने कोड में कैसे हल कर सकते हैं।

TypeError: not enough arguments for format string

हमारी त्रुटि एक TypeError है। इसका अर्थ है कि हमने एक ऐसे मान पर कुछ करने का प्रयास किया है जिसका अंतर्निहित डेटा प्रकार उस ऑपरेशन का समर्थन नहीं करता।

इस मामले में, हम स्ट्रिंग फॉर्मेटिंग के साथ काम करते हैं। पायथन हमें बताता है कि हमने स्ट्रिंग फॉर्मेट करने में गलती की है।

जब आप स्ट्रिंग फॉर्मेट करते हैं, तो आपके द्वारा निर्दिष्ट आर्गुमेंट्स की संख्या उन मानों की संख्या के बराबर होनी चाहिए जिन्हें आप फॉर्मेट करना चाहते हैं। अन्यथा, आपको त्रुटि का सामना करना पड़ता है।

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

एक आम स्थिति जहां यह त्रुटि उठाई जाती है वह है जब आप % स्ट्रिंग फॉर्मेट में आर्गुमेंट्स को पैरेंथेसिस में संलग्न करना भूल जाते हैं। यह सिंटैक्स % ऑपरेटर का उपयोग करके मानों को स्ट्रिंग में जोड़ता है।

यहां, हम एक ऐप बनाते हैं जो ऑनर रोल पर छात्र नामों की सूची को स्ट्रिंग में फॉर्मेट करता है। हम छात्र नामों की सूची को परिभाषित करके शुरू करते हैं:

students = ["Andy", "Malcolm", "Lindsay", "Lucy"]

अगला, हम % सिंटैक्स का उपयोग करके इन मानों को स्ट्रिंग में फॉर्मेट करते हैं:

honor_roll = "%s, %s, %s, and %s are on the CK High School Honor Roll." % students[0], students[1], students[2], students[3]
print(honor_roll)

हम अपने "students" सरणी से सभी चार नामों को "honor_roll" स्ट्रिंग में फॉर्मेट करते हैं। हम अपने स्ट्रिंग के अंदर %s का उपयोग यह इंगित करने के लिए करते हैं कि मान कहां फॉर्मेट होने चाहिए। % का उपयोग स्ट्रिंग के बाद उन मानों को निर्दिष्ट करने के लिए किया जाता है जिन्हें हम अपनी स्ट्रिंग में जोड़ना चाहते हैं।

हमारा कोड चलाएं और देखें क्या होता है:

Traceback (most recent call last):
File "main.py", line 3, in 
    honor_roll = "%s, %s, %s, and %s are on the CK High School Honor Roll." % students[0], students[1], students[2], students[3]
TypeError: not enough arguments for format string

पायथन को एक त्रुटि का सामना करना पड़ा है। आइए देखते हैं कि हम इसे कैसे हल कर सकते हैं।

समाधान #1: स्ट्रिंग फॉर्मेटिंग सिंटैक्स ठीक करें

हमने स्ट्रिंग फॉर्मेट करने के तरीके में गलती की है। % ऑपरेटर का उपयोग करते समय, जिन मानों को आप स्ट्रिंग में जोड़ना चाहते हैं उन्हें पैरेंथेसिस के भीतर संलग्न किया जाना चाहिए।

ऊपर के हमारे उदाहरण में, हम % चिह्न के बाद मानों को कॉमा-सेपरेटेड मानों की सूची के रूप में निर्दिष्ट करते हैं। यह सूची पैरेंथेसिस में प्रकट नहीं होती।

हम % चिह्न के बाद के मानों को पैरेंथेसिस में संलग्न करके अपनी त्रुटि ठीक करते हैं:

honor_roll = "%s, %s, %s, and %s are on the CK High School Honor Roll." % (students[0], students[1], students[2], students[3])

आइए अपना कोड चलाते हैं:

Andy, Malcolm, Lindsay, and Lucy are on the CK High School Honor Roll.

हमारा कोड सफलतापूर्वक ऑनर रोल पर छात्रों की सूचना देने वाला संदेश लौटाता है।

समाधान #2: .format() का उपयोग करें

% सिंटैक्स आउटडेटेड होने लगा है। स्ट्रिंग फॉर्मेट करने के अन्य तरीके हैं जैसे .format() मेथड जो आधुनिक पायथन कोड में अधिक पसंद किए जाते हैं।

अपनी समस्या को हल करने के लिए, हम % सिंटैक्स के बजाय .format() सिंटैक्स का उपयोग कर सकते हैं:

honor_roll = "{}, {}, {}, and {} are on the CK High School Honor Roll.".format(students[0], students[1], students[2], students[3])

इस सिंटैक्स की संरचना % मेथड के समान है। हमारे स्ट्रिंग में, हम उन स्थानों को इंगित करने के लिए {} ब्रैकेट्स का उपयोग करते हैं जहां हम मान जोड़ना चाहते हैं।

हम उन मानों की सूची निर्दिष्ट करने के लिए .format() मेथड का उपयोग करते हैं जिन्हें हम अपनी स्ट्रिंग में जोड़ना चाहते हैं। आइए अपना कोड चलाते हैं:

Andy, Malcolm, Lindsay, and Lucy are on the CK High School Honor Roll.

हमारा प्रोग्राम सफलतापूर्वक ऑनर रोल पर छात्रों के नामों की सूची दिखाता है। यह सूची स्ट्रिंग के हिस्से के रूप में फॉर्मेट की गई है।

निष्कर्ष

"TypeError: not enough arguments for format string" त्रुटि तब उठाई जाती है जब स्ट्रिंग फॉर्मेट ऑपरेशन में निर्दिष्ट आर्गुमेंट्स की संख्या उन मानों की संख्या के बराबर नहीं होती जिन्हें आप स्ट्रिंग में जोड़ना चाहते हैं।

इस समस्या को हल करने के लिए, पहले सुनिश्चित करें कि यदि आप % ऑपरेटर का उपयोग कर रहे हैं तो सभी आर्गुमेंट्स को कर्ली ब्रैकेट्स () में संलग्न किया गया है। यदि आप इस त्रुटि को ठीक करना और अपने कोड को आधुनिक बनाना चाहते हैं तो आप % सिंटैक्स के प्रतिस्थापन के रूप में .format() मेथड का उपयोग कर सकते हैं।

अब आप इस सामान्य पायथन त्रुटि को एक विशेषज्ञ की तरह ठीक करने के लिए तैयार हैं!

  1. - पायथन में स्ट्रिंग ऑपरेशन्स

    पायथन में एक मानक लाइब्रेरी होती है जिसे string कहा जाता है। इस मॉड्यूल में विभिन्न स्ट्रिंग-संबंधी कॉन्स्टेंट्स, मेथड्स और क्लासेस उपलब्ध होते हैं।इनका उपयोग करने के लिए, हमें अपने कोड में string मॉड्यूल को इम्पोर्ट करना पड़ता है।import stringकुछ स्ट्रिंग कॉन्स्टेंट्स और उनके मान निम्नलिखित हैं:क्र

  1. - पायथन प्रोग्राम: स्ट्रिंग में URL चेक करना

    इस मामले में हम पायथन में re मॉड्यूल का उपयोग करते हैं। यहां हम एक स्ट्रिंग स्वीकार करते हैं और चेक करते हैं कि स्ट्रिंग में कोई URL है या नहीं। यदि स्ट्रिंग में URL मौजूद है तो प्रदर्शित करें। हम इस समस्या को हल करने के लिए findall() मेथड का उपयोग करते हैं।एल्गोरिदमचरण 1: इनपुट के रूप में स्ट्रिंग

  1. - Python 3 में Dictionary का उपयोग करके String Format कैसे करें?

    Dictionary के साथ String Formatting आप Strings को Interpolate करने के लिए Dictionaries का उपयोग कर सकते हैं। इनका एक Syntax होता है जिसमें आपको % और Conversion Character के बीच Parentheses में Key Provide करना होता है। उदाहरण उदाहरण के लिए, यदि आपके पास Key cost में Float Stored है और आप इसे $xxxx