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 :("
我一直在else语句中遇到语法错误,我不确定为什么它会一直产生这个错误。我在同一个def中没有任何其他语句,但仍然会出错。我该怎么办?
答案 0 :(得分:8)
在Python中,else
语句不带条件:
if condition:
do_1()
else:
do_else()
在您的情况下,由于您要评估其他条件,请在if
之后使用elif
:
if condition1:
do_1()
elif condition2:
do_2()
... # you can have as many elifs as you want
else:
do_else()
注意:阅读docs。
答案 1 :(得分:5)
你的log_f.write语句也缺少一个尾随')',这可能会使解析器混乱......并且缩进看起来不正确。剪切和粘贴问题?
答案 2 :(得分:1)
你不能像Python那样else
。你应该这样做(假设你的标签在现实生活中是正确的):
elif len(user_hash) < 0:
如上所述,你错过了一个亲密的人。
答案 3 :(得分:1)
您无法提供带有else
语句的条件。 else
表示“其他所有内容” - 即除了您在之前的if
中指定的任何条件之外的其他所有内容。目前还不清楚你要用else
完成什么,但也许你的意思是if
。
它也可能是elif
(“else if”),但如果你的意思是else
条款的早期if
,那么你需要取消它所以它与if
处于同一缩进级别。 if
和else
/ elif
必须在同一缩进级别排列。
(对于else
语句,有一个for
子句这样的东西,但它看起来不像你想要的那样。)
答案 4 :(得分:1)
您可以在Python中使用else循环执行for,但您需要在括号中平衡:
log_f.write("Name:%s \n Email: %s" % (name, email)
实际应该是
log_f.write("Name:%s \n Email: %s" % (name, email))
(注意额外的最后括号。)
答案 5 :(得分:0)
if和else必须在同一列中对齐,这对我来说很有效。