Ketika saya mengkompilasi kode Python di bawah ini, saya mengerti
IndentationError: unindent tidak cocok dengan level indentasi luar mana pun
import sys
def Factorial(n): # Return factorial
result = 1
for i in range (1,n):
result = result * i
print "factorial is ",result
return result
Mengapa?
python
indentation
cbrulak
sumber
sumber
View > Indentation > Intent Using Spaces
Jawaban:
Poster lain mungkin benar ... mungkin ada ruang yang tercampur dengan tab Anda. Coba lakukan pencarian & ganti untuk mengganti semua tab dengan beberapa spasi.
Coba ini:
sumber
PENTING : Spasi adalah metode yang lebih disukai - lihat PEP008 Lekukan dan Tab atau Spasi? . (Terima kasih kepada @Siha untuk ini.)
Untuk
Sublime Text
pengguna:Setel
Sublime Text
untuk menggunakan tab untuk lekukan:View
->Indentation
->Convert Indentation to Tabs
Hapus centang
Indent Using Spaces
opsi juga di sub-menu yang sama di atas. Ini akan segera menyelesaikan masalah ini.sumber
Untuk dengan mudah memeriksa masalah dengan tab / spasi Anda sebenarnya dapat melakukan ini:
atau Anda dapat mengatur editor dengan benar tentu saja :-)
sumber
Apakah Anda yakin tidak mencampur tab dan spasi di spasi putih indentasi Anda? (Itu akan menyebabkan kesalahan itu.)
Catatan, Anda disarankan tidak menggunakan tab dalam kode Python. Lihat panduan gaya . Anda harus mengonfigurasi Notepad ++ untuk menyisipkan spasi untuk tab.
sumber
Setiap kali saya menemukan kesalahan ini, itu karena saya entah bagaimana mencampur tab dan spasi di editor saya.
sumber
Jika Anda menggunakan editor IDLE Python, Anda dapat melakukan seperti yang disarankan dalam salah satu pesan kesalahan serupa:
1) pilih semua, misalnya Ctrl+A
2) Buka Format -> Wilayah Untabify
3) Periksa kembali indentasi Anda masih benar, simpan dan jalankan kembali program Anda.
Saya menggunakan Python 2.5.4
sumber
Jika Anda menggunakan Vim, tekan escape dan ketik
gg = G
Auto ini membuat semua indentasi dan menjernihkan semua ruang yang Anda masukkan.
sumber
Baris:
result = result * i
harus di indentasi (ini adalah badan for-loop).Atau - Anda memiliki ruang campuran dan karakter tab
sumber
Di Atom
pergi ke
Kemudian periksa lagi lekukan file Anda:
atau
sumber
Tampaknya menjadi masalah lekukan. Anda tidak harus mencocokkan kurung keriting dengan Python tetapi Anda harus harus mencocokkan tingkat lekukan.
Cara terbaik untuk mencegah masalah ruang / tab adalah menampilkan karakter yang tidak terlihat dalam editor teks Anda. Ini akan memberi Anda cara cepat untuk mencegah dan / atau menyelesaikan kesalahan terkait lekukan.
Juga, menyuntikkan kode yang disalin adalah sumber umum untuk jenis masalah ini.
sumber
Jika Anda menggunakan notepad ++, lakukan "ganti" dengan mode pencarian diperluas untuk menemukan \ t dan ganti dengan empat spasi.
sumber
untuk Pengguna Atom,
Packages ->whitspace -> remove trailing whitespaces
ini bekerja untuk sayasumber
Hanya tambahan. Saya memiliki masalah yang sama dengan kedua lekukan di Notepad ++.
Tingkat Indentasi Luar
Buka ----> Cari tab ----> ketuk ganti ----> tekan tombol radio Diperpanjang bawah ---> Sekarang ganti \ t dengan empat spasi
Buka ----> Cari tab ----> ketuk ganti ----> tekan tombol radio Diperpanjang di bawah ---> Sekarang ganti \ n dengan apa-apa
sumber
Saya menggunakan notebook Jupyter dan mencoba hampir semua solusi di atas (beradaptasi dengan skenario saya) untuk tidak digunakan. Saya kemudian pergi baris demi baris, menghapus semua spasi untuk setiap baris dan diganti dengan tab. Itu memecahkan masalah.
sumber
Untuk pengguna Spyder goto Source> Fix Indentation untuk segera memperbaiki masalah tersebut
sumber
Bisa jadi karena fungsi di atasnya tidak lekukan dengan cara yang sama. yaitu
sumber
Saya memiliki masalah yang sama kemarin, itu kesalahan lekukan, menggunakan editor teks luhur. Butuh berjam-jam saya mencoba memperbaikinya dan pada akhirnya saya menyalin kode ke editor teks VI dan itu bekerja dengan baik. ps python terlalu sensitif spasi, pastikan untuk tidak mencampur ruang dan tab.
sumber
Karena saya menyadari tidak ada jawaban khusus untuk
spyder
, saya akan menambahkan satu: Pada dasarnya, hati-hati melihatif
pernyataan Anda dan pastikan semuaif
,elif
danelse
memiliki jarak yang sama yaitu mereka berada di baris yang sama di awal seperti:sumber
Saya memiliki fungsi yang ditentukan, tetapi tidak memiliki konten apa pun selain dari komentar fungsinya ...
Teriaknya:
(perhatikan bahwa garis tersebut
^
ditunjukkan tanda kosong)-
Beberapa solusi:
1: Cukup komentari fungsinya
2: Tambahkan komentar fungsi
3: Tambahkan baris yang tidak melakukan apa-apa
Bagaimanapun, pastikan untuk membuatnya jelas mengapa ini adalah fungsi kosong - untuk Anda sendiri, atau untuk rekan-rekan Anda yang akan menggunakan kode Anda
sumber
Pertama, hanya untuk mengingatkan Anda ada kesalahan logis Anda lebih baik menjaga hasil = 1 atau output Anda akan menjadi hasil = 0 bahkan setelah loop berjalan.
Kedua, Anda dapat menulis seperti ini:
Meninggalkan sebuah baris akan memberi tahu shell python bahwa pernyataan FOR telah berakhir. Jika Anda memiliki pengalaman menggunakan shell python maka Anda dapat memahami mengapa kami harus meninggalkan garis.
sumber
Untuk apa nilainya, dokumen saya terlalu banyak indentasi dan ini juga melemparkan kesalahan yang sama
IndentationError: unindent does not match any outer indentation level
sumber
Ini karena ada perpaduan tab dan spasi. Anda dapat menghapus semua spasi dan menggantinya dengan tab.
Atau, Coba tulis ini:
di awal kode. Baris ini menyelesaikan perbedaan antara tab dan spasi.
sumber
dalam kasus saya, masalahnya adalah konfigurasi pydev di Eclipse
sumber
Jika Anda menggunakan editor Komodo, Anda dapat melakukan seperti yang disarankan di salah satu pesan kesalahan serupa:
1) pilih semua, mis. Ctrl + A
2) Buka Kode -> Wilayah Untabify
3) Periksa kembali indentasi Anda masih benar, simpan dan jalankan kembali program Anda.
Saya menggunakan Python 3.4.2
sumber
Jika Anda menggunakan teks Sublime untuk pengembangan python, Anda dapat menghindari kesalahan dengan menggunakan paket Anaconda. Setelah menginstal Anaconda,
sumber
Di intellij dengan plugin python, Ctrl + Shift + Alt untuk memformat ulang dokumen memperbaiki masalah indent / tab / spasi
sumber
Untuk pengguna SPYDER : Saya menggunakan spyder 3.3.2 dengan python 3.7.1 dan saya memecahkan ini, mengatur lekukan untuk menggunakan tab, dengan langkah-langkah berikut, klik pada:
Lalu saya setel ulang baris "tak dikenal" menggunakan tombol tab.
Untuk beberapa alasan, tanpa pengaturan ini, saya mendapatkan hantu IndentationError kadang-kadang.
sumber
Sebagai contoh:
Dalam kode ini situasi yang sama terjadi pada saya. Hapus saja spasi indentasi sebelumnya pada baris 2 dan 3, lalu gunakan tab atau spasi. Jangan pernah gunakan keduanya . Berikan lekukan yang tepat saat menulis kode dengan python. Untuk Sumber goto Spyder> Perbaiki Indentasi. Hal yang sama berlaku untuk Kode VC dan teks luhur atau editor lainnya. Perbaiki indentasi.
sumber
Ini terjadi terutama karena editor. Coba ubah tab ke spasi (4). IDE atau Editor python terbaik adalah pycharm, sublim, vim untuk linux.
bahkan saya juga pernah mengalami masalah yang sama, kemudian saya menemukan bahwa ada masalah pengkodean. Saya sarankan Anda juga mengubah editor Anda.
sumber