问题描述
日期名称 给定该月第一天的工作日,确定该月中给定日期的星期几。
说明 在给定的示例中,D = 星期一。由于每月的 1 号是星期一,这意味着该月的 7 号和 14 号也将是星期一(一周有 7 天)。因此,该月的第 16 天 (N = 16) 将是星期二。
所以,输出应该是星期二。
示例输入 1: 周一 16
示例输出 1: 周二
示例输入 2: 周二 17
示例输出 2: 星期四
方法:
def determine_day_by_number(start_day: str,month_day_number: int):
number_to_day = dict(
[[1,'Monday'],[2,'Tuesday'],[3,'Wednesday'],[4,'Thursday'],[5,'Friday'],[6,'Saturday'],[7,'Sunday']])
day_to_number = dict(zip(number_to_day.values(),number_to_day.keys()))
if start_day not in number_to_day.values():
print('Wrong day name')
exit()
start_day_number = day_to_number[start_day]
shift = get_day_shift(start_day_number,month_day_number)
number_of_required_day = start_day_number + shift
return number_to_day[number_of_required_day]
def get_day_shift(start_day_number: int,month_day_number: int):
shift = month_day_number
if start_day_number + shift > 7:
number_of_full_weeks = shift // 7
shift -= 7 * number_of_full_weeks
elif start_day_number == 1:
return start_day_number
return shift if not start_day_number + shift > 7 else shift - 7
start_day = input()
month_day_number = int(input())
day = determine_day_by_number(start_day,month_day_number)
print(day)
输入:
星期二
1
输出应该是: 周二
我的输出: 周三
解决方法
def determine_day_by_number(start_day: str,month_day_number: int):
number_to_day = dict(
[[1,'Monday'],[2,'Tuesday'],[3,'Wednesday'],[4,'Thursday'],[5,'Friday'],[6,'Saturday'],[7,'Sunday']])
day_to_number = dict(zip(number_to_day.values(),number_to_day.keys()))
if start_day not in number_to_day.values():
print('Wrong day name')
exit()
start_day_number = day_to_number[start_day]
shift = get_day_shift(start_day_number,month_day_number)
number_of_required_day = start_day_number + shift
return number_to_day[number_of_required_day]
def get_day_shift(start_day_number: int,month_day_number: int):
shift = month_day_number
if start_day_number + shift > 7:
number_of_full_weeks = shift // 7
shift -= 7 * number_of_full_weeks + 1
return shift if not start_day_number + shift > 7 else shift - 7
def main():
start_day = input()
month_day_number = int(input())
day = determine_day_by_number(start_day,month_day_number)
print(day)
if __name__ == '__main__':
main()