Python: Se esperaba un bloque con sangría.

Pensé que todo estaba correctamente sangrado aquí, pero obtengo un error de sangría: esperaba un locking sangrado en la instrucción else: ¿Estoy cometiendo un error obvio aquí?

def anti_vowel(text): new_string = "" vowels = "aeiou" for letter in text: for vowel in vowels: if (lower(letter) == vowel): #do nothing else: #append letter to the new string new_string += letter return new_string 

No hacer nada se traduce en usar la palabra clave pass para rellenar un bloque que de lo contrario está vacío (lo que no está permitido). Consulte la documentación oficial para más información.

 def anti_vowel(text): new_string = "" vowels = "aeiou" for letter in text: for vowel in vowels: if (lower(letter) == vowel): #do nothing pass else: #append letter to the new string new_string += letter return new_string 

Necesitas poner algo dentro del bloque if . Si no quieres hacer nada, ponte el pass .

Alternativamente, simplemente revertir su condición para que solo tenga un bloque:

 if lower(letter) != vowel: new_string += letter 

Por cierto, no creo que su código haga lo que pretende que haga, pero eso es un problema para otra pregunta.

No puedes hacer esto.

 if (lower(letter) == vowel): #do nothing 

Tratar:

 if (lower(letter) == vowel): #do nothing pass 

Esto puede ser causado por la mezcla de tabulaciones y espacios. Sin embargo, esto es probablemente causado por no tener nada dentro de su statement if. Puede usar “pasar” como marcador de posición (vea el ejemplo a continuación).

  if condition: pass 

Información sobre el pase: http://docs.python.org/release/2.5.2/ref/pass.html