プログラミング入門II 宿題 2025.05.14

Back


1 から 365 の範囲の整数を乱数により1つ発生させ,それを今年(2025年)の元旦からの日数とします.(1 が1月1日で,365 が大晦日の12月31日ということです.)そのときに発生した乱数が何月何日の何曜日になるかを答えるプログラムを作成しましょう.

Student number: s246099

Day 60 in 2025: 1 of March, Saturday

------------------------

なお,以下のリストをあらかじめ用意しておくので,それを使用してプログラムを作成してください.

days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
month = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

発生させた乱数からリスト days の要素を先頭から順に引いていくと,負になったところが該当する月になりますね.また,その前の月までの日数の合計を乱数から引くと,その月の日にちになります.
解答用紙を使用する際には,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がPythonのプログラムとなっていますので,実行してエラーの無いことを確認してから提出してください.

指定の解答用紙を使用していない,実行時にエラーが出る,学生番号と名前が無い,というような答案は提出されても採点しません.注意してください.


解答例

# #############################
#
# プログラミング入門II 宿題 2025.5.14
# 学生番号:  s246099
# 氏名:     松江 花子
#
# #############################

import random

print('Student number: s246099')
print()

days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
month = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

num = random.randint(1, 365)
#num = 32
#num = 365
#num = 60
sum_d = 0

m = 0
while sum_d < num:
    sum_d += days[m]
    m += 1
else:
    m_index = m - 1

date = num - sum(days[:m_index])
w = (num + 1) % 7

#print(num, m_index, date)

print(f'Day {num} in 2025: {date} of {month[m_index]}, {week[w]}')

print('\n------------------------\n')


Back