python代码实现计算某一天是一周中的第几天

给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。输入为三个整数:`day`、`month` 和 `year`,分别表示日、月、年。给出的日期一定是在 `1971` 到 `2100` 年之间的有效日期。

输入:day = 31, month = 8, year = 2019

输出:"Saturday"

1970年12月31号星期四,以这天为基准点

class Solution:
    def dayOfTheWeek(self, day: int, month: int, year: int) -> str:
        dictn=[0,31,59,90,120,151,181,212,243,273,304,334]
        dictw = ['Thursday','Friday','Saturday','Sunday',
                 'Monday','Tuesday','Wednesday']
        # 判断是否为闰年,普通年数能整除4,整百年数要能除以400
        def isrunyear(year):
            if (year%4==0 and year%100!=0) or year%400==0:
                return True
            else:
                return False
        num=0
        alldays=0
        # 算算有 num 个闰年,额外加上 num 天
        for i in range(1971,year):
            if isrunyear(i):
                num+=1
        alldays = (year-1971)*365+num
        alldays += dictn[month-1]+day  # 加上今年的天数
        if isrunyear(year) and month>2:  # 如果今年是闰年,并且大于2月份,再加1天 
            alldays+=1
        week = alldays%7
        return dictw[week]

你可能感兴趣的:(算法,数据结构,python,面试)