eğer boş Python

Python işlevleri ve meth

max() yöntemi yalnızca, yönteme en az bir değer içeren bir dizi iletirseniz çalışır.

Boş bir listedeki en büyük öğeyi bulmaya çalışırsanız, “ValueError: max() arg is a boş dizi” hatasıyla karşılaşırsınız.

Bu kılavuzda, bu hatanın ne anlama geldiği ve neden bu hatayla karşılaşabileceğiniz hakkında konuşuyoruz. Bu hatayı nasıl çözeceğinizi anlamanıza yardımcı olacak bir örnek üzerinden ilerliyoruz.




ValueError: max() arg boş bir dizidir

max() yöntemi, bir listedeki en büyük öğeyi bulmanızı sağlar. Listedeki en küçük öğeyi bulan min() yöntemine benzer.

Bu yöntemin çalışması için max() en az bir değere sahip bir diziye ihtiyaç duyar. Bunun nedeni, öğe yoksa listedeki en büyük öğeyi bulamamanızdır. Aranacak öğe olmadığı için en büyük öğe mevcut değil.

“ValueError: max() argümanının bir varyasyonu boş bir sıradır” min() yöntemine boş bir liste iletmeye çalıştığınızda hata bulunur. Bu hata “ValueError: min() arg boş bir dizidir”. Bu min() hatası aynı nedenden dolayı oluşur: değer içermeyen bir listede en küçük değeri bulamazsınız.




Örnek Senaryo

Biz’ Bir öğrencinin tüm kimya sınavlarında aldığı en yüksek notu bulan bir program oluşturacağız. Başlamak için bir öğrenci listesi tanımlayın:

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

Öğrenci listemiz dört sözlük içerir. Bu sözlükler, her öğrencinin adını ve aldıkları notların bir listesini içerir. Miranda'nın henüz bir notu yok çünkü kimya sınıfına yeni katıldı.

Katılımcıların %81'i bir eğitim kampına katıldıktan sonra teknik iş beklentileri konusunda kendilerini daha güvende hissettiklerini belirtti. Bugün bir eğitim kampı ile eşleşin.

Ortalama bir eğitim kampı mezunu, bir eğitim kampına başlamaktan ilk işini bulmaya kadar, kariyer geçişinde altı aydan daha az zaman harcadı.

Sonra, bir for döngüsü kullanın. öğrenci listemizdeki her öğrenciyi gözden geçirmek ve her öğrencinin aldığı en yüksek notu ve her öğrencinin ortalama notunu bulmak için:

öğrencilerde s için: en yüksek_grade = max(s["notlar"]) ortalama_grade = round(sum(s["notlar"]) / len(s["notlar"])) print( "{}'nin aldığı en yüksek not {}. Ortalama notları {}.".format(s["name"], en yüksek_grade, ortalama_grade))

< öğrencinin aldığı en yüksek notu bulmak için code>max() işlevi. Bir öğrencinin ortalama notunu hesaplamak için, tüm notlarının toplamını aldıkları notların sayısına böleriz.

< p>round() yöntemini kullanarak her öğrencinin ortalama notunu en yakın tam sayıya yuvarlarız.

Kodumuzu çalıştırın ve ne olduğunu görün:

Ron'un aldığı en yüksek not 92'dir. Ortalama notları 84'tür. Katy'nin aldığı en yüksek not 92. Ortalama notları 86'dır. Rachel'ın aldığı en yüksek not 72'dir. Ortalama notları 69'dur. Geri izleme (en son çağrı): Dosya "main.py", satır 10,  high_grade = max(s["grades"]) ValueError: max() arg boş bir dizidir

Kodumuz listemizdeki dördüncü öğeye ulaşana kadar başarıyla çalışır. Ron, Katy ve Rachel'ın en yüksek ve ortalama notlarını görebiliriz. Miranda için herhangi bir değer göremiyoruz.




Çözüm

Kodumuz ilk üç öğrenci üzerinde çalışıyor çünkü bu öğrencilerin her birinin en az bir not içeren bir not listesi var. Miranda'nın henüz notu yok. 

Miranda'nın notu olmadığından, max() işlevi yürütülemez. max() boş bir listedeki en büyük değeri bulamıyor.

Bu hatayı çözmek için, notları hesaplamaya çalışmadan önce her bir not listesinin herhangi bir değer içerip içermediğine bakın. bir listedeki en yüksek not. Bir liste değer içermiyorsa, kullanıcıya farklı bir mesaj göstermeliyiz.


Öğrencinin biz gerçekleştirmeden önce herhangi bir notu olup olmadığını kontrol etmek için bir “if” ifadesi kullanalım. herhangi bir hesaplama:

öğrencilerde s için: if len(s["grades"]) > ; 0: en yüksek_grade = max(s["grades"]) ortalama_grade = round(sum(s["grades"]) / len(s["grades"])) print("{}'nin kazandığı en yüksek not { }. Ortalama notları {}.".format(s["name"], en yüksek_grade, ortalama_grade)) else: print("{} herhangi bir not almadı.".format(s["name"])) 

Yukarıdaki kodumuz, yalnızca bir öğrencinin en yüksek ve ortalama notunu, eğer en az bir not almışsa hesaplayacaktır. Aksi takdirde, kullanıcı, öğrencinin herhangi bir not almadığı konusunda bilgilendirilir. Kodumuzu çalıştıralım:

Ron'un aldığı en yüksek not 92'dir. Ortalama notları 84'tür. Katy'nin aldığı en yüksek not 92'dir. Ortalama notları 86'dır. Rachel'ın aldığı en yüksek not 72. Ortalama notları 69'dur. Miranda herhangi bir not almamıştır.

Kodumuz ilk üç öğrencimizin en yüksek ve ortalama notlarını başarıyla hesaplamaktadır. Kodumuz Miranda'ya ulaştığında, kodumuz onun en yüksek ve ortalama notlarını hesaplamaz. Bunun yerine kodumuz bize Miranda'nın henüz herhangi bir not kazanmadığını bildirir.




Sonuç

“ValueError: max() argümanı boş bir dizidir&rdquo ; max() yöntemini kullanarak boş bir listedeki en büyük öğeyi bulmaya çalıştığınızda hata oluşur.

Bu hatayı çözmek için yalnızca listeleri geçtiğinizden emin olun. max() ifadesi aracılığıyla en az bir değerle. Artık bu sorunu profesyonel bir kodlayıcı gibi düzeltmek için ihtiyacınız olan bilgiye sahipsiniz!





eğer boş Python: StackOverflow Questions

Tutorials