Python Tutorials

Python’da TypeError: ‘float’ Nesnesi Tamsayı Olarak Yorumlanamaz Hatasının Giderilmesi

Spread the love

TypeError: 'float' object cannot be interpreted as an integer hatası, yaygın bir Python hatasıdır ve ondalıklı bir sayı (ondalıklı sayı) gerektiğinde tam sayı (tam sayı) kullanıldığında ortaya çıkar. Bu durum genellikle indeksleme, yineleme veya dizi manipülasyonu gibi tam sayı girdileri gerektiren fonksiyonlar veya işlemlerle olur.

Sorunun Anlaşılması

Python, veri tipleri arasında ayrım yapar. int, tam sayıları (ör. 10, -5, 0) temsil ederken, float ondalıklı sayıları (ör. 3.14, -2.5, 0.0) temsil eder. Birçok fonksiyon tam sayı gerektirir. Tam sayı gereken bir yerde ondalıklı sayı kullanmak bu hataya neden olur.

Yaygın Senaryolar ve Çözümler

  1. İndeksleme: Ondalıklı sayılar listeleri, demetleri veya dizeleri indeksleyemez.
  2. 
    my_list = [10, 20, 30]
    index = 1.5  # Yanlış: Ondalıklı sayı indeks olarak
    print(my_list[index])  # TypeError hatası verir
    

    Çözüm: int() kullanarak ondalıklı sayıyı tam sayıya dönüştürün. Bu, ondalık kısmı keser (yuvarlamaz).

    
    my_list = [10, 20, 30]
    index = int(1.5)  # 1.5'i 1'e dönüştürür
    print(my_list[index])  # Çıktı: 20
    
  3. Yineleme (range()): range(), başlangıç, bitiş ve adım için tam sayılara ihtiyaç duyar.
  4. 
    for i in range(0.0, 10.0): #Yanlış: range içinde ondalıklı sayı
        print(i) #TypeError hatası verir
    

    Çözüm: Tam sayılar kullanın.

    
    for i in range(0, 10):  # Doğru: tam sayılar
        print(i)
    
  5. Yerleşik Fonksiyonlar (len()): Daha az yaygın olsa da, uzunluğu hesaplamada kullanılan bir değişken ondalıklı sayıysa dolaylı olarak hata ortaya çıkabilir.
  6. 
    my_string = "hello"
    length = len(my_string) #Doğru
    float_length = 5.0
    #yanlış kullanım şöyle olurdu:
    #new_string = my_string[:float_length] #TypeError hatası verir
    
  7. Kütüphaneler ve Modüller: Üçüncü taraf kütüphanelerinin tam sayı girdileri bekleyen fonksiyonları olabilir. Dokümanlarını kontrol edin.
  8. Bilinçsiz Tip Dönüşümü: Bir hesaplama, daha sonra tam sayı gereken bir yerde kullanılan bir ondalıklı sayı üretebilir.
  9. 
    x = 5 / 2  # x 2.5 (ondalıklı sayı) olur
    my_list = [1, 2, 3]
    print(my_list[x])  # TypeError hatası verir
    

    Çözüm: Tam sayı bölmesi (//) kullanın:

    
    x = 5 // 2  # x 2 (tam sayı) olur
    my_list = [1, 2, 3]
    print(my_list[x])  # Çıktı: 3
    

Hata Ayıklama İpuçları

  • Yazdırma Komutları: Değişken değerlerini ve tiplerini kontrol etmek için print() kullanın.
  • Tip Kontrolü: type() kullanın: print(type(my_variable)).
  • Statik Analiz: Pylint gibi linters araçları yardımcı olabilir.

Bu nedenleri ve çözümleri anlayarak, bu hatayı çözebilir ve daha sağlam Python kodları yazabilirsiniz. Fonksiyonların ve işlemlerin beklenen veri tiplerini her zaman kontrol edin.

İçindekiler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir