2017-09-30 45 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

相关问题