其他语法错误Python

时间:2013-05-10 03:13:39

标签: python if-statement

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

6 个答案:

答案 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处于同一缩进级别。 ifelse / 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必须在同一列中对齐,这对我来说很有效。