2016-09-28 4 views
1

calendar.Calendar()。itermonthdays()の呼び出しによって作成されたイテレータから追加のゼロが表示されています。余分な '0は、カレンダーパッケージのitermonthdaysイテレータからです...これはバグですか?

これはバグですか、またはCalendarオブジェクトを正しく設定していませんか?

以下の例を参照してください:

for i in day.itermonthdays2(2016, 2): 
    print(i) 

スニップ:ゼロ週の日の残りの部分です

import calendar 

day = calendar.Calendar() 

for i in day.itermonthdays(2016,2): 
    print(i) 

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
0 
0 
0 
0 
0 
0 
+0

彼らはどこから来ていますか?私はイテレータを呼び出すだけです。 –

+0

@PadraicCunninghamはい、申し訳ありませんが、再入力していました。それは2016年でした。 –

+0

@PadraicCunninghamだからitermonthdaysはその月と年の連続する曜日の数字を返すジェネレータを返すことになっています。 StopIteration例外を返すにはあまりにも多くの反復が必要なようです。 –

答えて

0

我々はもう少し明確に何が起こっているのかitermonthdays2を呼び出す場合、私たちが見ることができますoutout:

(27, 5) 
(28, 6) 
(29, 0) # ends on Sunday/0 
(0, 1) # we get the rest of the week even though it is March 
(0, 2) 
(0, 3) 
(0, 4) 
(0, 5) 
(0, 6) 

私たちは4月を使用する場合:

for i in day.itermonthdays2(2016, 4): 
    print(i) 

それは次のように起動します:月は日曜日に始まり、あなたは次/前の数ヶ月の日数の一部が表示されます土曜日に終了しない限り

ので
(0, 0) 
(0, 1) 
(0, 2) 
(0, 3) 
(1, 4) # April starts here but not a Sunday so we get the days from March above 
(2, 5) 
(3, 6) 
(4, 0) 

+0

ありがとうございます。助けたトン! –

+0

心配する必要はありません。どうぞよろしくお願いいたします。 –

関連する問題