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

Python TypeError: list indices must be integers or slices, not float समाधान

TypeError: list indices must be integers or slices, not float

लिस्ट्स को इंडेक्स नंबर्स का उपयोग करके इंडेक्स किया जाता है। ये नंबर इंटीजर मान होते हैं। यदि आप फ्लोटिंग-पॉइंट नंबर का उपयोग करके लिस्ट से आइटम एक्सेस करने का प्रयास करते हैं, तो "TypeError: list indices must be integers or slices, not float" एरर उठाई जाएगी।

यह गाइड चर्चा करती है कि इस एरर का क्या मतलब है और आप इसका सामना क्यों कर सकते हैं। हम इस एरर के एक उदाहरण के माध्यम से चलेंगे ताकि आप सीख सकें कि इसे कैसे ठीक किया जाए।

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

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

participants = [
    ["Alex Rogers", 5, 2],
    ["Linda Patterson", 3, 4],
    ["Ruby Spencer", 1, 6]
]

हमारे प्रतिभागियों की लिस्ट में तीन लिस्ट्स हैं। इनमें से प्रत्येक लिस्ट में प्रतिभागी का नाम, उनके द्वारा जीते गए गेम्स की संख्या, और उनके द्वारा हारे गए गेम्स की संख्या होती है, उस क्रम में।

मान खिलाड़ी द्वारा जीते गए समय की संख्या के अनुसार ऑर्डर किए गए हैं।

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

player_to_find = float(input("Enter the leaderboard position of the player you want to find: "))

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

हम यूज़र द्वारा डाले गए मान को फ्लोट में बदलते हैं क्योंकि हम बाद में अपने कोड में इंडेक्सिंग का उपयोग करने जा रहे हैं। इंडेक्स मान न्यूमेरिकल हैं और इसलिए हमें काम करने के लिए नंबर की आवश्यकता होगी।

अगला, यूज़र जिस खिलाड़ी को ढूंढ रहा है उसे प्राप्त करने के लिए इंडेक्सिंग का उपयोग करें:

player_info = participants[player_to_find - 1]

हम यूज़र द्वारा डाले गए मान का उपयोग अपने "participants" लिस्ट से व्यक्तिगत खिलाड़ी का रिकॉर्ड खोजने के लिए करते हैं। हम "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 
    player_info = participants[player_to_find + 1]
TypeError: list indices must be integers or slices, not float

हमारे प्रोग्राम में लीडरबोर्ड पोजीशन डालने के बाद, एरर उठाई जाती है।

समाधान

हम यूज़र द्वारा हमारे प्रोग्राम में डाले गए मान को फ्लोट में बदलते हैं। हम इसे float() मेथड का उपयोग करके करते हैं।

यह गलती है क्योंकि जब समय आता है हमारी "participants" लिस्ट से आइटम प्राप्त करने का, तो हम फ्लोटिंग-पॉइंट नंबर के साथ ऐसा करने का प्रयास करते हैं। यह एरर का कारण बनता है।

अपने प्रोग्राम को ठीक करने के लिए, हमें यूज़र द्वारा डाले गए मान को फ्लोटिंग-पॉइंट नंबर के बजाय इंटीजर में बदलना होगा। हम इसे 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 पर मौजूद व्यक्ति का खिलाड़ी रिकॉर्ड दिखाता है।

निष्कर्ष

"TypeError: list indices must be integers or slices, not float" एरर तब होती है जब आप फ्लोटिंग-पॉइंट नंबर का उपयोग करके लिस्ट से आइटम एक्सेस करने का प्रयास करते हैं। इस एरर को हल करने के लिए, सुनिश्चित करें कि आप लिस्ट में आइटम्स को उनके इंडेक्स मान द्वारा एक्सेस करने के लिए केवल इंटीजर्स का उपयोग करते हैं।

अब आप इस एरर को अपने कोड में एक प्रो की तरह ठीक करने के लिए तैयार हैं!

  1. - Python में पूर्णांकों की सूची के प्रत्येक तत्व में K जोड़ें

    डेटा विश्लेषण में, कभी-कभी किसी नए परिदृश्य के परिणाम का आकलन करने के लिए Python सूची में प्रत्येक तत्व में कुछ मान जोड़ना आवश्यक हो जाता है। यह विभिन्न मानों के साथ डेटा सेट के व्यवहार पर कई परिदृश्यों का परीक्षण करने में मदद करता है इसलिए उन परिदृश्यों को संभाल सकने वाले मॉडल या एल्गोरिदम बनाएं। इ

  1. - Python प्रोग्राम: पूर्णांकों की सूची से डुप्लिकेट प्रिंट करना

    यहां हम संख्याओं की सूची से सभी डुप्लिकेट नंबर प्रिंट करने का प्रयास कर रहे हैं। तो, हम उन सभी नंबरों को प्रिंट करने का प्रयास कर रहे हैं जो सूची में एक से अधिक बार आते हैं (सूची में अद्वितीय नहीं)। उदाहरण Input: given_list = [3, 6, 9, 12, 3, 30, 15, 9, 45, 36, 12] Output: desired_output = [3, 9,

  1. - सूची खाली है या नहीं जांचने का पायथन प्रोग्राम

    समस्या विवरण एक खाली सूची दी गई है। हमारा कार्य जांचना है कि यह सूची खाली है या नहीं। यहां हम जांचने का एक निहित तरीका उपयोग करते हैं। एल्गोरिदम हम एक खाली सूची लेते हैं। फिर जांचें कि यदि सूची खाली है तो 1 लौटाएं अन्यथा 0। उदाहरण कोड # खाली सूची की जांच के लिए पायथन कोड def checklist(A): if