-2
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 中没有任何其他 else 语句,它仍然给出错误。我该怎么办?

4

7 回答 7

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()

注意:阅读文档

于 2013-05-10T03:22:28.917 回答
7

您的 log_f.write 语句也缺少尾随的 ')',这可能会使解析器感到困惑......并且缩进看起来不正确。剪切和粘贴问题?

于 2013-05-10T03:15:26.630 回答
1

你不能else在 Python 中这样做。你应该这样做(假设你的标签在现实生活中是正确的):

elif len(user_hash) < 0:

如前所述,您缺少一个紧密的括号。

于 2013-05-10T03:15:24.463 回答
1

您不能通过else语句提供条件。 else意思是“其他一切”——也就是说,除了你在前面指定的任何条件之外的一切if。目前尚不清楚你想用它来完成什么else,但也许你的意思是它是一个if.

它也可以是一个elif("else if"),但是如果你的意思是它是else前面if子句的一个,那么你需要取消它的缩进,使它与if. Anif和 it's else/elif必须在同一缩进级别对齐。

(有else一个语句的子句这样的东西for,但它看起来不像你想要的。)

于 2013-05-10T03:15:51.423 回答
1

您可以在 Python 中使用for循环执行其他操作,但您需要平衡括号:

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

实际上应该是

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

(注意额外的最后括号。)

于 2013-05-10T04:51:28.713 回答
0

if 和 else 必须在同一列对齐,这对我有用。

于 2018-05-06T02:16:01.787 回答
0

log_f.write 行中的括号不会相互抵消,在末尾添加一个额外的右括号,如下所示:

log_f.write("Name:%s \n Email: %s" % (name, email))
于 2021-08-17T06:25:19.420 回答