2013-05-10 102 views
0
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,它仍然給出錯誤。我該怎麼辦?其他語法錯誤Python

+0

您需要縮進代碼。 – Linuxios 2013-05-10 03:15:06

+2

請閱讀[格式幫助](http://stackoverflow.com/editing-help)瞭解如何在帖子中設置代碼格式。不要插入所有'
'標籤。 – BrenBarn 2013-05-10 03:17:26

回答

2

您的log_f.write語句也缺少結尾的')',這可能會使解析器混淆......並且縮進看起來不正確。剪切和粘貼問題?

+0

問題是'else' ..接受答案,'圓括號.. ..怪異但真.. :) – pradyunsg 2013-05-10 04:00:34

1

你不能像Python那樣做else。你應該這樣做(假設你的標籤是在現實生活中是正確的):

elif len(user_hash) < 0:

和如前所述,你缺少一個右括號。

+0

正如所寫的,他的'else'屬於'for','for'語句不能帶'elif'。但是,看起來這可能是由於不良複製導致的縮進錯誤。 – Cairnarvon 2013-05-10 03:24:49

1

您無法提供else聲明的條件。 else的意思是「其他的一切」 - 也就是說,除了您在之前的if中指定的任何其他條件。目前尚不清楚你想用else來完成什麼,但也許你的意思是它是if

它也可能是一個elif(「如果其他人」),但如果你的意思是它是較早if子句的else,那麼你需要取消縮進它,所以它是有相同的縮進水平爲if。一個if和它的else/elif必須排列在相同的縮進級別。

(有這樣的事,作爲一個for聲明的else條款,但它看起來並不像這就是你想要的這裏。)

6

在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

你可以做else使用Python for循環,但你需要在平衡你的括號:

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

這實際上應該是

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

(注意額外的最終括號)。