Cuando compilo el código de Python a continuación, obtengo
IndentationError: unindent no coincide con ningún nivel de sangría externa
import sys
def Factorial(n): # Return factorial
result = 1
for i in range (1,n):
result = result * i
print "factorial is ",result
return result
¿Por qué?
python
indentation
cbrulak
fuente
fuente
View > Indentation > Intent Using Spaces
Respuestas:
Otros carteles son probablemente correctos ... puede haber espacios mezclados con sus pestañas. Intente hacer una búsqueda y reemplazar para reemplazar todas las pestañas con unos pocos espacios.
Prueba esto:
fuente
IMPORTANTE : los espacios son el método preferido ; consulte PEP008 Sangría y pestañas o espacios. . (Gracias a @Siha por esto).
Para
Sublime Text
usuarios:Configurar
Sublime Text
para usar pestañas para sangría:View
->Indentation
->Convert Indentation to Tabs
Desactive la
Indent Using Spaces
opción también en el mismo submenú anterior. Esto resolverá inmediatamente este problema.fuente
Para verificar fácilmente si hay problemas con pestañas / espacios, puede hacer esto:
o simplemente puede configurar su editor correctamente, por supuesto :-)
fuente
¿Estás seguro de que no estás mezclando pestañas y espacios en tu espacio en blanco de sangría? (Eso provocará ese error).
Tenga en cuenta que se recomienda que no use pestañas en el código Python. Ver la guía de estilo . Debe configurar Notepad ++ para insertar espacios para pestañas.
fuente
Cada vez que encuentro este error, es porque de alguna manera he mezclado pestañas y espacios en mi editor.
fuente
Si usa el editor IDLE de Python, puede hacer lo que sugiere en uno de los mensajes de error similares:
1) seleccionar todo, por ejemplo, Ctrl+A
2) Vaya a Formato -> Desagrupar región
3) Verifique que su sangría sea correcta, guarde y vuelva a ejecutar su programa.
Estoy usando Python 2.5.4
fuente
Si está utilizando Vim, presione escapar y luego escriba
gg = G
Este auto sangra todo y limpiará cualquier espacio que hayas incluido.
fuente
La línea:
result = result * i
debe tener sangría (es el cuerpo del bucle for).O bien, tiene caracteres mixtos de espacio y tabulación
fuente
En el átomo
ir
Luego verifique nuevamente la sangría de su archivo:
o
fuente
Parece ser un problema de sangría. No tiene que hacer coincidir las llaves en Python, pero sí tiene que hacer coincidir los niveles de sangría.
La mejor manera de evitar problemas de espacio / tabulación es mostrar caracteres invisibles dentro de su editor de texto. Esto le dará una forma rápida de prevenir y / o resolver errores relacionados con sangría.
Además, la inyección de código copiado y pegado es una fuente común para este tipo de problema.
fuente
Si usa notepad ++, haga un "reemplazo" con el modo de búsqueda extendida para encontrar \ t y reemplazar con cuatro espacios.
fuente
para los usuarios de Atom,
Packages ->whitspace -> remove trailing whitespaces
esto funcionó para mífuente
Solo una adición. Tuve un problema similar con ambas muescas en Notepad ++.
Nivel de sangría externa
Vaya a ----> pestaña Buscar ----> toque reemplazar ----> presione el botón de opción Extendido debajo ---> Ahora reemplace \ t con cuatro espacios
Vaya a ----> pestaña Buscar ----> toque reemplazar ----> presione el botón de radio Extendido debajo ---> Ahora reemplace \ n con nada
fuente
Estaba usando la computadora portátil Jupyter y probé casi todas las soluciones anteriores (adaptándome a mi escenario) sin ningún uso. Luego fui línea por línea, eliminé todos los espacios para cada línea y los reemplacé con tabulación. Eso resolvió el problema.
fuente
Para usuarios de Spyder, vaya a Fuente> Corregir sangría para solucionar el problema de inmediato
fuente
Podría deberse a que la función anterior no está sangrada de la misma manera. es decir
fuente
Tuve el mismo problema ayer, fue un error de sangría, estaba usando un editor de texto sublime. Me tomé mis horas tratando de arreglarlo y al final terminé copiando el código en el editor de texto VI y funcionó bien. ps python es demasiado sensible al espacio en blanco, asegúrese de no mezclar espacio y tabulación.
fuente
Dado que comprendo que no hay respuesta específica a
spyder
, voy a añadir una: Básicamente, mirar cuidadosamente suif
declaración y asegurarse de que todosif
,elif
yelse
tienen la misma separación que es que están en la misma línea en el inicio de este modo:fuente
Tenía una función definida, pero no tenía ningún contenido aparte de sus comentarios de función ...
Gritó:
(tenga en cuenta que la línea
^
que apunta marca está vacía)-
Múltiples soluciones:
1: solo comenta la función
2: Añadir comentario de función
3: Agregar línea que no hace nada
En cualquier caso, asegúrese de hacer obvio por qué es una función vacía, para usted o para sus compañeros que usarán su código
fuente
En primer lugar, solo para recordarle que hay un error lógico, es mejor que mantenga el resultado = 1 o de lo contrario su salida será resultado = 0 incluso después de que se ejecute el bucle.
En segundo lugar puedes escribirlo así:
Dejar una línea le dirá al shell de Python que las declaraciones FOR han terminado. Si tiene experiencia en el uso de Python Shell, puede entender por qué tenemos que dejar una línea.
fuente
Por lo que vale, mi docstring se sangraba demasiado y esto también arroja el mismo error
IndentationError: unindent does not match any outer indentation level
fuente
Esto se debe a que hay una mezcla de pestañas y espacios. Puede eliminar todos los espacios y reemplazarlos con pestañas.
O intente escribir esto:
Al principio del código. Esta línea resuelve cualquier diferencia entre pestañas y espacios.
fuente
en mi caso, el problema era la configuración de pydev en Eclipse
fuente
Si usa el editor de Komodo, puede hacer lo que sugiere en uno de los mensajes de error similares:
1) seleccionar todo, por ejemplo, Ctrl + A
2) Vaya a Código -> Desagrupar región
3) Verifique que su sangría sea correcta, guarde y vuelva a ejecutar su programa.
Estoy usando Python 3.4.2
fuente
Si está utilizando texto Sublime para el desarrollo de Python, puede evitar el error utilizando el paquete Anaconda. Después de instalar Anaconda,
fuente
En intellij con el complemento de python, Ctrl + Shift + Alt para reformatear el documento solucionó el problema de sangría / tabulación / espacios
fuente
Para usuarios de SPYDER : estoy usando Spyder 3.3.2 con Python 3.7.1 y resolví esto, configurando la sangría para usar pestañas, con los siguientes pasos, haga clic en:
Luego restablezco la línea "sin ayuda" usando la tecla tab.
Por alguna razón, sin esta configuración, a veces tengo el fantasma IndentationError.
fuente
Por ejemplo:
En este código, me ocurrió la misma situación. Simplemente elimine los espacios de sangría anteriores de la línea 2 y 3, y luego use tabulación o espacio. Nunca uses ambos . Dé una sangría adecuada mientras escribe código en python. Para Spyder, vaya a Fuente> Corregir sangría. Lo mismo ocurre con el código VC y el texto sublime o cualquier otro editor. Arregla la sangría.
fuente
Esto sucede principalmente debido al editor. Intente cambiar las pestañas a espacios (4). El mejor IDE o editores amigables para Python son pycharm, sublime, vim para linux.
incluso yo también había encontrado el mismo problema, más tarde descubrí que hay un problema de codificación. Sugiero que también cambies tu editor.
fuente