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

Python ValueError: max() arg is an empty sequence समाधान

ValueError: max() arg is an empty sequence

max() मेथड केवल तभी काम करता है जब आप मेथड में कम से कम एक मान वाला सीक्वेंस पास करते हैं।

यदि आप खाली लिस्ट में सबसे बड़े आइटम को खोजने का प्रयास करते हैं, तो आपको एरर "ValueError: max() arg is an empty sequence" मिलेगी।

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

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

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

students = [
    { "name": "Ron", "grades": [75, 92, 84] },
    { "name": "Katy", "grades": [92, 86, 81] },
    { "name": "Rachel", "grades": [64, 72, 72] },
    { "name": "Miranda", "grades": [] }
]

हमारी छात्रों की लिस्ट में चार डिक्शनरीज़ हैं। इन डिक्शनरीज़ में प्रत्येक छात्र के नाम के साथ-साथ उनके द्वारा अर्जित ग्रेड की लिस्ट होती है। मिरांडा के पास अभी तक कोई ग्रेड नहीं है क्योंकि वह अभी केमिस्ट्री क्लास में शामिल हुई है।

अगला, फोर लूप का उपयोग करके हमारी छात्रों की लिस्ट में प्रत्येक छात्र के माध्यम से जाएं और प्रत्येक छात्र द्वारा अर्जित उच्चतम ग्रेड और प्रत्येक छात्र का औसत ग्रेड खोजें:

for s in students:
    highest_grade = max(s["grades"])
    average_grade = round(sum(s["grades"]) / len(s["grades"]))
    print("The highest grade {} has earned is {}. Their average grade is {}.".format(s["name"], highest_grade, average_grade))

हम max() फंक्शन का उपयोग छात्र द्वारा अर्जित उच्चतम ग्रेड खोजने के लिए करते हैं। छात्र के औसत ग्रेड की गणना करने के लिए, हम उनके सभी ग्रेड के कुल को उनके द्वारा प्राप्त ग्रेड की संख्या से विभाजित करते हैं।

हम round() मेथड का उपयोग करके प्रत्येक छात्र के औसत ग्रेड को निकटतम पूर्ण संख्या तक राउंड करते हैं।

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

The highest grade Ron has earned is 92. Their average grade is 84.
The highest grade Katy has earned is 92. Their average grade is 86.
The highest grade Rachel has earned is 72. Their average grade is 69.
Traceback (most recent call last):
  File "main.py", line 10, in 
    highest_grade = max(s["grades"])
ValueError: max() arg is an empty sequence

हमारा कोड सफलतापूर्वक चलता है जब तक यह हमारी लिस्ट में चौथे आइटम तक नहीं पहुंच जाता। हम रॉन, कैटी, और रेचेल के उच्चतम और औसत ग्रेड देख सकते हैं। हम मिरांडा के लिए कोई मान नहीं देख सकते।

समाधान

हमारा कोड पहले तीन छात्रों पर काम करता है क्योंकि उनमें से प्रत्येक के पास कम से कम एक ग्रेड वाली ग्रेड की लिस्ट है। मिरांडा के पास अभी तक कोई ग्रेड नहीं है।

क्योंकि मिरांडा के पास कोई ग्रेड नहीं है, max() फंक्शन एक्जीक्यूट होने में विफल रहता है। max() खाली लिस्ट में सबसे बड़ा मान नहीं ढूंढ सकता।

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

आइए "if" स्टेटमेंट का उपयोग करके चेक करें कि क्या किसी छात्र के पास कोई ग्रेड है इससे पहले कि हम कोई गणना करें:

for s in students:
    if len(s["grades"]) > 0:
        highest_grade = max(s["grades"])
        average_grade = round(sum(s["grades"]) / len(s["grades"]))
        print("The highest grade {} has earned is {}. Their average grade is {}.".format(s["name"], highest_grade, average_grade))
    else:
        print("{} has not earned any grades.".format(s["name"]))

हमारा उपरोक्त कोड केवल छात्र के उच्चतम और औसत ग्रेड की गणना करेगा यदि उन्होंने कम से कम एक ग्रेड अर्जित किया है। अन्यथा, यूज़र को सूचित किया जाएगा कि छात्र ने कोई ग्रेड अर्जित नहीं किया है। आइए अपना कोड चलाएं:

The highest grade Ron has earned is 92. Their average grade is 84.
The highest grade Katy has earned is 92. Their average grade is 86.
The highest grade Rachel has earned is 72. Their average grade is 69.
Miranda has not earned any grades.

हमारा कोड सफलतापूर्वक पहले तीन छात्रों के उच्चतम और औसत ग्रेड की गणना करता है। जब हमारा कोड मिरांडा तक पहुंचता है, तो हमारा कोड उसके उच्चतम और औसत ग्रेड की गणना नहीं करता। इसके बजाय, हमारा कोड हमें सूचित करता है कि मिरांडा ने अभी तक कोई ग्रेड अर्जित नहीं किया है।

निष्कर्ष

"ValueError: max() arg is an empty sequence" एरर तब उठाई जाती है जब आप max() मेथड का उपयोग करके खाली लिस्ट में सबसे बड़ा आइटम खोजने का प्रयास करते हैं।

इस एरर को हल करने के लिए, सुनिश्चित करें कि आप केवल कम से कम एक मान वाली लिस्ट को max() स्टेटमेंट के माध्यम से पास करते हैं। अब आपके पास इस समस्या को एक प्रोफेशनल कोडर की तरह ठीक करने का ज्ञान है!

  1. - Python में खाली टपल कैसे बनाएं?

    आप असाइनमेंट स्टेटमेंट में पैरेंथेसिस में कोई एलिमेंट न देकर खाली टपल ऑब्जेक्ट बना सकते हैं। खाली टपल ऑब्जेक्ट `tuple()` बिल्ट-इन फंक्शन से बिना किसी तर्क के भी बनाया जाता है। >>> T1 = () >>> T1 () >>> T1 = tuple() >>> T1 ()

  1. - Python में खाली डिक्शनरी कैसे बनाएं?

    आप असाइनमेंट स्टेटमेंट में कर्ली ब्रैकेट्स में कोई एलिमेंट न देकर खाली डिक्शनरी ऑब्जेक्ट बना सकते हैं। खाली डिक्शनरी ऑब्जेक्ट `dict()` बिल्ट-इन फंक्शन से बिना किसी तर्क के भी बनाया जाता है। >>> d1 = {} >>> d1 {} >>> d1 = dict() >>> d1 {}

  1. - Python में खाली लिस्ट कैसे बनाएं?

    आप असाइनमेंट स्टेटमेंट में स्क्वायर ब्रैकेट्स में कोई एलिमेंट न देकर खाली लिस्ट ऑब्जेक्ट बना सकते हैं। खाली लिस्ट ऑब्जेक्ट `list()` बिल्ट-इन फंक्शन से बिना किसी तर्क के भी बनाया जाता है। >>> L1 = [] >>> L1 [] >>> L1 = list() >>> L1 []