Else Sintaxis Error Python

if len(user_hash) > 0: with open(log_file, "w") as log_f: for name in user_hash: log_f.write("Name:%s \n Email: %s" % (name, email) else len(user_hash) < 0: print "Nothing happened :(" 

Sigo recibiendo un error de syntax en la sentencia else y no estoy seguro de por qué sigue produciendo este error. No tengo ninguna otra statement en la misma definición y todavía da error. ¿Qué debo hacer?

A su statement log_f.write también le falta un ‘)’, lo que probablemente confunda el analizador … y la sangría no se ve bien. ¿Cortar y pegar problema?

En Python, la instrucción else no tiene condiciones:

 if condition: do_1() else: do_else() 

En su caso, ya que desea evaluar otra condición, después de if , use un elif :

 if condition1: do_1() elif condition2: do_2() ... # you can have as many elifs as you want else: do_else() 

Nota: Lea los documentos .

No puedes hacer else así en Python. Debes hacer (asumiendo que tus tabs son correctas en la vida real):

elif len(user_hash) < 0:

y como se mencionó, te estás perdiendo un paren cercano.

No se puede suministrar una condición con una sentencia else . else significa “todo lo demás”, es decir, todo lo demás, excepto las condiciones que especificó en un anterior if . No está claro qué es lo que estás tratando de lograr con eso, pero quizás quieras decir que es un if .

También podría ser un elif (“else if”), pero si quiere decir que es otra else para la cláusula if anterior, entonces necesita desinducirlo para que esté al mismo nivel de sangría que if . Un if y it’s else / elif tienen que alinearse en el mismo nivel de sangría.

(Existe una cláusula else para una statement for , pero no parece que eso sea lo que se desea aquí).

Puede hacer otra cosa con los bucles en Python, pero deberá equilibrar sus paréntesis en:

 log_f.write("Name:%s \n Email: %s" % (name, email) 

que en realidad debería ser

 log_f.write("Name:%s \n Email: %s" % (name, email)) 

(Note el paréntesis final adicional.)

Si y si no debe estar en la misma columna alinear, este trabajo para mí.