首页 > 解决方案 > 确定该月给定日期的星期几。给定每月第一天的工作日

问题描述

日期名称 给定该月第一天的工作日,确定该月给定日期的星期几。

输入 第一行是一个字符串 D。第二行是一个整数 N。

输出 输出应该是一个字符串。

说明 在给定的示例中,D = 星期一。由于每月的第一天是星期一,这意味着每月的 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

输出应该是:星期二

我的输出:星期三

标签: pythondatetimefinddayofmonth

解决方案


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()
    

推荐阅读