Python çözme

Python işlevleri ve meth

Kayan nokta değerleri çağrılabilir değildir. Bunun nedeni, kayan noktaların sayısal değerleri depolamasıdır. Çağrıldıklarında belirli bir değer döndüren işlevler değildirler. Bir kayan nokta değerini bir işlevmiş gibi çağırmaya çalışırsanız, bir “TypeError: ‘float’ nesne çağrılabilir değil” error.

Bu kılavuzda, bu hatanın nasıl çalıştığını ve bunu neden kodunuzda bulabileceğinizi tartışıyoruz. Nasıl düzelteceğinizi öğrenmenize yardımcı olmak için örnek bir senaryo üzerinden ilerliyoruz.




TypeError: ‘float’ nesne çağrılamaz

Bir dizi parantez, bir işlev çağrısını belirtir. Bir işlev çağrısı, bir işlevin içeriğinin çalıştırılması talimatını verir. Yalnızca işlevler çağrılabilir. Kayan noktalar gibi diğer değerler değer döndürmez ve bu nedenle çağrılamaz.

“TypeError: ‘float’ nesne çağrılabilir değil” parantez içinde bir kayan nokta değeri izlerseniz hata oluşur. Bu, aşağıdaki durumlarda gerçekleşebilir:

  • Bir değişkeni “float” ve kodunuzda daha sonra float() işlevini kullanmayı deneyin.
  • Matematiksel bir problemde bir işleneni unutuyorsunuz.

Bu potansiyellerin her ikisine de bakalım. ayrıntılı senaryolar.




Senaryo 1: Bir Değişkeni Adlandırma “float”

Bir restoranda bekleme personelinin her bir üyesinin alacağı ipuçlarını hesaplayan bir program yazalım . Restoran tüm bahşişleri eşit olarak böler.

Kullanıcıdan programa, input() yöntemi:

staff_working = input("Bugün kaç personel çalışıyordu? ") float = float(input("Bahşişlerde ne kadar kazanıldı? "))

Sonra bir matematik denklemi ipuçlarında:

Katılımcıların %81'i teknolojilerinden daha emin hissettiklerini belirtti Bir eğitim kampına katıldıktan sonra iş olanakları. 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 az zaman harcadı.

Her birinin aldığı miktarı yuvarlarız. bahşişlerde her bir personel üyesine verebileceğimiz parasal bir değere sahip olmamız için personel iki ondalık basamaktan oluşmaktadır. Bu yuvarlatılmış tutarı konsola yazdırıyoruz. Ardından, kodumuzu çalıştırın ve ne olduğunu görün:

Bugün kaç personel çalışıyordu? 7 Bahşişlerde ne kadar kazanıldı? 300 Geri İzleme (en son yapılan arama): Dosya "main.py", satır 5,  rounded = round(staff_due, 2) TypeError: 'float' nesnesi çağrılabilir değil

Kodumuz bir hata veriyor. Bunun nedeni, “float” adlı bir değişkene bir kayan nokta değeri atamış olmamızdır. Kodumuzun ilerleyen bölümlerinde, bir değeri bir kayan nokta değerine dönüştürmek için float() işlevini kullanmayı deneyeceğiz. Çünkü “float” sayısal bir değer, kodumuz float() işlevini çağıramaz.


Bu sorunu çözmek için, “float” değişkenimizi yeniden adlandırmamız gerekiyor:

staff_working = input("Bugün kaç personel çalışıyordu? ") gain_in_tips = float(input("Bahşişlerde ne kadar kazanıldı?")) staff_due = kazanılan_in_tips / float(staff_working) yuvarlandı = round(staff_due, 2) print(rounded)

değişkeni “float” olarak “ Kazanılan_in_tips”. Kodumuzu çalıştıralım:

Bugün kaç personel çalışıyordu? 7 Nasıl bahşişlerde ne kadar kazanıldı? 300 42.86

Kodumuz başarılı bir şekilde çalışıyor. Bekleyen personelin her üyesine 42.86$ bahşiş ödenmesi gerekiyor.




Senaryo 2: Eksik Matematiksel Operatör

T “TypeError: ‘float’ nesne çağrılabilir değil” hata genellikle eksik bir matematik operatörüne bağlı olabilir.

Restoran, bir günde kazanılan tüm bahşişlere %5'lik bir artış uygulayan bir bonus programı sunuyor. Bu, bekleme personelinin topladıkları bahşiş miktarına bağlı olarak gün sonunda daha fazla para kazanacağı anlamına gelir.

Bu artışı hesaba katmak için hesaplama formülümüzü gözden geçirmemiz gerekiyor. personele verilmesi gereken ipuçları:

staff_working = input("Kaç personel bugün çalışıyor muydun? ") kazanılan_in_tips = float(input("Bahşişlerde ne kadar kazanıldı?"))) staff_due = 1,05 (earned_in_tips / float(staff_working)) rounded = round(staff_due, 2) print(yuvarlak)

Kodumuz, bahşişlerde ne kadar kazanıldığını çalışan personel sayısına bölerek her bir personelin ödenmesi gereken tutarı hesaplar. Her bir personel üyesi için ödenmesi gereken toplam bahşişlerde %5'lik bir artış hesaplamak için bunu 1,05 ile çarpıyoruz. Kodumuzu çalıştıralım:

Bugün kaç personel çalışıyordu? 7 Bahşişlerde ne kadar kazanıldı? 300 Geri İzleme (en son yapılan arama): Dosya "main.py", satır 4,  staff_due = 1.05 (earned_in_tips / float(staff_working)) TypeError: 'float' nesnesi çağrılabilir değil

Bir hatayla karşılaşıyoruz. Bunun nedeni, kodumuzda bir matematiksel operatörü unutmuş olmamızdır. 1.05'i hemen bir parantez seti takip eder. Python bunu 1.05 değerinde bir işlev çağrısı olarak ele alır. “personel_due” formül bir çarpma işareti (*) içermelidir:

staff_due = 1.05 * (earned_in_tips / float( staff_working))

Yeni kodumuz 1,05 değerini ve matematik denklemimizin sonucunu parantez içinde bir çarpma işaretiyle ayırıyor. Kodumuzu çalıştıralım:

Bugün kaç personel çalışıyordu? 7 Bahşişlerde ne kadar kazanıldı? 300 45.0

Bekleme personelinin her bir üyesinin bahşiş potundan 45.00$ alma hakkı vardır. Buna restoranın çalışanlarına sunduğu %5 bonus dahildir.





Sonuç

"TypeError: ‘float’ nesnesi çağrılabilir değil” bir kayan noktalı sayıyı function.

Bu sorunu, float() işlevini kullanmadan önce herhangi bir değişkene “float” ad vermediğinizden emin olarak çözebilirsiniz. sorunu çözün, kodunuzun tüm doğru matematiksel işlenenleri içerdiğinden emin olun.

Artık bu yaygın Python hatası!





Python çözme: StackOverflow Questions

Tutorials