プログラミング入門I 宿題 2024.05.08

Back


1から366の整数のどれか1つを乱数により発生させ,それを今年に入ってからの日数とします.その日が何月何日の何曜日かを答えるプログラムを作成しましょう.ただし,以下に示すリストを使用します.

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

Student number: s236099

Day 365 of this year is Monday, 30 of December.

あらかじめわかっている日を入れて結果が実際のものと合っているか,確認しながら進めることをお勧めします.例えば,32だと2月1日で木曜日とかですね.
曜日は剰余で簡単ですが,月と日を出すのは反復処理を使ってちょっと工夫する必要があります.
解答用紙を使用する際には,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がPythonのプログラムとなっていますので,実行してエラーの無いことを確認してから提出してください.

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


解答例

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

import random

print('Student number: s236099')
print('')

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

date = random.randint(1, 366)
date = 365
w = date % 7
print(f'Day {date} of this year is {week[w]}, ', end = '')

m = 0
i = 0
while date > 0:
    date -= days[i]
    m += 1
    i += 1
else:
    m -= 1
    date += days[i - 1]

print(f'{date} of {month[m]}.') 


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


Back