Python dik

Python işlevleri ve meth

len() yöntemi yalnızca dizeler, listeler ve sözlükler gibi yinelenebilir nesneler üzerinde çalışır. Bunun nedeni, yinelenebilir nesnelerin değer dizileri içermesidir. Bir Yok değerinde len() yöntemini kullanmayı denerseniz, “TypeError: ‘NoneType’ türünde nesne hatasıyla karşılaşırsınız. len()” yok.

Bu kılavuzda, bu hatanın ne anlama geldiği ve nasıl çalıştığı hakkında konuşuyoruz. Kodunuzda nasıl çözeceğinizi bulabilmeniz için bu hatanın iki örneğini eylem halinde inceliyoruz.




TypeError: ‘NoneType’ türünde nesne. len() yok

NoneType, None veri türünü ifade eder. Hiçbiri değerinde len() gibi yinelenebilir nesneler üzerinde çalışacak yöntemleri kullanamazsınız. Bunun nedeni, Yok'un bir değerler koleksiyonu içermemesidir. Yok'un uzunluğu hesaplanamaz çünkü Yok'un alt değeri yoktur.

Bu hata iki durumda yaygındır:

  • Yapıldığını unuttuğunuz yer -in işlevler bir listeyi yerinde değiştirir
  • Bir işlevde bir dönüş ifadesini unuttuğunuz yer

Bu nedenlere derinlemesine bir göz atalım.




Neden 1: Yerleşik İşlevler Yerinde Listeleri Değiştiriyor

Bir okuldaki öğrenciler hakkında bilgi içeren sözlüklerin listesini sıralayan bir program oluşturacağız. Bu listeyi, öğrencinin son sınavında aldığı nota göre artan düzende sıralayacağız.

Başlamak için, öğrenciler ve en son sınav puanları hakkında bilgiler içeren bir sözlük listesi tanımlayın:

öğrenciler = [ {"name": "Peter", "puan": 76 }, {"name ": "Richard", "puan": 63 }, {"ad": "Erin", "puan": 64 }, {"ad": "Miley", "puan": 89 } ]

Her sözlük iki anahtar ve değer içerir. Biri öğrencinin adına, diğeri ise öğrencinin son sınavında aldığı puana karşılık gelir. Ardından, öğrenci listemizi sıralamak için sort() yöntemini kullanın:

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

Adı verilen bir işlev ilan ettik. “score_sort” hangi “score” her sözlükte. Daha sonra bunu sözlük listemizdeki öğeleri sort() yöntemini kullanarak sıralamak için kullanırız.


Sonra listemizin uzunluğunu yazdırıyoruz:

print("Listede {} öğrenci var.".format(len(sorted_students)))

For döngüsü kullanarak yeni sözlük listesini konsola yazdırıyoruz :

sorted_students için: print("{} son testlerinde {} puan aldı. ".format(s["name"], s["score"]))

Bu kod, bir öğrencinin son sınavında kaç puan kazandığını bize bildiren bir mesaj yazdırır. “sorted_students” listesindeki her öğrenci. Kodumuzu çalıştıralım:

Traceback ( en son çağrı son): Dosya "main.py", satır 13,  print("{} st var ".format(len(sorted_students))) TypeError: 'NoneType' türündeki nesnenin len() yok

Kodumuz bir hata döndürüyor.

Bu sorunu çözmek için sort() yönteminin sonucunu “sorted_students”'a atadığımız kodu kaldırmamız gerekiyor. Bunun nedeni, sort() yönteminin bir listeyi yerinde değiştirmesidir. Yeni bir liste oluşturmaz.

“sorted_students” listeleyin ve “öğrencileri” programımızın geri kalanında:

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

 Listede 4 öğrenci var. Richard, son testlerinde 63 puan aldı. Erin, son testlerinde 64 puan aldı. Peter, son testlerinde 76 puan aldı. Miley, son testinde 89 puan aldı.

Kodumuz başarıyla yürütülüyor. İlk olarak, kodumuz bize listemizde kaç öğrenci olduğunu söyler. Kodumuz daha sonra her öğrenci ve son testlerinde kaç puan kazandıkları hakkında bilgi yazdırır. Bu bilgi, öğrencinin notuna göre artan sırada yazdırılır.





Neden #2: Bir İade İfadesini Unutmak

Kodumuzu daha modüler hale getireceğiz.Bunu yapmak için sıralama yöntemimizi kendi işlevine taşıyacağız. ;Ayrıca, her öğrencinin sınavda aldığı puanla ilgili bilgileri yazdıran bir işlev tanımlayacağız.

Öğrenci listemizi ve sıralama yardımcı işlevimizi tanımlayarak başlayın. Bu kodu şu adresten ödünç alacağız: öğreticinin başlarında.

students = [ {"name": "Peter", "puan": 76 }, {"ad": "Richard", "puan": 63 }, {"ad": "Erin", "puan": 64 }, {"ad": "Miley", "puan": 89 } ] def score_sort(s): return s["score"]

Sonra, listemizi sıralayan bir fonksiyon yazın:

def sort_list(öğrenciler): Students.sort(key=score_sort)

Son olarak, her öğrenci’ performans:

def show_students(new_students): print("Listede {} öğrenci var .".format(len(students))) for new_students: print("{} son sınavlarında {} puan aldı.".format(s["name"], s["score"]) )

Kodumuzu çalıştırmadan önce fonksiyonlarımızı çağırmalıyız:

new_students = sort_list(students) show_students(new_students)

Programımız önce sort_list() işlevini kullanarak listemizi sıralayacaktır. Daha sonra programımız her öğrencinin bilgilerini konsola yazdıracaktır. Bu, show_students() işlevinde gerçekleştirilir.

Kodumuzu çalıştıralım:

İzleme (en son çağrı son): Dosya "main.py", satır 21,  show_students(new_students) Dosya "main.py", satır 15, in show_students print("Listede {} öğrenci var.".format(len(new_students))) TypeError: 'NoneType' türündeki nesnenin len( )

Kodumuz bir hata döndürüyor. Bu hata, bir “return” “sort_list” function.

sort_list() işlevimizi çağırdığımızda, yanıtını “new_students” değişkenine atarız. Bu değişken, her öğrenciyle ilgili bilgileri görüntüleyen show_students() işlevimize aktarılır. Bu hatayı çözmek için sort_list() işlevine bir geri dönüş ifadesi eklemeliyiz:

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

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

Kodumuzu çalıştırın:

Listede 4 öğrenci var. Richard, son testlerinde 63 puan aldı. Erin, son testlerinde 64 puan aldı. Peter, son testlerinde 76 puan aldı. Miley son testinde 89 puan aldı.

Kodumuz beklediğimiz yanıtı veriyor.





Sonuç

‘NoneType’ türündeki “TypeError: nesnesinde len()” hatası oluşmaya çalıştığınızda değeri Yok olan bir nesne üzerinde len() yöntemini kullanın.

Bu hatayı çözmek için, herhangi bir yerleşik öğenin yanıtlarını atamadığınızdan emin olun. bir değişkene sort() gibi yöntemleri listeleyin. Bu hatayı çözmezse, programınızın başarılı bir şekilde çalışması için gereken tüm “return” ifadelerine sahip olduğundan emin olun.

Artık bu sorunu bir Python uzmanı gibi çözmeye hazırsınız!





Python dik: StackOverflow Questions

Tutorials