2010-11-24 10 views
6

Tengo un código simple que no entiendo de dónde viene mi error. El analizador me está ladrando con una sangría inesperada en la línea 5 (la declaración if). ¿Alguien ve el problema aquí? Yo no.Error de sangría inesperado en Python

def gen_fibs(): 
    a, b = 0, 1 
    while True: 
     a, b = b, a + b 
     if len(str(a)) == 1000: 
      return a 

Respuesta

12

Si solo copió y pegó su código, utilizó una pestaña en la línea con la instrucción if. Python interpreta como una ficha 8 espacios y no 4. No vuelvas a usar pestañas con el pitón :)

1 O al menos no siempre utilizar tabulaciones y espacios mezclados. Es muy recomendable usar 4 espacios para coherencia con el resto del universo de Python.

+0

¡Ahh! Copié y pegué este código desde otro código que tenía. Buena pena. Comenté una respuesta anterior, pero no me di cuenta de lo que la causó hasta su respuesta. ¡Gracias! – tjsimmons

+0

¿por qué esto se revocó? – aaronasterling

+1

De vuelta en cero ahora;) Estaba a punto de decir lo mismo. Recomendaría ejecutar una búsqueda y reemplazar los caracteres '\ t' y reemplazarlos por' [cuatro espacios] '. – Blender

1

Compruebe si no está mezclando pestañas con espacios o algo así, porque su código pegado literalmente no produce ningún error.

+1

Sí, esto fue todo. Uso TextMate en la Mac para escribir mi código, y utilizo la tecla de tabulación para sangrar (pone en los 4 espacios). En el editor se veía bien, pero cuando lo pegué aquí, había una pestaña adicional en la declaración if. Lo cambié a un manual de cuatro espacios y funcionó. Extraño. – tjsimmons

+1

Puede configurar TextMate para usar siempre espacios en archivos .py. –

1

La línea con a, b = b, a + b tiene una sangría de 8 espacios, y la línea if está sangrada con 4 espacios y una pestaña. Configure su editor para que nunca inserte pestañas alguna vez.

(Python considera una ficha para ser de 8 espacios, pero es más fácil simplemente no usarlas)

4

Estas tabulaciones y espacios de mezcla. Las pestañas son siempre consideradas iguales a 8 espacios para sangrar. Ejecute la secuencia de comandos con python -tt para verificar.

-1

Compruebe si su espacio en blanco delante de cada línea está escrito correctamente. Puede haber escrito pestañas en lugar de espacios; intente eliminar todo el espacio y cámbielo para usar solo pestañas o solo espacios.

Cuestiones relacionadas