Python unindent eşleşmiyor

Python işlevleri ve meth

Hem boşlukları hem de sekmeleri kullanmayı denerseniz, kodunuzu girintilemek karmaşık bir iş olabilir. Python'da, her iki girinti yöntemini kullanmak bir hataya neden olur. Bu hata, “indentasyon hatası: unindent, herhangi bir dış girinti düzeyiyle eşleşmiyor”.

Bu kılavuzda, bu hatanın ne anlama geldiği ve ne zaman ortaya çıktığı hakkında konuşuyoruz. Nasıl düzelteceğinizi öğrenmenize yardımcı olmak için bu hatanın bir örneğini uygulamalı olarak inceliyoruz.




indentationerror: unindent herhangi bir dış girinti düzeyiyle eşleşmiyor

Python kodu sekmeler veya boşluklarla girintili olabilir. Bu size kalmış.

Python yalnızca, kodunuzu girintilemek için hem boşlukları hem de sekmeleri kullandığınızda bir itirazda bulunur. Python, yalnızca bir girinti yöntemi kullanmanızı gerektirir. Bunun nedeni, dilin statik olarak yazılmasıdır. Statik olarak yazılan programlama dilleri, söz dizimi söz konusu olduğunda çok ısrarcıdır. 

Girinti hatalarını anlamak zordur, çünkü görünmeyen şeyleri içerir: boşlukları ve sekmeleri karıştırma. Kullanmakta olduğunuz kod düzenleyiciye bağlı olarak, kodunuzdaki girintilerinizi silene kadar boşlukların veya sekmelerin kullanılıp kullanılmadığını bile göremeyebilirsiniz.

Kod kopyaladığınızda IndentationError'lar yaygındır. internetten kesitler. Girinti söz konusu olduğunda her geliştiricinin kendi tercihi vardır ve genellikle kod parçacıklarının kendi tercihlerinize uymadığını görürsünüz. Bazı snippet'ler boşluklarla girintilenir.

Programınıza kopyaladığınız bir kod snippet'i farklı bir girinti türü kullanıyorsa, kodunuzda bir IndentationError görebilirsiniz. Bunun nedeni, sekmeleri ve boşlukları karıştırmanızdır.





Örnek Senaryo

Bir sayının çarpanlarını bulan bir program yazın.

Katılımcıların %81'i belirtti bir eğitim kampına katıldıktan sonra teknik iş beklentileri konusunda daha güvende hissettiler. Bugün bir eğitim kampına denk gelin.

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

Bir sayının çarpanlarını hesaplamak için bir fonksiyon tanımlayarak başlayın:

def get_factors(sayı): aralıktaki i için (1, sayı + 1): eğer sayı % i == 0: print("{} bir faktördür {}.".format(i, number))

Bu işlev, yineleme yapmak için bir for döngüsü kullanır 1 aralığındaki her sayı ve belirttiğimiz sayı artı 1
 

Her yinelemede, programımız “sayı” “i” tarafından. Bunu modulo operatörünü kullanarak yapıyoruz. Kalan yoksa, “i” “sayı”nın bir çarpanıdır.

Bir sayı, “sayı”nın bir çarpanıysa, konsola bir mesaj yazdırılır.

Biz fonksiyonumuzu çağırmak için:

get_factors(32)

Bu kod 32'nin tüm çarpanlarını hesaplar. Kodumuzu çalıştırın ve ne olduğunu görün:

 Dosya "test.py", satır 4 print("{}, {}.".format(i, sayı)) ^ IndentationError: unindent herhangi bir dış girinti düzeyiyle eşleşmiyor

Kodumuz bir IndentationError döndürür .

Kodumuzun stilinde bir hata yaptık. Bunu biliyoruz çünkü kodunuzun girintilenmesiyle ilgili bir sorun olduğunda IndentationErrors ortaya çıkıyor.

Kodumuzun stiline bir göz atın. Sublime Text'de, her satırın üzerine gelerek kodumuzun stillerini görebiliriz:

ZkT2zfCE1h22 Ldf RwNqSrZL9fUBLG vdcBcqh559l qY6dDanxnhIiihRf52m10qUKnPgFyT2uG6YxVF5MoRzAVitrOwbnF 04EUYhdD3dMZZXkO3aOERWcZYtYsJpOFu1rqun

Her çizgi bir sekme temsil eder. Her nokta bir boşluğu temsil eder. Kod parçacığımızda hem boşlukları hem de sekmeleri karıştırdığımızı görebilirsiniz. Python, girintilerdeki tutarlılığı sever ve bu nedenle kodumuzu çalıştırdığımızda yorumlayıcı bir hata döndürür.

Bu davranışı desteklemeyen bir metin düzenleyici kullanıyorsanız, kodunuzun boşluk mu yoksa sekme mi kullandığını kontrol edin. girintinizi geri almak. Geri al tuşuna bastığınızda kodunuz bir sekmeyi kaldırırsa, kodunuzun o kısmı sekmeleri kullanıyor demektir.


Boşluklar tercih edilir Python'da girinti yöntemi ama isterseniz sekmeleri kullanabilirsiniz.

Kodumuzu gözden geçirelim:

def get_factors(sayı): aralıktaki i için (1, sayı + 1): eğer sayı % i == 0: print("{}, {}'nin bir faktörüdür .".format(i, number))

Bütün boşlukları sekmelerle değiştirdik. Programımızı tekrar çalıştırın:

1 32'nin bir faktörüdür. 2, 32'nin bir faktörüdür. 4, 32'nin bir faktörüdür. 8, 32'nin bir faktörüdür. 16, 32'nin bir faktörüdür . 32, 32'nin bir faktörüdür.

Kodumuz, 32'nin tüm faktörlerinin bir listesini başarıyla döndürür. Bu bize, kodumuzun tüm mantıksal olarak doğru olduğunu gösterir. ong. Soruna neden olan bizim girintimizdi.




Sonuç

“indentationerror: unindent, herhangi bir dış girinti düzeyiyle eşleşmiyor” kodunuzu girintilemek için hem boşlukları hem de sekmeleri kullandığınızda hata oluşur.

Bu hatayı çözmek için, tüm kodunuzun bir programda boşluk veya sekme kullandığından emin olun. Artık bu yaygın Python hatasını profesyonel yazılım geliştiricisi!





Python unindent eşleşmiyor: StackOverflow Questions

Tutorials