No.1487 第4回修正カレンダー出力プログラム

移動前ブクマページ: 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|  |  |  |  |  |

どや!!(><)

どのくらい面白かった?

星を押して送信してね

平均 0 / 5. Vote count: 0

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

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

コメントする

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