Python değer hatası

Python işlevleri ve meth

Python çantaları iyi açmıyor. “değer hatası: paketinden çıkarılacak çok fazla değer (beklenen 2)” hatasını görmeniz, Python'un bir bavulu açtığı anlamına gelmez. Bu, bir yineleyiciden çok fazla değere erişmeye çalıştığınız anlamına gelir.

Bu kılavuzda, bu hatanın ne anlama geldiği ve neden ortaya çıktığı hakkında konuşuyoruz. Nasıl çözeceğinizi öğrenebilmeniz için bu hatayı içeren örnek bir kod parçası üzerinden geçiyoruz.




Sorun: valueerror: paketten çıkarılacak çok fazla değer (beklenen 2)

ValueError: var olmayan bir değerden bilgiye erişmeye çalıştığınızda ortaya çıkar. Değerler, bir liste, bir dize veya sözlük gibi herhangi bir nesne olabilir.

Şuna bir göz atalım. hata mesajımız:

valueerror: paketini açmak için çok fazla değer (beklenen 2)

Python'da, “unpacking” bir değerden öğelerin alınmasını ifade eder. Örneğin, bir listeden öğelerin alınmasına “paket açma” o liste. İçeriğini görüntüler ve her bir öğeye tek tek erişirsiniz.

Yukarıdaki hata mesajı, bir değerden çok fazla değeri açmaya çalıştığımızı söylüyor. 

Genellikle bu hataya neden olan iki hata vardır:

Bu senaryoların her birine ayrı ayrı bakıyoruz.

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

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ı.

Yinelemeye çalışalım. bir sözlük üzerinden. Üzerinde tekrar edeceğimiz sözlük, periyodik tablodaki bir element hakkında bilgi depolayacaktır. Önce sözlüğümüzü tanımlayalım:

hidrojen = { "name": "Hidrojen" , "atomic_weight": 1.008, "atomic_number": 1 }

Sözlüğümüzün üç anahtarı ve üç değeri vardır. Tuşlar iki nokta üst üste işaretinin solundadır; değerler kolonların sağındadır. Hem anahtarları hem de değerleri konsola yazdırmak istiyoruz. Bunu yapmak için bir for döngüsü kullanırız:

anahtar, hidrojendeki değer: print( "Key:", key) print("Value:", str(value))

Bu döngüde “hidrojen” iki değere: anahtar ve değer. “anahtar” sözlüğümüzdeki tuşlara ve “değer” değerlere karşılık gelecek.


Kodumuzu çalıştıralım ve ne olduğunu görelim:

< ön>İzleme (en son çağrı son): Dosya "main.py", satır 8, anahtar için 'de, hidrojen cinsinden değer: ValueError: paketinden çıkarılacak çok fazla değer (beklenen 2)

Kodumuz bir hata döndürüyor.

Bunun nedeni, “hidrojen” sözlüğündeki her öğenin bir değer olmasıdır. Anahtarlar ve değerler, sözlükte iki ayrı değer değildir.

Bu hatayı items() adlı bir yöntem kullanarak çözüyoruz. Bu yöntem bir sözlüğü analiz eder ve anahtarları döndürür ve değerler demet olarak depolanır. Bu yöntemi kodumuza ekleyelim:

Şimdi kodumuzu yeniden çalıştırmayı deneyelim:

Anahtar: isim Değer: Hidrojen Anahtar: atomic_weight Değer: 1.008 Anahtar: atomic_number Değer: 1

items() yöntemini ekledik "hidrojen"in sonuna kadar. Bu, tuple olarak depolanan anahtar/değer çiftleriyle sözlüğümüze döner. Bunu, hidrogen.items() içeriğini konsola yazdırarak görebiliriz:

print(hidrogen.items())

Kodumuz şunu döndürür:

dict_items([('ad', 'Hidrojen'), ('atomik_ağırlık', 1.008), ('atomik_sayı', 1)])
< p>Her anahtar ve değer kendi tanımlama grubunda saklanır.

Python 2.x için bir Not

Python 2.x, items() yerine iteritems() kullanırsınız. Bu, önceki örnekte elde ettiğimiz sonucun aynısını elde eder. items() yöntemine Python 2.x'te hâlâ erişilebilir. 

anahtar için, hidrojen.iteritems() içindeki değer: print("Anahtar:", anahtar) print("Değer:", str(değer))

Yukarıda, biz items() yerine iteritems() kullanın. Kodumuzu çalıştıralım:

Anahtar: isim Değer: Hidrojen Anahtar: atomic_weight Değer: 1.008 Anahtar: atomic_number Değer: 1

Anahtarlarımız ve değerlerimiz “hidrojen” sözlük. Bu, her anahtarı ve değeri konsola ayrı ayrı yazdırmamızı sağlar.

Python 2.x kullanımdan kaldırılmaya başlıyor. Mümkün olduğunda daha modern yöntemler kullanmak en iyisidir. Bu, items() öğesinin genellikle iteritems() yerine tercih edildiği anlamına gelir.




Örnek: Değerleri Bir Değişkene Açma

bir listeyi bir değişkene açmak için, liste öğelerini açtığınız değişkenlerin sayısı listedeki öğelerin sayısına eşit olmalıdır. Aksi takdirde bir hata döndürülür.


Yerel bir donut mağazasında donut fiyatlarını saklayan kayan noktalı sayıların bir listesi var:< /p>

donuts = [2.00, 2.50, 2.30, 2.10, 2.20]

Bu değerleri kendi değişkenlerine açıyoruz.Bu değerlerin her biri mağaza tarafından satılan aşağıdaki donutlara karşılık geliyor:

"Python.Engineering hayatıma en çok ihtiyacım olduğu anda girdi ve hızlı bir şekilde eşleştirmeme yardımcı oldu. bir bootcamp ile. Mezun olduktan iki ay sonra, hayattaki değerlerim ve hedeflerime uygun hayalimdeki işi buldum!"

Venus, Rockbot'ta Yazılım Mühendisi

< p>Listemizi dört değişkene ayırıyoruz. Bu, her fiyatı kendi değişkeninde saklamamıza izin veriyor. Listemizi açalım:

raspberry_jam, double_chocolate, cream_cheese, blueberry = [2.00, 2.50, 2.30, 2.10, 2.20] print(blueberry)

Bu kod listemizi şu şekilde açar: dört değişken.Her değişken farklı bir halkaya karşılık gelir.Kodumuzun çalışıp çalışmadığını kontrol etmek için “yabanmersini” değerini konsola yazdırıyoruz.Kodumuzu çalıştırın ve ne olduğunu görün:

Geri izleme (en son çağrı son): Dosya "main.py", satır 1,  raspberry_jam, double_chocolate, cream_cheese, blueberry = [2.00, 2.50, 2.30, 2.10, 2.20] ValueError: çok fazla değer s to unpack (beklenen 4)

Dört değeri açmaya çalışıyoruz, listemiz beş değer içeriyor. Python, değişkenlerimize hangi değerleri atayacağını bilmiyor çünkü sadece dört değeri açıyoruz. Bu bir hataya neden olur.

Listemizdeki son değer çikolatalı çörek fiyatıdır. Listeyi açmak için başka bir değişken belirleyerek hatamızı çözüyoruz:

raspberry_jam, double_chocolate, cream_cheese, blueberry, çikolata = [2.00, 2.50, 2.30, 2.10, 2.20] print(yabanmersini)

Kodumuz şunu döndürür: 2.1. Kodumuz, listemizdeki değerleri başarıyla açar.




Sonuç

“değer hatası: paketi açmak için çok fazla değer (beklenen 2)” hata, bir listedeki tüm öğeleri paketinden çıkarmadığınızda oluşur.

Bu hataya genellikle bir sözlükteki öğeler üzerinde yineleme yapmaya çalışmak neden olur. Bu sorunu çözmek için, bir sözlük üzerinde yineleme yapmak için items() yöntemini kullanın.


Diğer bir yaygın neden, yeterli değişken atamadan çok fazla değeri değişkenlere açmaya çalışmanızdır. unpacked, listedeki öğe sayısına eşittir.

Artık bu Python hatasını kodlama ninjası gibi çözmeye hazırsınız. !





Python değer hatası: StackOverflow Questions

Tutorials