Saya mencoba membuat aplikasi dengan Python 3.2 dan saya menggunakan tab setiap saat untuk indentasi, tetapi bahkan editor mengubah beberapa dari mereka menjadi spasi dan kemudian mencetak "penggunaan tab dan spasi yang tidak konsisten dalam indentasi" ketika saya mencoba menjalankan program.
Bagaimana saya bisa mengubah spasi menjadi tab? Ini membuatku gila. (Saya seorang pemula dalam pemrograman). Saya akan senang jika saya bisa mendapatkan beberapa tips tentang kode saya secara keseluruhan, jika saya telah melakukan banyak kesalahan saya akan senang mendengarnya.
import random
attraktioner = ["frittfall","bergodalbana","spökhuset"]
class Nojesfalt:
def __init__(self, attraktion):
self.val = attraktion
self.langd = 0
self.alder = 0
#längdgräns för fritt fall
def langdgrans(self):
print("")
self.langd = int(input("Hur lång är du i cm? "))
if self.langd < 140:
print("tyvärr, du är för kort, prova något annat")
return 0
elif self.langd >= 140:
print("håll dig hatten, nu åker vi!")
print(" ")
return 1
#åldersgräns för spökhuset
def aldersgrans(self):
print("")
self.alder = int(input("Hur gammal är du? "))
if self.alder < 10:
print("tyvärr, du är för ung, prova något annat")
return 0
elif self.alder >= 10:
print("Gå in om du törs!")
print(" ")
return 1
#åker attraktion frittfall lr bergodalbana
def aka(self):
print("")
print(self.val)
tal = random.randint(0,100)
if tal < 20:
print("åkturen gick åt skogen, bättre lycka nästa gång")
elif tal >= 20:
print("jabbadabbbadoooooooo")
return 1
#går i spökhuset
def aka1(self):
print("")
print(self.val)
tal = random.randint(0,100)
if tal < 20:
print("du är omringad av spöken och kan inte fortsätta") return 0
elif tal >= 20:
print("Buhuuuuuu, buuuhuuuu")
return 1
#programkod
print("Välkommen till nöjesfältet, vad vill du göra?")
print(" ")
while 1:
vald_attr = input("Vad vill du göra?\n1. frittfall\n2. bergodalbana\n3. spökhuset\n4. Avsluta\n")
if vald_attr == "1":
val = Nojesfalt(attraktioner[0])
if val.langdgrans() == 1:
val.aka()
elif vald_attr == "2":
val = Nojesfalt(attraktioner[1])
val.aka()
elif vald_attr == "3":
val = Nojesfalt(attraktioner[2])
if val.aldersgrans() == 1:
val.aka1()
elif vald_attr == "4":
break
Jawaban:
Jangan gunakan tab.
Catatan: Alasan 8 spasi untuk tab adalah agar Anda segera mengetahui kapan tab telah dimasukkan secara tidak sengaja - seperti saat menyalin dan menempel dari kode contoh yang menggunakan tab alih-alih spasi.
sumber
Menggunakan
autopep8
perintah di bawah ini untuk saya:Dokumentasi untuk
autopep8
ditautkan di sini.sumber
Dengan editor IDLE Anda dapat menggunakan ini:
sumber
Jika Anda menggunakan Sublime Text untuk pengembangan Python, Anda dapat menghindari kesalahan dengan menggunakan paket Anaconda. Setelah menginstal Anaconda, buka file Anda dalam Sublime Text, klik kanan pada ruang terbuka → pilih Anaconda → klik pada autoformat. Selesai . Atau tekan Ctrl+ Alt+ R.
sumber
Secara umum, orang lebih suka indentasi dengan ruang. Ini lebih konsisten di seluruh editor, menghasilkan lebih sedikit ketidakcocokan seperti ini. Namun, Anda diizinkan untuk indentasi dengan tab. Itu pilihanmu; Namun, Anda harus menyadari bahwa standar 8 spasi per tab agak lebar.
Mengenai masalah Anda, kemungkinan besar, editor Anda kacau. Untuk mengonversi tab ke ruang sangat tergantung pada editor.
Di Emacs, misalnya, Anda dapat memanggil metode 'tidak ditandai'.
Pada baris perintah, Anda dapat menggunakan garis sed (menyesuaikan jumlah spasi untuk apa pun yang Anda sukai):
sumber
Saat menggunakan editor teks luhur, saya dapat memilih segmen kode saya yang memberi saya
inconsistent use of tabs and spaces in indentation
kesalahan dan memilih:view > indentation > convert indentation to spaces
yang menyelesaikan masalah bagi saya.
sumber
Apa yang saya lakukan ketika kesalahan yang sama muncul: Pilih semuanya ( Str+ A) dan tekan Shift+ Tab. Jadi tidak ada yang indentasi lagi. Sekarang kembali ke baris yang ingin Anda lekukan, dan pasang kembali seperti yang Anda inginkan.
Itu bekerja untuk saya ...
sumber
Saya baru-baru ini memiliki masalah yang sama dan menemukan bahwa saya hanya perlu mengubah charset file .py ke UTF-8 karena itulah set menggunakan Python 3.
BTW, saya menggunakan tab 4-ruang sepanjang waktu, jadi masalahnya bukan disebabkan oleh mereka.
sumber
Teks Luhur 3
Dalam Sublime Text, WHILE mengedit sebuah Python berkas:
Menu Teks Luhur > Preferensi > Pengaturan - Khusus Sintaksis :
Pengaturan Python.sublime
sumber
Dimungkinkan untuk menyelesaikan masalah ini menggunakan
notepad++
dengan mengganti Tabs dengan 4 Spaces:sumber
Saya punya masalah ini. Solusi: 'tab' Anda sebelum garis masalah adalah spasi, 4, 6, atau 8 spasi. Anda harus menghapusnya dan memasukkan TAB. 't'. Itu saja.
sumber
Saya menggunakan Notepad ++ dan mendapatkan kesalahan ini.
Di Notepad ++ Anda akan melihat bahwa tab dan keempat spasi sama, tetapi ketika Anda menyalin kode Anda ke Python IDLE Anda akan melihat perbedaan dan garis dengan tab akan memiliki lebih banyak ruang sebelum itu daripada yang lain.
Untuk mengatasi masalah, saya baru saja menghapus tab sebelum baris kemudian menambahkan empat spasi.
sumber
Saya memiliki kesalahan yang sama. Saya harus menambahkan beberapa baris kode ke file * .py yang ada. Di Notepad ++ itu tidak berfungsi.
Setelah menambahkan baris kode dan menyimpan, saya mendapat kesalahan yang sama. Ketika saya membuka file yang sama di PyCharm dan menambahkan baris, kesalahannya hilang.
sumber
Saya mendapatkan kesalahan yang sama tetapi tidak dapat menemukan kesalahan saya.
Jadi saya memperbaikinya dengan menjalankan indentasi otomatis pada kode saya dan memungkinkan mesin memperbaiki kesalahan saya.
Jika ada yang bertanya-tanya bagaimana saya melakukan itu. Sederhana. Pergilah dalam vim. Ketik G = gg.
Ini secara otomatis akan memperbaiki semuanya. Semoga berhasil :)
sumber
Masalah Anda disebabkan oleh keterbatasan / konfigurasi editor Anda. Beberapa editor memberi Anda alat untuk membantu masalah dengan:
Mengubah tab menjadi spasi
Misalnya, jika Anda menggunakan editor Python Stani Anda dapat mengkonfigurasinya untuk menghemat.
Mengubah spasi menjadi tab
Jika Anda menggunakan ActiveState Komodo, Anda memiliki alat untuk 'menabulasi' kode Anda. Seperti yang sudah ditunjukkan orang lain, ini bukan ide yang baik.
Pydev dari Eclipse menyediakan fungsi "Konversi tab menjadi space-tab" dan "Konversikan tab-ruang menjadi tab".
sumber
Jika editor Anda tidak mengenali tab saat melakukan pencarian dan penggantian (seperti SciTE), Anda dapat menempelkan kode ke Word dan mencari menggunakan Ctr-H dan ^ t yang menemukan tab yang kemudian dapat diganti dengan 4 spasi.
sumber
Ada duplikat dari pertanyaan ini dari sini, tetapi saya pikir saya akan menawarkan pandangan berkaitan dengan editor modern dan beragam fitur yang mereka tawarkan. Dengan kode python, apa pun yang perlu diintegrasikan ke dalam
.py
file, semua harus diintensifkan menggunakan tombol tab, atau dengan spasi. Konvensi akan menggunakan empat ruang untuk lekukan. Sebagian besar editor memiliki kemampuan untuk menampilkan secara visual pada editor apakah kode sedang indentasi dengan spasi atau tab, yang sangat membantu untuk debugging. Misalnya, dengan atom, pergi ke preferensi dan kemudian editor Anda dapat melihat dua opsi berikut:Kemudian jika kode Anda menggunakan spasi, Anda akan melihat titik-titik kecil di mana kode Anda indentasi:
Dan jika indentasi menggunakan tab, Anda akan melihat sesuatu seperti ini:
Sekarang jika Anda perhatikan, Anda dapat melihat bahwa ketika menggunakan tab, ada lebih banyak kesalahan / peringatan di sebelah kiri, ini karena sesuatu yang disebut dokumentasi pep8 pep8 , yang pada dasarnya adalah panduan gaya seragam untuk python, sehingga semua pengembang sebagian besar kode untuk standar dan penampilan yang sama, yang membantu ketika mencoba untuk memahami kode orang lain, ada di pep8 yang lebih memilih penggunaan spasi untuk indentasi daripada tab. Dan kita bisa melihat editor menunjukkan bahwa ada peringatan yang berkaitan dengan kode peringatan pep8
W191
,Saya harap semua hal di atas membantu Anda memahami sifat masalah yang Anda alami dan bagaimana mencegahnya di masa depan.
sumber
Terkadang,
tab
memang berantakan saat indentasi. Salah satu caranya adalah dengan menggunakantab
danbackspace
untuk indentasi kode dengan benar.Cara lain adalah menggunakan
space
4 kali (tergantung pada seberapa banyak Anda ingin membuat indentasi).Sebuah cara aneh yang bekerja untuk saya ketika tidak ada yang lain yang bekerja, baris mana yang saya dapatkan kesalahan, saya
backspaced
baris itu ke baris sebelumnya dan kemudian tekanenter
. Secara otomatis indentasi baris ke posisi yang benar dan saya tidak mendapatkan kesalahan setelah itu.Semoga ini bisa membantu.
sumber
Saya memiliki masalah yang sama dan memperbaikinya menggunakan skrip python berikut. semoga membantu orang lain.
itu karena menggunakan tab dan spasi untuk indentasi kode. dalam skrip ini saya mengganti setiap tab dengan empat spasi.
jika Anda menggunakan sublim atau editor lain yang memberi Anda alat untuk mengganti teks, Anda dapat mengganti semua tab dengan empat spasi dari editor.
sumber
Gunakan, Idle for python, atau Idle3 for python3.
sumber
Memecahkan ini menggunakan editor Vim
cd <path_to_your_directory>
). Ex:cd /home/vineeshvs/work
.vim <file_name>
). Ex:vim myfile.txt
.:set hlsearch
):<line_number>
). Contoh::53
dalam editor Vim setelah menekanESC tombol sekali.:.,$s/\t/<give_as_many_spaces_as_you_want_to_replace_tab>/gc
). Mis: Tab akan diganti dengan empat spasi menggunakan perintah berikut::.,$s/\t/ /gc
setelah menekan ESC tombol sekali). Proses ini bersifat interaktif. Anda dapat memberiy
untuk mengganti tab dengan spasi dann
untuk melewatkan penggantian tertentu. Tekan ESCsaat Anda selesai dengan penggantian yang diperlukan.sumber
Anehnya saya mengalami masalah yang sama dengan salah satu file .py saya. Saya hanya membuka file dalam Pycharm dan menekan
Option
+Command
+L
yang dengan benar memformat konten file dalam sekali jalan.Saya curiga saya mengalami masalah karena saya mengkodekan file .py ini melalui lab jupyter yang bertentangan dengan pilihan teks biasa atau Pycharm yang biasa saya pakai dan karena itu mengalami beberapa masalah lekukan tersembunyi yang banyak dijawab oleh jawaban di sini.
sumber
Yah saya punya masalah yang sama dan saya menyadari bahwa masalahnya adalah saya menyalin kode dari editor python lain untuk luhur.
Saya sedang bekerja dengan notebook jupyter dan kemudian saya menyalin kode ke agung. Rupanya ketika Anda membuat modifikasi spesifik (seperti memindahkan kode dalam fungsi) maka lekukan menjadi berantakan dan dari sinilah masalahnya.
Jadi hanya berpegang pada satu editor. Jika Anda melakukannya, maka Anda tidak akan mengalami masalah.
sumber
Menggunakannya
pylint
akan memberi Anda laporan terperinci tentang berapa banyak ruang yang Anda butuhkan dan di mana.sumber
Jika Anda menggunakan ATOM:
Buka Menu: Paket -> WhiteSpace -> Konversi semua Tab menjadi Spasi
sumber
Cobalah menghapus indentasi dan kemudian secara sistematis menekan tab atau menekan spasi 4 kali. Ini biasanya terjadi pada saya ketika saya memiliki indentasi menggunakan tombol tab dan kemudian menggunakan tombol spasi di baris berikutnya.
sumber
Tinggikan bit indentasi, lalu klik tab. Mereka kemudian akan menjadi konsisten :)
sumber