移動前ブクマページ: https://b.hatena.ne.jp/entry/s/elve.hateblo.jp/entry/2018/02/12/210255
難しいなぁ ====
#入力された年月からカレンダーを生成 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 get_lastday(nen, tuki): #月末算出用 if tuki == 12: nen2 = nen + 1 tuki2 = 1 else: nen2 = nen tuki2 = tuki + 1 d = datetime.date(nen2, tuki2, 1) - datetime.timedelta(days = 1) return d def output_day(my_cal): #カレンダー1週分出力 for j in range(7): if my_cal[j] != 0: print('|{0:2d}'.format(my_cal[j]), end="") else: print('| ', end="") print('|') 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(6)] #1週目 #最初の週の日数 f_w = first_week(datetime.date(nen,tuki,1)) cal = f_w i = 6 #1週目の日数分ループ while cal > 0: #1週目の土曜日から1日まで埋めていく my_cal[0][i] = cal i -= 1 cal -= 1 #2-5週目 i = 0 j = 1 #日付 cal = f_w + 1 #月末算出用 d = get_lastday(nen, tuki) #日付が月末になるまでループ 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(6): if my_cal[i][0] != 0 or my_cal[i][6] != 0: #カレンダー1週分出力 output_day(my_cal[i]) #実行 args = sys.argv test_func(int(args[1]),int(args[2]))
これで
C:\python>python test.py 2018 1 2018年1月 |日|月|火|水|木|金|土| | | 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| | | | C:\python>python test.py 2018 2 2018年2月 |日|月|火|水|木|金|土| | | | | | 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| | | | C:\python>python test.py 2018 3 2018年3月 |日|月|火|水|木|金|土| | | | | | 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| C:\python>python test.py 2018 4 2018年4月 |日|月|火|水|木|金|土| | 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| | | | | | C:\python>python test.py 2018 5 2018年5月 |日|月|火|水|木|金|土| | | | 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| | | C:\python>python test.py 2018 6 2018年6月 |日|月|火|水|木|金|土| | | | | | | 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| C:\python>python test.py 2018 12 2018年12月 |日|月|火|水|木|金|土| | | | | | | | 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| | | | | |
どや!!(><)