移動前ブクマページ: 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|
カレンダーモジュールがあるらしいので、それ使うともっと楽になると思われる。