len()
विधि केवल चलने योग्य वस्तुओं जैसे स्ट्रिंग्स, सूचियों और शब्दकोशों पर काम करती है। ऐसा इसलिए है क्योंकि चलने योग्य वस्तुओं में मानों के क्रम होते हैं। यदि आप len()
. का उपयोग करने का प्रयास करते हैं कोई नहीं मान पर विधि, आपको त्रुटि का सामना करना पड़ेगा "लेखन त्रुटि:प्रकार की वस्तु 'कोई नहीं' में कोई len()
नहीं है "
इस गाइड में, हम इस बारे में बात करते हैं कि इस त्रुटि का क्या अर्थ है और यह कैसे काम करती है। हम कार्रवाई में इस त्रुटि के दो उदाहरणों के माध्यम से चलते हैं ताकि आप यह पता लगा सकें कि इसे अपने कोड में कैसे हल किया जाए।
लेखन त्रुटि:'कोई नहीं' प्रकार की वस्तु में कोई लेन नहीं है ()
कोई नहीं टाइप किसी भी डेटा प्रकार को संदर्भित नहीं करता है। आप उन विधियों का उपयोग नहीं कर सकते हैं जो चलने योग्य वस्तुओं पर काम करती हैं, जैसे len()
, कोई नहीं मान पर। ऐसा इसलिए है क्योंकि किसी में भी मानों का संग्रह नहीं है। कोई नहीं की लंबाई की गणना नहीं की जा सकती क्योंकि किसी के पास कोई चाइल्ड मान नहीं है।
यह त्रुटि दो मामलों में आम है:
- जहां आप भूल जाते हैं कि बिल्ट-इन फ़ंक्शन एक सूची को जगह-जगह बदल देते हैं
- जहां आप किसी फंक्शन में रिटर्न स्टेटमेंट भूल जाते हैं
आइए इनमें से प्रत्येक कारण को गहराई से देखें।
कारण #1:बिल्ट-इन फंक्शन सूचियां जगह-जगह बदलें
हम एक ऐसा प्रोग्राम बनाने जा रहे हैं जो एक स्कूल में छात्रों के बारे में जानकारी वाले शब्दकोशों की सूची को सॉर्ट करता है। हम इस सूची को किसी छात्र की अंतिम परीक्षा में उसके ग्रेड के आरोही क्रम में क्रमबद्ध करेंगे।
शुरू करने के लिए, शब्दकोशों की एक सूची परिभाषित करें जिसमें छात्रों और उनके सबसे हाल के परीक्षा स्कोर के बारे में जानकारी हो:
<पूर्व>छात्र =[ {"नाम":"पीटर", "स्कोर":76}, {"नाम":"रिचर्ड", "स्कोर":63}, {"नाम":"एरिन", "स्कोर" :64},{"नाम":"मिली", "स्कोर":89 }]
प्रत्येक शब्दकोश में दो कुंजियाँ और मान होते हैं। एक छात्र के नाम से मेल खाता है और दूसरा उस छात्र के स्कोर से मेल खाता है जो एक छात्र ने अपनी पिछली परीक्षा में अर्जित किया था। इसके बाद, sort()
का उपयोग करें हमारे छात्रों की सूची को छाँटने की विधि:
81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।
बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।
def Score_sort(s):रिटर्न s["score"]sorted_students =Students.sort(key=score_sort)
हमने "स्कोर_सॉर्ट" नामक एक फ़ंक्शन घोषित किया है जो प्रत्येक शब्दकोश में "स्कोर" का मान देता है। इसके बाद हम sort()
. का उपयोग करके अपनी शब्दकोशों की सूची में आइटम ऑर्डर करने के लिए इसका उपयोग करते हैं तरीका।
इसके बाद, हम अपनी सूची की लंबाई का प्रिंट आउट लेते हैं:
प्रिंट ("सूची में {} छात्र हैं।".format(len(sorted_students)))
हम लूप के लिए कंसोल में शब्दकोशों की नई सूची का प्रिंट आउट लेते हैं:
सॉर्टेड_स्टूडेंट्स में s के लिए:प्रिंट ("{} ने अपने पिछले टेस्ट में {} का स्कोर अर्जित किया।".format(s["name"], s["score"]))
यह कोड एक संदेश को प्रिंट करता है जो हमें सूचित करता है कि "सॉर्टेड_स्टूडेंट्स" सूची में प्रत्येक छात्र के लिए एक छात्र ने अपनी अंतिम परीक्षा में कितने अंक अर्जित किए। आइए अपना कोड चलाएं:
ट्रेसबैक (सबसे हालिया कॉल अंतिम):फ़ाइल "main.py", लाइन 13, <मॉड्यूल> प्रिंट में ("सूची में {} छात्र हैं।"। प्रारूप (लेन (सॉर्टेड_स्टूडेंट्स))) टाइप एरर:ऑब्जेक्ट 'NoneType' प्रकार का कोई लेन नहीं है ()
हमारा कोड एक त्रुटि देता है।
इस समस्या को हल करने के लिए, हमें उस कोड को हटाना होगा जहां हम sort()
. का परिणाम निर्दिष्ट करते हैं "सॉर्टेड_स्टूडेंट्स" के लिए विधि। ऐसा इसलिए है क्योंकि sort()
विधि जगह में एक सूची बदलती है। यह एक नई सूची नहीं बनाता है।
"सॉर्टेड_स्टूडेंट्स" सूची की घोषणा को हटा दें और हमारे बाकी प्रोग्राम में "स्टूडेंट्स" का उपयोग करें:
students.sort(key=score_sort)print("सूची में {} छात्र हैं।. उनका अंतिम परीक्षण.".format(s["name"], s["score"]))
हमारा कोड चलाएँ और देखें कि क्या होता है:
सूची में 4 छात्र हैं। रिचर्ड ने अपने अंतिम टेस्ट में 63 का स्कोर अर्जित किया। एरिन ने अपने अंतिम टेस्ट में 64 का स्कोर अर्जित किया। पीटर ने अपने अंतिम टेस्ट में 76 का स्कोर अर्जित किया। माइली ने 89 का स्कोर अर्जित किया उनके अंतिम परीक्षण पर।
हमारा कोड सफलतापूर्वक निष्पादित होता है। सबसे पहले, हमारा कोड हमें बताता है कि हमारी सूची में कितने छात्र हैं। हमारा कोड तब प्रत्येक छात्र के बारे में जानकारी प्रिंट करता है और उन्होंने अपने अंतिम परीक्षण में कितने अंक अर्जित किए हैं। यह जानकारी छात्र के ग्रेड के आरोही क्रम में छपी है।
कारण #2:रिटर्न स्टेटमेंट भूल जाना
हम अपने कोड को और अधिक मॉड्यूलर बनाने जा रहे हैं। ऐसा करने के लिए, हम अपनी छँटाई विधि को अपने स्वयं के कार्य में स्थानांतरित करते हैं। हम एक फ़ंक्शन को भी परिभाषित करेंगे जो इस बारे में जानकारी प्रिंट करता है कि प्रत्येक छात्र ने अपने परीक्षण में कितना स्कोर अर्जित किया है।
छात्रों की हमारी सूची और हमारे सॉर्टिंग हेल्पर फ़ंक्शन को परिभाषित करके प्रारंभ करें। हम इस कोड को पहले ट्यूटोरियल में उधार लेंगे।
<पूर्व>छात्र =[ {"नाम":"पीटर", "स्कोर":76}, {"नाम":"रिचर्ड", "स्कोर":63}, {"नाम":"एरिन", "स्कोर" :64 },{"नाम":"मिली", "स्कोर":89 }]def Score_sort(s):return s["score"]इसके बाद, एक फ़ंक्शन लिखें जो हमारी सूची को सॉर्ट करता है:
def sort_list(students):Students.sort(key=score_sort)
अंत में, हम एक फ़ंक्शन को परिभाषित करते हैं जो प्रत्येक छात्र के प्रदर्शन के बारे में जानकारी प्रदर्शित करता है:
def show_students(new_students):प्रिंट ("सूची में {} छात्र हैं।"। new_students में s के लिए प्रारूप (लेन (छात्र))):प्रिंट ("{} ने अपने अंतिम पर {} का स्कोर अर्जित किया test.".format(s["name"], s["score"]))
अपना कोड चलाने से पहले, हमें अपने कार्यों को कॉल करना होगा:
new_students =sort_list(students)show_students(new_students)
हमारा प्रोग्राम पहले sort_list()
. का उपयोग करके हमारी सूची को सॉर्ट करेगा समारोह। फिर, हमारा प्रोग्राम कंसोल पर प्रत्येक छात्र के बारे में जानकारी प्रिंट करेगा। इसे show_students()
. में नियंत्रित किया जाता है समारोह।
चलिए अपना कोड चलाते हैं:
ट्रेसबैक (सबसे हालिया कॉल अंतिम):फ़ाइल "main.py", लाइन 21, <मॉड्यूल> show_students(new_students) में फ़ाइल "main.py", लाइन 15, show_students प्रिंट में ("इसमें {} छात्र हैं सूची.".format(len(new_students)))TypeError:'NoneType' प्रकार की वस्तु में कोई लेन नहीं है ()
हमारा कोड एक त्रुटि देता है। यह त्रुटि इसलिए हुई है क्योंकि हम अपने "सॉर्ट_लिस्ट" फ़ंक्शन में "रिटर्न" स्टेटमेंट शामिल करना भूल गए हैं।
जब हम अपनी sort_list()
. को कॉल करते हैं फ़ंक्शन, हम "new_students" चर के लिए इसकी प्रतिक्रिया प्रदान करते हैं। वह चर हमारे show_students()
. में पास कर दिया गया है फ़ंक्शन जो प्रत्येक छात्र के बारे में जानकारी प्रदर्शित करता है। इस त्रुटि को हल करने के लिए, हमें sort_list()
. में एक रिटर्न स्टेटमेंट जोड़ना होगा समारोह:
def sort_list(students):Students.sort(key=score_sort) छात्रों को लौटाएं
हमारा कोड चलाएँ:
सूची में 4 छात्र हैं। रिचर्ड ने अपने अंतिम टेस्ट में 63 का स्कोर अर्जित किया। एरिन ने अपने अंतिम टेस्ट में 64 का स्कोर अर्जित किया। पीटर ने अपने अंतिम टेस्ट में 76 का स्कोर अर्जित किया। माइली ने 89 का स्कोर अर्जित किया उनके अंतिम परीक्षण पर।
हमारा कोड हमें अपेक्षित प्रतिक्रिया देता है।
निष्कर्ष
“लेखन त्रुटि:प्रकार की वस्तु 'कोई नहीं' में कोई len()
नहीं है "त्रुटि तब होती है जब आप len()
. का उपयोग करने का प्रयास करते हैं किसी वस्तु पर विधि जिसका मूल्य कोई नहीं है।
इस त्रुटि को हल करने के लिए, सुनिश्चित करें कि आप sort()
जैसी किसी भी अंतर्निहित सूची विधियों के जवाब निर्दिष्ट नहीं कर रहे हैं। , एक चर के लिए। यदि यह त्रुटि का समाधान नहीं करता है, तो सुनिश्चित करें कि आपके प्रोग्राम में सभी "वापसी" कथन हैं जो इसे सफलतापूर्वक कार्य करने के लिए आवश्यक हैं।
अब आप एक पायथन पेशेवर की तरह इस समस्या को हल करने के लिए तैयार हैं!