Estou tentando criar um aplicativo no Python 3.2 e uso abas o tempo todo para indentação, mas mesmo o editor altera algumas delas em espaços e depois imprime "uso inconsistente de abas e espaços na indentação" quando tento executar o programa.
Como posso alterar os espaços em guias? Está me deixando louco. (Eu sou iniciante em programação). Ficaria feliz em poder obter algumas dicas gerais sobre o meu código, se eu cometer muitos erros, ficaria feliz em ouvir.
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
Respostas:
Não use guias.
Nota: O motivo de 8 espaços para guias é para que você observe imediatamente quando as guias foram inseridas acidentalmente - como ao copiar e colar do código de exemplo que usa guias em vez de espaços.
fonte
Usando o
autopep8
comando abaixo corrigi-lo para mim:Documentação para
autopep8
link aqui.fonte
Com o editor IDLE , você pode usar isto:
fonte
Se você estiver usando o Sublime Text para desenvolvimento em Python, poderá evitar o erro usando o pacote Anaconda. Após instalar o Anaconda, abra seu arquivo em Sublime Text, clique com o botão direito do mouse nos espaços abertos → escolha Anaconda → clique em formatação automática. Feito . Ou pressione Ctrl+ Alt+ R.
fonte
Geralmente, as pessoas preferem recuar com espaço. É mais consistente entre os editores, resultando em menos incompatibilidades desse tipo. No entanto, você pode recuar com a guia. É a sua escolha; no entanto, você deve estar ciente de que o padrão de 8 espaços por guia é um pouco amplo.
Em relação ao seu problema, provavelmente, seu editor errou. Converter tab em espaço é realmente dependente do editor.
No Emacs, por exemplo, você pode chamar o método 'untabify'.
Na linha de comando, você pode usar uma linha sed (adapte o número de espaços ao que quiser):
fonte
Ao usar o editor de texto sublime, pude selecionar o segmento do meu código que estava me dando o
inconsistent use of tabs and spaces in indentation
erro e selecionar:view > indentation > convert indentation to spaces
o que resolveu o problema para mim.
fonte
O que fiz quando o mesmo erro apareceu: Selecione tudo ( Str+ A) e pressione Shift+ Tab. Então, nada foi mais recuado. Agora volte para as linhas que deseja recuar e recoloque como deseja.
Funcionou para mim ...
fonte
Recentemente, tive o mesmo problema e descobri que só precisava converter o conjunto de caracteres do arquivo .py para UTF-8, pois esse é o conjunto que o Python 3 usa.
BTW, eu usei abas de 4 espaços o tempo todo, então o problema não foi causado por elas.
fonte
Texto sublime 3
Em Sublime Texto, ENQUANTO editar um Python arquivo:
Menu Texto sublime > Preferências > Configurações - Específico de sintaxe :
Python.sublime-settings
fonte
É possível resolver esse problema usando
notepad++
substituindo Tabs por 4 Spaces:fonte
Eu tive esse problema. Solução: sua 'guia' antes da linha do problema é espaços, 4, 6 ou 8 espaços. Você deve apagá-los e inserir TAB. '\ t'. Isso é tudo.
fonte
Eu uso o Notepad ++ e recebi esse erro.
No Notepad ++, você verá que a guia e os quatro espaços são iguais, mas quando você copia seu código no Python IDLE, você vê a diferença e a linha com uma guia tem mais espaço do que as outras.
Para resolver o problema, acabei de excluir a guia antes da linha e adicionar quatro espaços.
fonte
Eu tive o mesmo erro. Eu tive que adicionar várias linhas de código a um arquivo * .py existente. No Notepad ++, não funcionou.
Depois de adicionar as linhas de código e salvar, recebi o mesmo erro. Quando abri o mesmo arquivo no PyCharm e adicionei as linhas, o erro desapareceu.
fonte
Eu recebi os mesmos erros, mas não conseguia descobrir o que estava fazendo de errado.
Portanto, eu o corrigi executando o recuo automático no meu código e permitindo que a máquina corrija minha falha.
Se alguém está se perguntando como eu fiz isso. Simples. Vá em vim. Digite G = gg.
Isso corrigirá tudo automaticamente. Boa sorte :)
fonte
Seu problema é devido às limitações / configuração do seu editor. Alguns editores fornecem ferramentas para ajudar no problema:
Convertendo guias em espaços
Por exemplo, se você estiver usando o editor Python do Stani, poderá configurá-lo para salvá-lo.
Convertendo espaços em guias
Se você estiver usando o ActiveState Komodo, terá uma ferramenta para 'tabificar' seu código. Como outros já apontaram, essa não é uma boa ideia.
O Pydev do Eclipse fornece as funções "Converter abas em abas espaciais" e "Converter abas espaciais em abas".
fonte
Se o seu editor não reconhecer guias ao fazer uma pesquisa e substituição (como SciTE), você poderá colar o código no Word e pesquisar usando Ctr-H e ^ t, que encontra as guias que podem ser substituídas por 4 espaços.
fonte
Havia uma duplicata dessa pergunta daqui, mas pensei em oferecer uma visão dos editores modernos e da vasta gama de recursos que eles oferecem. Com o código python, qualquer coisa que precise ser intencionada em um
.py
arquivo precisa ser intentada usando a tecla tab ou por espaços. Convenção é usar quatro espaços para um recuo. A maioria dos editores tem a capacidade de mostrar visualmente no editor se o código está sendo recuado com espaços ou guias, o que ajuda muito na depuração. Por exemplo, com atom, indo para preferências e, em seguida, editor, você pode ver as duas opções a seguir:Então, se seu código estiver usando espaços, você verá pequenos pontos onde seu código é recuado:
E se for recuado usando guias, você verá algo assim:
Agora, se você notou, pode ver que, ao usar guias, há mais erros / avisos à esquerda, devido a algo chamado documentação pep8 pep8 , que é basicamente um guia de estilo uniforme para python, para que todos os desenvolvedores codifiquem principalmente o mesmo padrão e aparência, que ajuda ao tentar entender o código de outras pessoas, é no pep8 que favorece o uso de espaços para recuar em vez de tabulações. E podemos ver o editor mostrando que existe um aviso relacionado ao código de aviso pep8
W191
,Espero que todas as opções acima ajudem você a entender a natureza do problema que está tendo e como evitá-lo no futuro.
fonte
Às vezes,
tab
erra enquanto recua. Uma maneira é obviamente usar otab
ebackspace
recuar corretamente o código.Outra maneira é usar
space
4 vezes (dependendo de quanto você deseja recuar).Uma maneira estranha que funcionou para mim quando nada mais funcionou, qualquer que seja a linha que eu recebi o erro, coloquei
backspaced
essa linha na linha anterior e pressioneienter
. Recuou automaticamente a linha para corrigir a posição e não obtive nenhum erro depois disso.Felizmente, isso deve ajudar.
fonte
Eu tive o mesmo problema e corrigi-lo usando o seguinte script python. espero que ajude os outros.
é por usar guias e espaços para recuar o código. neste script, substituo cada guia por quatro espaços.
se você usar o sublime ou qualquer outro editor que ofereça a ferramenta para substituir o texto, você poderá substituir todas as guias por quatro espaços do editor.
fonte
Use, Idle para python ou Idle3 para python3.
fonte
Resolvendo isso usando o editor Vim
cd <path_to_your_directory>
). Ex:cd /home/vineeshvs/work
.vim <file_name>
). Ex:vim myfile.txt
.:set hlsearch
):<line_number>
). Ex::53
no editor Vim depois de pressionar o ESCbotão uma vez.:.,$s/\t/<give_as_many_spaces_as_you_want_to_replace_tab>/gc
). Ex: Tab será substituído por quatro espaços usando o seguinte comando::.,$s/\t/ /gc
depois de pressionar o ESC botão uma vez). Este processo é interativo. Você podey
substituir a aba por espaços en
pular uma substituição específica. Pressione ESCquando terminar as substituições necessárias.fonte
Estranhamente, tive um problema semelhante com um dos meus arquivos .py. Simplesmente abri o arquivo no Pycharm e pressionei
Option
+Command
+,L
que formata corretamente o conteúdo do arquivo de uma só vez.Eu suspeito que estava tendo problemas porque codifiquei esse arquivo .py em particular nos laboratórios Jupyter, em oposição à minha escolha usual de texto sublime ou Pycharm e, portanto, encontrei alguns problemas ocultos de recuo que muitas respostas aqui mencionaram
fonte
Bem, eu tive o mesmo problema e percebi que o problema é que copiei o código de outro editor de python para sublime.
Eu estava trabalhando com o notebook jupyter e depois copiei o código em sublime. Aparentemente, quando você faz modificações específicas (como mover código nas funções), o recuo fica confuso e é daí que o problema surge.
Então, fique com um editor. Se você fizer isso, não terá nenhum problema.
fonte
Use
pylint
-o para fornecer um relatório detalhado sobre quantos espaços você precisa e onde.fonte
Se você usa o ATOM:
Vá para Menu: Pacotes -> WhiteSpace -> Converter todas as guias em espaços
fonte
Tente excluir os recuos e, sistematicamente, pressione a tecla Tab ou pressione o espaço 4 vezes. Isso geralmente acontece comigo quando tenho um recuo usando a tecla tab e depois a tecla espaço na próxima linha.
fonte
Marque os bits recuados e clique nas guias. Eles se tornarão consistentes :)
fonte