Estoy tratando de crear una aplicación en Python 3.2 y uso pestañas todo el tiempo para la sangría, pero incluso el editor cambia algunas de ellas en espacios y luego imprime "uso inconsistente de pestañas y espacios en sangría" cuando intento ejecutar el programa.
¿Cómo puedo cambiar los espacios en pestañas? Me esta volviendo loco. (Soy un principiante en programación). Me alegraría poder obtener algunos consejos generales sobre mi código; si he cometido muchos errores, me encantaría saberlo.
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
Respuestas:
No uses pestañas.
Nota: La razón de los 8 espacios para las pestañas es para que note de inmediato cuando las pestañas se han insertado involuntariamente, como al copiar y pegar desde un código de ejemplo que usa pestañas en lugar de espacios.
fuente
Usando el
autopep8
siguiente comando lo arregló para mí:Documentación para
autopep8
vincular aquí.fuente
Con el editor IDLE puede usar esto:
fuente
Si está utilizando Sublime Text para el desarrollo de Python, puede evitar el error utilizando el paquete Anaconda. Después de instalar Anaconda, abra su archivo en Sublime Text, haga clic derecho en los espacios abiertos → elija Anaconda → haga clic en autoformato. Hecho . O presione Ctrl+ Alt+ R.
fuente
En general, las personas prefieren sangrar con espacio. Es más consistente en todos los editores, lo que resulta en menos desajustes de este tipo. Sin embargo, puede sangrar con tabulación. Es tu elección; Sin embargo, debe tener en cuenta que el estándar de 8 espacios por pestaña es un poco amplio.
Con respecto a su problema, lo más probable es que su editor lo haya estropeado. Convertir la pestaña al espacio depende realmente del editor.
En Emacs, por ejemplo, puede llamar al método 'untabify'.
En la línea de comando, puede usar una línea sed (adapte la cantidad de espacios a lo que le plazca):
fuente
Al usar el editor de texto sublime, pude seleccionar el segmento de mi código que me estaba dando el
inconsistent use of tabs and spaces in indentation
error y seleccionar:view > indentation > convert indentation to spaces
lo que resolvió el problema para mí.
fuente
Lo que hice cuando apareció el mismo error: Seleccione todo ( Str+ A) y presione Shift+ Tab. Entonces ya nada estaba sangrado. Ahora regrese a las líneas que desea sangrar y vuelva a colocarlo como lo desee.
A mí me funcionó ...
fuente
Recientemente tuve el mismo problema y descubrí que solo necesitaba convertir el juego de caracteres del archivo .py a UTF-8, ya que ese es el conjunto que utiliza Python 3.
Por cierto, usé pestañas de 4 espacios todo el tiempo, por lo que el problema no fue causado por ellos.
fuente
Sublime Text 3
En Sublime Text, MIENTRAS edita un archivo Python :
Menú Sublime Text > Preferencias > Configuración - Especificación de sintaxis :
Python.sublime-settings
fuente
Es posible resolver este problema usando
notepad++
reemplazando Tabs por 4 Spaces:fuente
Tuve este problema Solución: su 'pestaña' antes de la línea del problema es espacios, 4, 6 u 8 espacios. Debe borrarlos e insertar TAB. '\ t'. Eso es todo.
fuente
Yo uso Notepad ++ y obtuve este error.
En Notepad ++, verá que tanto la pestaña como los cuatro espacios son iguales, pero cuando copie su código en Python IDLE , verá la diferencia y la línea con una pestaña tendrá más espacio antes que los demás.
Para resolver el problema, simplemente eliminé la pestaña antes de la línea y luego agregué cuatro espacios.
fuente
Yo tenía el mismo error. Tuve que agregar varias líneas de código a un archivo * .py existente. En Notepad ++ no funcionó.
Después de agregar las líneas de código y guardar, obtuve el mismo error. Cuando abrí el mismo archivo en PyCharm y agregué las líneas, el error desapareció.
fuente
Obtuve los mismos errores pero no pude entender qué estaba haciendo mal.
Así que lo arreglé ejecutando una sangría automática en mi código y permitiendo que la máquina corrija mi falla.
Si alguien se pregunta cómo hice eso. Sencillo. Entra en vim. Escriba G = gg.
Esto arreglará todo automáticamente. Buena suerte :)
fuente
Su problema se debe a las limitaciones / configuración de su editor. Algunos editores le proporcionan herramientas para ayudar con el problema:
Convertir pestañas en espacios
Por ejemplo, si está utilizando el editor Python de Stani, puede configurarlo para que lo guarde.
Convertir espacios en pestañas
Si está utilizando ActiveState Komodo, tiene una herramienta para 'tabular' su código. Como otros ya señalaron, esta no es una buena idea.
Pydev de Eclipse proporciona las funciones "Convertir pestañas en pestañas espaciales" y "Convertir pestañas espaciales en pestañas".
fuente
Si su editor no reconoce las pestañas cuando realiza una búsqueda y reemplazo (como SciTE), puede pegar el código en Word y buscar usando Ctr-H y ^ t, que encuentra las pestañas que luego se pueden reemplazar con 4 espacios.
fuente
Hubo un duplicado de esta pregunta desde aquí, pero pensé que ofrecería una visión que ver con los editores modernos y la amplia gama de características que ofrecen. Con el código de Python, todo lo que necesita ser intentado en un
.py
archivo, debe ser intentado usando la tecla de tabulación o por espacios. La convención es usar cuatro espacios para una sangría. La mayoría de los editores tienen la capacidad de mostrar visualmente en el editor si el código se sangra con espacios o pestañas, lo que es de gran ayuda para la depuración. Por ejemplo, con atom, yendo a preferencias y luego editor, puede ver las siguientes dos opciones:Luego, si su código usa espacios, verá pequeños puntos donde su código está sangrado:
Y si está sangrado usando pestañas, verá algo como esto:
Ahora, si se dio cuenta, puede ver que al usar pestañas, hay más errores / advertencias a la izquierda, esto se debe a algo llamado documentación pep8 pep8 , que es básicamente una guía de estilo uniforme para python, de modo que todos los desarrolladores codifican principalmente El mismo estándar y apariencia, que ayuda cuando se trata de entender el código de otras personas, está en pep8 que favorece el uso de espacios para sangrar en lugar de pestañas. Y podemos ver que el editor muestra que hay una advertencia relacionada con el código de advertencia pep8
W191
,Espero que todo lo anterior le ayude a comprender la naturaleza del problema que tiene y cómo prevenirlo en el futuro.
fuente
A veces,
tab
se ensucia al sangrar. Una forma es obviamente usar eltab
ybackspace
para sangrar correctamente el código.Otra forma es usar
space
4 veces (dependiendo de cuánto desee sangrar).Una forma extraña que funcionó para mí cuando nada más funcionó, cualquiera que sea la línea que obtengo el error, coloqué
backspaced
esa línea en la línea anterior y luego presionéenter
. Automáticamente sangraba la línea a la posición correcta y no recibí ningún error después de eso.Con suerte, esto debería ayudar.
fuente
Tuve el mismo problema y lo solucioné usando el siguiente script de Python. Espero que ayude a otros.
se debe al uso de pestañas y espacios para sangrar código. en este script, reemplazo cada pestaña con cuatro espacios.
si usa sublime o cualquier otro editor que le brinde la herramienta para reemplazar texto, puede reemplazar todas las pestañas por cuatro espacios desde el editor.
fuente
Use, Idle para python o Idle3 para python3.
fuente
Resolviendo esto usando el editor Vim
cd <path_to_your_directory>
). Ej:cd /home/vineeshvs/work
.vim <file_name>
). Ej:vim myfile.txt
.:set hlsearch
):<line_number>
). Ej::53
en el editor Vim después de presionar el ESCbotón una vez.:.,$s/\t/<give_as_many_spaces_as_you_want_to_replace_tab>/gc
). Ej: Tab se reemplazará con cuatro espacios con el siguiente comando::.,$s/\t/ /gc
después de presionar el ESC botón una vez). Este proceso es interactivo. Puede dary
para reemplazar la pestaña con espacios yn
omitir un reemplazo en particular. Presione ESCcuando haya terminado con los reemplazos necesarios.fuente
Curiosamente me encontré con un problema similar con uno de mis archivos .py. Simplemente abrí el archivo en Pycharm y presioné
Option
+Command
+L
que formatea correctamente el contenido del archivo de una vez.Sospecho que estaba teniendo problemas porque codifiqué este archivo .py en particular a través de Jupyter Labs en lugar de mi elección habitual de texto sublime o Pycharm y, por lo tanto, encontré algunos problemas de sangría ocultos a los que muchas respuestas aquí han aludido
fuente
Bueno, tuve el mismo problema y me di cuenta de que el problema es que copié el código de otro editor de Python para sublime.
Estaba trabajando con el cuaderno jupyter y luego copié el código en sublime. Aparentemente, cuando realiza modificaciones específicas (como mover código en funciones), la sangría se vuelve desordenada y de ahí proviene el problema.
Así que solo quédate con un editor. Si lo hace, no tendrá ningún problema.
fuente
Úselo
pylint
le dará un informe detallado sobre cuántos espacios necesita y dónde.fuente
Si usa ATOM:
Vaya a Menú: Paquetes -> Espacio en blanco -> Convertir todas las pestañas en espacios
fuente
Intenta eliminar las sangrías y luego presionar tabulador o presionar la barra espaciadora 4 veces. Esto generalmente me sucede cuando tengo una sangría usando la tecla de tabulación y luego uso la barra espaciadora en la siguiente línea.
fuente
Resalte los bits sangrados y luego haga clic en las pestañas. Luego se volverán consistentes :)
fuente