python dize biçimlendirme sırasında dönüştürülen tüm argümanlar değil

Python işlevleri ve meth

Python, kurallar konusunda titizdir. Python dilinin ana özelliklerinden biri, programlarınızın istediğiniz şekilde çalışması için sizi kontrol altında tutar. “Dize biçimlendirme sırasında tüm bağımsız değişkenler dönüştürülmedi” diyen bir hatayla karşılaşabilirsiniz. dizelerle çalışırken.

Bu kılavuzda, bu hata ve neden ortaya çıktığı hakkında konuşuyoruz. Kodunuzda bu hatayı çözmenize yardımcı olmak için bu hatanın ortaya çıktığı iki yaygın senaryoyu inceliyoruz.

Daha fazla uzatmadan başlayalım!




Sorun: typeerror : dize biçimlendirme sırasında dönüştürülen tüm bağımsız değişkenler değil

TypeError, belirli bir türdeki bir değerde yürütülemeyen bir görev gerçekleştirdiğimizi söyleyen bir hata türüdür. Bu durumda, yazım hatamız bir dize değeriyle ilgilidir.

Python, dizeleri. Bu, değerleri dizelere eklemenize veya değerleri bir dizenin sonuna bitiştirmenize olanak tanır.

Formatlamanın en yaygın iki yolu dizeler şunlardır:

  • % operatörünü kullanma (eski stil)
  • .format() işleviyle {} operatörünü kullanma

Bu sözdizimlerinin ikisini birlikte kullanmaya çalıştığınızda bir hata oluşur.




Örnek: Dize Biçimlendirme Kurallarını Karıştırma

Bir yazı yazalım. Bir fırında satılan bir üründe %5'lik bir fiyat artışı hesaplayan program.

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

İki parça toplayarak başlıyoruz. kullanıcıdan gelen bilgiler: ürünün adı ve ürünün fiyatı. Bunu bir input() ifadesi kullanarak yapıyoruz:

name = input("Ürünün adını giriniz: ") price = input("Ürünün fiyatını giriniz: ")

Ardından yeni fiyatı hesaplıyoruz ürünün “fiyat” 1.05'e kadar. Bu, %5'lik bir fiyat artışını temsil eder:

increase = round(float(fiyat) * 1.05, 2)

“increase” round() ifadesi kullanarak iki ondalık basamağa kadar. Son olarak, ürünün yeni fiyatını konsola yazdırmak için dize biçimlendirmesini kullanın:

print("The {} yeni fiyatı ${}. " % name, str(increase))

Bu kod, “name” ve “arttır” bizim dize içine. “artır” dizgemizle birleştirmek için bir dizgeye. Değeri dönüştürmeden önce, “increase” kayan noktalı bir sayıdır. Kodumuzu çalıştırın ve ne olduğunu görün:

Geri izleme (en son çağrı): Dosya "main.py" , satır 6,  print("{} ürününün yeni fiyatı {}" % ad, str(indirim)) TypeError: dize biçimlendirme sırasında tüm bağımsız değişkenler dönüştürülmedi

Görünüşe göre sonuncusunda bir hata var kodumuzun satırı.


Sorun şu ki, dize biçimlendirme sözdizimimizi karıştırdık. {} ve % operatörlerini kullandık. Bunlar iki farklı dize biçimlendirme türü için kullanılır.

Bu sorunu çözmek için, programlamamızın son satırını aşağıdaki iki kod satırından biriyle değiştiriyoruz:

İlk kod satırı .format() sözdizimini kullanır. Bu, {} değerlerini, belirtildikleri sırayla .format() ifadesindeki değerlerle değiştirir.

İkinci kod satırı eski- stil % dize biçimlendirme tekniği. “%s” değerleri, % operatöründen sonra parantez içine alınan değerlerle değiştirilir.

Kodumuzu yeniden çalıştıralım ve ne olduğunu görelim:< /p>

Ürünün adını girin: Babka Ürünün fiyatını girin: 2 .50 Babka'nın yeni fiyatı 2,62$.

Kodumuz argümanlarımızı dizimize başarıyla ekledi.




Örnek: Modulo Operatörünü Karıştırmak

Python, modulo sayılarını ve dize biçimlendirmesini hesaplamak için yüzde işaretini (%) kullanır. Modulo sayıları, bir bölme toplamından sonra kalanlardır.

Yüzde işaretini bir dizede kullanırsanız, biçimlendirme için kullanılır; yüzde işaretini bir sayı üzerinde kullanırsanız, moduloyu hesaplamak için kullanılır. Bu nedenle, bir değer, modülo hesaplaması yapmak istediğiniz bir dize olarak biçimlendirilirse, bir hata oluşur.

Bir sayının tek mi çift mi olduğunu hesaplayan bir programa bakın. :

number = input("Lütfen bir sayı giriniz: ") mod_calc = mod_calc == ise sayı % 2 0: print("Bu sayı çifttir.") else: print("Bu sayı tektir.")

Önce kullanıcıdan bir sayı girmesini isteriz. Ardından, “number” 2'ye bölünür


Modulo operatörü tarafından döndürülen değer 0'a eşitse, if deyimimizin içeriği yürütülür. Aksi takdirde, else< içeriğinin içeriği /code> ifadesi çalışır.

Kodumuzu çalıştıralım:

Lütfen bir sayı girin: 7 Geri İzleme (en son çağrı): Dosya "main.py", satır 2,  mod_calc = sayı % 2 TypeError: dize biçimlendirme sırasında tüm bağımsız değişkenler dönüştürülmez

Başka bir TypeError. Bu hata, “number” bir dize olduğu için ortaya çıktı. input() yöntemi bir dize döndürür. “number” öğesini bir kayan noktaya dönüştürmemiz gerekiyor veya bir modülo hesaplaması yapmak istiyorsak bir tamsayı.

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

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

< p>float() işlevini kullanarak “number”'ı bir float'a dönüştürebiliriz:

mod_calc = float(number) % 2

Kodumuzu tekrar çalıştırmayı deneyelim:

Lütfen bir sayı girin: 7 Bu sayı tek.

Kodumuz çalışıyor!




Sonuç

“not dize biçimlendirme sırasında dönüştürülen tüm argümanlar” Python bir dize biçimlendirme işlemine tüm argümanları eklemediğinde hata oluşur. Bu, dize biçimlendirme sözdiziminizi karıştırırsanız veya bir dize üzerinde modulo işlemi gerçekleştirmeye çalışırsanız olur.

Artık bu yaygın Python hatasını p gibi çözmeye hazırsınız. profesyonel yazılım mühendisi!





python dize biçimlendirme sırasında dönüştürülen tüm argümanlar değil: StackOverflow Questions