Python int aralığı

Python işlevleri ve meth

range() yöntemi, parametre olarak yalnızca tamsayı değerlerini kabul eder. Bir dize değeriyle range() yöntemini kullanmaya çalışırsanız, “TypeError: ‘str’ nesne bir tamsayı olarak yorumlanamaz” error.

Bu kılavuz, bu hatayla neden karşılaşabileceğinizi ve ne anlama geldiğini açıklamaktadır. Bu sorunu anlamanıza ve programınızda düzeltmenize yardımcı olmak için örnek bir senaryoyu inceleyeceğiz.




TypeError: ‘str’ nesne bir tamsayı olarak yorumlanamaz

range() yöntemi, belirli bir aralıktaki değerlerin bir listesini oluşturur. Genellikle belirli sayıda yineleme çalıştırmak için bir for döngüsüyle birlikte kullanılır.

Yöntem yalnızca tamsayı değerlerini kabul eder argümanlar olarak. Bunun nedeni, range() öğesinin oluşturduğu değerlerin tamsayı olmasıdır. Aşağıdaki programı göz önünde bulundurun:

create_range = range(5, 10) for create_range: print (n)

Programımız konsola beş tamsayı yazdırır:

5 6 7 8 9

range() dizeleri kabul ederse, işlevin hangi sayı aralığının oluşturulması gerektiğini belirlemesi daha zor olurdu. Bu nedenle, her zaman tamsayıları bağımsız değişken olarak belirtmeniz gerekir. Yukarıdaki örnekte, argümanlarımız 5 ve 10 idi.




Örnek Senaryo

Bir pizza restoranının en çok satılanların adlarını ve fiyatlarını görüntülemesini sağlayan bir program oluşturacağız. Menülerinde popüler pizzalar. Başlamak için, programımızın çalışacağı bilgileri depolayan iki liste tanımlayın:

names = ["Pepperoni", "Margherita", "Ham and Pineapple", "Brie and Chive"] fiyatlar = [ 9.00, 8.40, 8.40, 9.50]

Bu listeler paraleldir ve bir pizzanın ne kadar popüler olduğuna göre sıralanır. Bu, listedeki belirli bir konumdaki değerlerin birbirine karşılık geldiği anlamına gelir. Örneğin, bir “Brie and Chive” pizza 9,50 dolar.

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 az zaman harcadı.

Sıradaki görevimiz sormaktır. kullanıcıya kaç tane pizza göstermek istediği. Bunu bir input() ifadesi:

to_display = input("Görüntülemek istediğiniz pizza sayısını girin: ")

Artık kullanıcının aradığı pizza sayısını biliyoruz bilgi için, her pizzayı ve fiyatını konsola yazdırmak için for döngüsü kullanabiliriz:

p in range(0, to_display): print("{} maliyeti ${}.".format(names[p], fiyatlar[p] ]))

Programımız, her pizzanın adını ve o pizzanın fiyatını içeren bir mesaj yazdırır. Döngümüz, bir kullanıcının konsola görüntülemesini istediği pizza sayısını yinelediğinde durur.

Programımızı çalıştıralım ve çalışıp çalışmadığını görelim:

Görüntülemek istediğiniz pizza sayısını girin: 2 Geri izleme (en son arama): Dosya "main.py ", satır 6,  p in range(0, to_display): TypeError: 'str' nesnesi bir tamsayı olarak yorumlanamaz

Programımız for döngüsünü tanımladığımız kod satırında bir hata döndürür.




Çözüm

Kullanıcının konsola girdiği değere bağlı olarak belirli aralıklarla çalışan bir for döngüsü oluşturduk.

Kodumuzla ilgili sorun, input() öğesinin bir tamsayı değil, bir dize döndürmesidir. Bu, range() ifademizin, izin verilmeyen bir dize kullanarak bir değer aralığı oluşturmaya çalıştığı anlamına gelir. Kodumuzun programımızda değerlendirdiği şey budur:

Bu hatayı düzeltmek için “to_display” bir tamsayıya. Bunu int() yöntemini kullanarak yapabiliriz:

aralıktaki p için (0, int(to_display)): print("{} maliyeti ${}.".format(names[p], fiyatlar[p]))

“to_display” artık bir tamsayıdır. Bu, bir sayı aralığı oluşturmak için değeri kullanabileceğimiz anlamına gelir. Kodumuzu çalıştıralım:

Görüntülemek istediğiniz pizza sayısını girin: 2 Pepperoni'nin fiyatı 9,0 dolar. Margherita'nın maliyeti 8,4 ABD dolarıdır.

Kodumuz, istediğimiz bilgileri başarıyla yazdırır. En popüler iki pizzanın adını ve bu pizzaların fiyatlarını görebiliriz.





Sonuç

“TypeError: ‘str’ nesnesi bir tamsayı olarak yorumlanamaz” hatası, bir öğesine argüman olarak bir dize ilettiğinizde ortaya çıkar. range() ifadesi. Bu hatayı düzeltmek için, range() ifadesinde kullandığınız tüm değerlerin tamsayı olduğundan emin olun.

Artık bir profesyonel gibi bu hatayı düzeltmek için ihtiyacınız olan bilgi!





Python int aralığı: StackOverflow Questions

Tutorials