「うるう年」と「1981年1月1日の曜日」を考慮して,正しい曜日や日数差が出力されるよう書き換えてください。という課題があるのですが難しくて分からないです。
助けていただけませんか?
以下のコードを下の条件やヒントをもとに書き換えるみたいです。
・条件
1981年1月1日から2080年12月31日までに限定すると,西暦年号が4で割り切れる年はうるう年である.
1981年1月1日は木曜日である.
【ヒント】
うるう年は年間日数が1日多いので,1981年からある年の前年までにうるう年がn回あったとすると,その年の1月1日までの日数はn日増え,曜日もnだけずれることになる. nの値は,1981年からの年数の差が4となる1985年に1,8となる1989年に2,...と4年ごとに1つずつ増えていくので,1981年からある年までの年数を4で割ればnを求めることができる.
ある年がうるう年であるかどうかは,その西暦年号が4で割り切れるかどうかで調べることができる.うるう年だと,3月以降は,その年の1月1日からの日数が1日増え,曜日も1つずれることになる.
「課題5-2」までは簡単のため「1981年1月1日は日曜日」としていたが,ここでは,実際の暦どおり「木曜日」としている.日曜日と木曜日では曜日としての差は「4」と考えることができる.そこで,まずは今まで通りに曜日を求め,その上で曜日を4つずらせば...
入力例
19810101
20220523
出力例
Target Thursday
Today Monday
Delta is 15117 day(s)
入力例
20200229
20200301
出力例
Target Saturday
Today Sunday
Delta is 1 day(s)
year_month_day = input() year_month_day = int(year_month_day) today_year_month_day = input() today_year_month_day = int(today_year_month_day) def calc_daycount_and_dayofweek(year_month_day, today_year_month_day): month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,31] day_week = ['Saturday', 'Friday', 'Tursday', 'Wednesday', 'Tuesday', 'Monday', 'Sunday'] quotient1 = year_month_day // 100 // 100 quotient2 = today_year_month_day // 100 // 100 remainder1 = year_month_day % 100 remainder2 = year_month_day // 100 % 100 remainder3 = today_year_month_day % 100 remainder4 = today_year_month_day // 100 % 100 if quotient1 > quotient2: daycount = (quotient1 - quotient2) * 365 + (sum((month[:remainder2])) + remainder1) -1 elif quotient2 > quotient1: daycount = (quotient2 - quotient1) * 365 + (sum((month[:remainder4])) + remainder3) -1 dayofweek = day_week[- daycount % 7] return (daycount, dayofweek) def output_result(days_weeks): print('Target', days_weeks[1]) print('Today', 'Monday') print(f'Delta is {days_weeks[0]} day(s)') days_weeks = calc_daycount_and_dayofweek(year_month_day, today_year_month_day) output_result(days_weeks) コード
あなたの回答
tips
プレビュー