2017-09-30 44 views
0

我對python非常陌生,所以請原諒任何基本錯誤。 我從網站上獲取了這段代碼(它看起來相當簡單),所以我認爲它會起作用。基本上,我希望這個代碼塊能夠打印出2015年到2016年間的所有日期。據我所知,縮進看起來很好。 我嘗試調整縮進以及,但我沒有得到這個工作的任何運氣。任何幫助將不勝感激。嵌套for循環IndentationError:預計使用日曆模塊時的縮進塊

import calendar 

cal = calendar.Calendar() 

for year in range(2015,2016): 
    for month in range(1,13): 
     monthdays = [d for d in cal.itermonthdays(year,month) if d != 0]  
     for day in monthdays: 
      r = str(year) + str(month) + str(day) 
      print(r) 

每當代碼運行,我得到這個錯誤:

>>> for year in range(2015,2016): 
... for month in range(1,13): 
File "<stdin>", line 2 
    for month in range(1,13): 
    ^
IndentationError: expected an indented block 
>>> monthdays = [d for d in cal.itermonthdays(year,month) if d != 0] 
>>> for day in monthdays: 
... r = str(year) + str(month) + str(day) 
File "<stdin>", line 2 
    r = str(year) + str(month) + str(day) 
    ^
IndentationError: expected an indented block 

在此先感謝。

+0

後的聲明中,4個空格縮進需要 – Vinny

+0

是您的代碼縮進完全一樣,你的問題?我有一種感覺,複製/粘貼到你的編輯器搞砸了縮進,但複製/粘貼到問題在這裏保存它。 – roganjosh

+0

你只使用空格嗎? Python不喜歡,如果你混合製表符和空格來縮進 – FlorianGD

回答

1

縮進在Python中很重要。如果您之前有代碼C或Java,則塊位於{}之間,但在Python中不同,:之後的縮進行被認爲是「塊」。在if,while, def等之後的行必須縮進更多,可以是空格或製表符。

問題是,您可能將該代碼複製並粘貼到IDE或終端中,並且縮進未保留。

看看這些行:

>>> for year in range(2015,2016): 
    ... for month in range(1,13): 

兩個for在同一個縮進級別,他們之前沒有空格/選項卡。這是問題。它應該是:

>>> for year in range(2015,2016): 
    ...  for month in range(1,13): 

縮進可以是空格,兩個空格或更多或製表符,只要它們一致即可。

等等......

+0

我剛把代碼拿出來放到記事本中。然後,我將縮進更改爲每個縮進2個空格。發生同樣的錯誤。 – JiggidyJoe

+0

我剛剛將代碼輸入到記事本中。沒有剪切和粘貼。而同樣的錯誤仍然會發生。 – JiggidyJoe

+0

@JiggidyJoe你確定代碼和你的問題完全一樣嗎?如果是這樣,請檢查空間或標籤的一致性。或者從您的問題中複製它,而不是從您最初複製的網站複製。 – BornToCode

相關問題