सूचियों को अनुक्रमणिका संख्याओं का उपयोग करके अनुक्रमित किया जाता है। ये संख्याएँ पूर्णांक मान हैं। यदि आप फ़्लोटिंग-पॉइंट नंबर का उपयोग करके किसी सूची से किसी आइटम तक पहुंचने का प्रयास करते हैं, तो "टाइप एरर:सूची इंडेक्स पूर्णांक या स्लाइस होना चाहिए, फ्लोट नहीं" त्रुटि उठाई जाएगी।
यह मार्गदर्शिका चर्चा करती है कि इस त्रुटि का क्या अर्थ है और आपको इसका सामना क्यों करना पड़ सकता है। हम इस त्रुटि के एक उदाहरण के माध्यम से चलेंगे ताकि आप इसे ठीक करना सीख सकें।
लेखन त्रुटि:सूची सूचकांकों को पूर्णांक या स्लाइस होना चाहिए, फ़्लोट नहीं होना चाहिए
जब कोई आइटम किसी सूची में जोड़ा जाता है, तो आइटम को एक अनुक्रमणिका मान असाइन किया जाता है। सूची में प्रत्येक नए आइटम के लिए सूचकांक मान शून्य से शुरू होते हैं और एक से बढ़ते हैं। इससे व्यक्तिगत वस्तुओं तक पहुंच आसान हो जाती है। सूची में पहले आइटम में इंडेक्स 0 है, दूसरे में इंडेक्स 1 है, और इसी तरह।
आप फ़्लोटिंग-पॉइंट नंबरों का उपयोग करके किसी सूची से आइटम पुनर्प्राप्त नहीं कर सकते हैं। फ़्लोटिंग-पॉइंट नंबर एक अलग डेटा प्रकार हैं। नतीजतन, पायथन द्वारा उनके साथ अलग तरह से व्यवहार किया जाता है। सूचियाँ एक पूर्णांक अनुक्रमणिका संख्या की अपेक्षा करती हैं क्योंकि सूचियाँ पूर्णांकों का उपयोग करके अनुक्रमित की जाती हैं।
एक उदाहरण परिदृश्य
हम एक ऐसा प्रोग्राम बनाने जा रहे हैं जो टेनिस टूर्नामेंट में किसी प्रतिभागी के बारे में जानकारी प्राप्त करेगा। शुरू करने के लिए, सूचियों की एक सूची परिभाषित करें। सूचियों की इस सूची में टूर्नामेंट के सभी प्रतिभागियों के बारे में जानकारी होगी:
participants = [ ["Alex Rogers", 5, 2], ["Linda Patterson", 3, 4], ["Ruby Spencer", 1, 6] ]
प्रतिभागियों की हमारी सूची में तीन सूचियाँ हैं। इनमें से प्रत्येक सूची में एक प्रतिभागी का नाम, उनके द्वारा जीते गए खेलों की संख्या और उनके द्वारा हारे गए खेलों की संख्या उसी क्रम में दी गई है।
मानों को एक खिलाड़ी द्वारा जीती गई संख्या के अनुसार क्रमित किया जाता है।
इसके बाद, हम उपयोगकर्ता से उस खिलाड़ी के लिए पूछते हैं जिसकी जानकारी वे देखना चाहते हैं। हम एक इनपुट () स्टेटमेंट का उपयोग करके ऐसा करते हैं:
81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।
बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।
player_to_find = float(input("Enter the leaderboard position of the player you want to find: "))
उपयोगकर्ता द्वारा डाली गई संख्या लीडरबोर्ड पर खिलाड़ी की स्थिति के अनुरूप होनी चाहिए। एलेक्स रोजर्स पहले हैं। उसके बारे में पता लगाने के लिए, उपयोगकर्ता 1 डालेगा।
हम उपयोगकर्ता द्वारा डाले गए मान को एक फ्लोट में परिवर्तित करते हैं क्योंकि हम बाद में अपने कोड में अनुक्रमण का उपयोग करने जा रहे हैं। अनुक्रमणिका मान संख्यात्मक होते हैं और इसलिए हमें काम करने के लिए एक संख्या की आवश्यकता होगी।
इसके बाद, उस खिलाड़ी को पुनः प्राप्त करने के लिए अनुक्रमण का उपयोग करें जिसके लिए उपयोगकर्ता देख रहा है:
player_info = participants[player_to_find - 1]
हम अपनी "प्रतिभागियों" सूची से एक व्यक्तिगत खिलाड़ी का रिकॉर्ड खोजने के लिए उपयोगकर्ता द्वारा डाले गए मान का उपयोग करते हैं। हम “player_to_find” के मान में 1 घटाते हैं क्योंकि सूचियाँ शून्य से अनुक्रमित होती हैं और लीडरबोर्ड पर पहला व्यक्ति स्थान #1 पर होगा।
इसके बाद, इस प्रतिभागी के विवरण को कंसोल पर प्रिंट करें:
print("Name: {}".format(player_info[0])) print("Wins: {}".format(player_info[1])) print("Losses: {}".format(player_info[2]))
हम एक खिलाड़ी का नाम प्रदर्शित करते हैं, उन्होंने कितने गेम जीते हैं, और कितने गेम वे कंसोल से हारे हैं। आइए अपना कार्यक्रम चलाते हैं:
Enter the leaderboard position of the player you want to find: 2 Traceback (most recent call last): File "main.py", line 9, in <module> player_info = participants[player_to_find + 1] TypeError: list indices must be integers or slices, not float
जब हम अपने प्रोग्राम में लीडरबोर्ड स्थिति सम्मिलित करते हैं, तो एक त्रुटि उत्पन्न होती है।
समाधान
हम उपयोगकर्ता द्वारा हमारे प्रोग्राम में डाले गए मान को फ्लोट में परिवर्तित करते हैं। हम इसे float()
. का उपयोग करके करते हैं तरीका।
यह एक गलती है क्योंकि जब हमारे "प्रतिभागियों" सूची से किसी आइटम को पुनः प्राप्त करने का समय आता है, तो हम एक फ्लोटिंग-पॉइंट नंबर के साथ ऐसा करने का प्रयास करते हैं। यह त्रुटि का कारण बनता है।
अपने प्रोग्राम को ठीक करने के लिए, हमें उपयोगकर्ता द्वारा डाले गए मान को फ़्लोटिंग-पॉइंट नंबर के बजाय पूर्णांक में बदलना होगा। हम int()
. का उपयोग करके ऐसा कर सकते हैं तरीका:
player_to_find = int(input("Enter the leaderboard position of the player you want to find: "))
अब जब हमारे पास एक पूर्णांक मान है, तो हम अनुक्रमण का उपयोग करके अपनी सूचियों से आइटम पुनर्प्राप्त कर सकते हैं। हमारा कोड चलाएँ और देखें कि क्या होता है:
Enter the number of the player you want to find: 2 Name: Linda Patterson Wins: 3 Losses: 4
हमारा कोड हमें उस व्यक्ति का खिलाड़ी रिकॉर्ड सफलतापूर्वक दिखाता है जो लीडरबोर्ड पर #2 स्थान पर है।
निष्कर्ष
"लेखन त्रुटि:सूची सूचकांक पूर्णांक या स्लाइस होना चाहिए, फ्लोट नहीं" त्रुटि तब होती है जब आप किसी फ़्लोटिंग-पॉइंट नंबर का उपयोग करके किसी सूची से किसी आइटम तक पहुंचने का प्रयास करते हैं। इस त्रुटि को हल करने के लिए, सुनिश्चित करें कि आप किसी सूची में आइटम को उनके अनुक्रमणिका मान द्वारा एक्सेस करने के लिए केवल पूर्णांकों का उपयोग करते हैं।
अब आप एक पेशेवर की तरह अपने कोड में इस त्रुटि को ठीक करने के लिए तैयार हैं!