No.1486 第4回カレンダーを出力するプログラム

移動前ブクマページ: https://b.hatena.ne.jp/entry/s/elve.hateblo.jp/entry/2018/02/12/172155

※バグってました
突然飛ぶのだった。

====

アレコレ調べながら作ってみた。本当は0だったら出力しないってしたかったけど、ちょっとわからんから0出力
何年まで出力できるのかもちょっとよくわからんかったのでチェックしてない。
あー12月でエラーでルー

#入力された年月からカレンダーを生成
import datetime
import sys
def first_week(d):
#最初の週の日数
youbi=d.weekday()
if youbi == 6:
#1日が日曜日=1週目フル
ret = 7
else:
#それ以外
#月=0~土=5
ret = 7 - youbi - 1
return ret
def test_func(nen, tuki):
#年チェック
if nen == 0:
print("年の指定がおかしいよ: " + str(nen))
return
#月チェック
if tuki == 0 or tuki > 12:
print("月の指定がおかしいよ: " + str(tuki))
return
#7日×5週
my_cal = [[0 for i in range(7)] for j in range(5)]
#1週目
f_w = first_week(datetime.date(nen,tuki,1))
cal = f_w
i = 6
while cal > 0:
my_cal[0][i] = cal
i -= 1
cal -= 1
#2-5週目
i = 0
j = 1
cal = f_w + 1
d = datetime.date(nen, tuki + 1, 1) - datetime.timedelta(days = 1)
while cal <= d.day:
my_cal[j][i] = cal
i += 1
if i > 6:
j += 1
i = 0
cal += 1
#出力
print( str(nen) + "年" + str(tuki) + "月")
print("|日|月|火|水|木|金|土|")
for i in range(5):
print('|{0[0]:2d}|{0[1]:2d}|{0[2]:2d}|{0[3]:2d}|{0[4]:2d}|{0[5]:2d}|{0[6]:2d}|'.format(my_cal[i]))
#実行
args = sys.argv
test_func(int(args[1]),int(args[2]))

これをtest.pyってファイルに保存してコンソールから実行

C:\python>python test.py 2018 1
2018年1月
|日|月|火|水|木|金|土|
| 0| 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|30|31| 0| 0| 0|

カレンダーモジュールがあるらしいので、それ使うともっと楽になると思われる。

どのくらい面白かった?

星を押して送信してね

平均 0 / 5. Vote count: 0

是非フォローしてください

最新の情報をお伝えします

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です