2014-12-19 48 views
1

我有一種感覺,我會感到愚蠢的時候回答,但我真的很困惑。Python語法錯誤與賦值

我已經減少了Python(2.6.4)的代碼如下:

k = 0 
if k == 1: 
    k = 0 
else: 
    k = 1 
k = 3 

我在k = 3出現語法錯誤。我錯過了什麼。

+1

無法重現。按書面表現良好運作。 – CoryKramer

+2

請編輯您的問題,並添加**全文**的錯誤 – MattDMo

+0

您是否將此粘貼到交互式解釋器中?如果是這樣,你需要在任何頂級複合語句之後添加* newlines *,因此在'k = 1'之後。 –

回答

2

您必須使用交互式解釋器。您k = 3之前需要一個空行:

>>> k = 0 
>>> if k == 1: 
... k = 0 
... else: 
... k = 1 
... k = 3 
    File "<stdin>", line 5 
    k = 3 
    ^
SyntaxError: invalid syntax 
>>> 
>>> k = 0 
>>> if k == 1: 
... k = 0 
... else: 
... k = 1 
... 
>>> k = 3 

這告訴Python的if...else語句執行完畢。

請注意,這隻在解釋器中是必需的。在閱讀普通源文件時,Python不會像這樣關注垂直行空間。

+0

有趣的是,我不知道。我按照你的說法試了一下,效果很好。問題的根源是一個web服務器上的python文件(apache)。代碼還有一點,但有或沒有額外的行解釋只是保釋。我不知道這是否是語法問題。 – doug

+0

好吧,我明白了,是的,我確實感到很蠢。這裏是一個例子 dict = {'l':'test','m':'test_again'} 如果鍵=='l': : dict ['k'] ='test_also ' 它確實不喜歡改變字典的大小。 – doug

+0

迭代時,不能更改字典的大小。這搞砸了Python的迭代協議。相反,你需要從舊的值中創建一個新的字典。 – iCodez