美文网首页
python计算星期|2019北航专业课算法考题

python计算星期|2019北航专业课算法考题

作者: _简_述_ | 来源:发表于2019-01-06 19:30 被阅读0次

    闲砍

    小鹏今年刚经历2019考研,当然不是很理想,准备继续再来一年。由于平时工作繁忙,压力也比较大,每天仅有晚上的2个多小时的学习时间,自然做题熟练度欠佳不过这都是给自己的一些借口罢了,重要的还时学习方法和效率。下面就回忆一道北航911 专业试题,由于不熟,考试的时候只写了算法思想,并没有用代码写出来,最近趁着学习python 重新写一下,以缓解我心理的遗憾。

    试题大概描述

    假如公元1年1月1日是星期一,那么如果随意输入一个年月日,判断是星期几。
    (为方便验证,我从1900年1月1日开始,因为万年历从1900年开始的...)

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    '''
    闰年的计算方法
    如果是世纪年,如1900,2000等可以被100整除的年份,只有可以被400整除的年份是闰年,其他年份是平年;
    其他不是世纪年的年份可以被4整除的就是闰年,否则就是平年。
    '''
    def is_leap_year(year):
        if year % 100 == 0:
            if year % 400  == 0:
                return True
            else:
                return False
        else:
            if year % 4 == 0:
                return True
            else:
                return False
    '''
    算法思想:通过闰年、和每月天数的不同,计算出输入的日期和1900年1月1日相差多少天,然后取余就出来了。
    难点在于判断闰年和月份的天数。
    '''
    def day_num(year,month,day):
        #闰年、平年天数
        lyear=0 
        cyear=0
        #月天数
        month_num=0
        Lyear_month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        Cyear_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
         #计算相差多少年
        if year>1900:
            for i in range(1900,year):
                if is_leap_year(i):
                    lyear+=1
                else:
                    cyear+=1
        #计算相差多少月
        if month>1:
            if is_leap_year(year):
                for j in range(1,month):
                    month_num+=Lyear_month[j-1]
            else:
                for k in range(1,month):
                    month_num+=Cyear_month[k-1]
        else:
            month_num=0
        return lyear*366+cyear*365+month_num+day-1
    #定义星期
    def is_week(day):
        week=['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
        return week[day%7]
    if __name__ == '__main__':
        year=input("请输入年份:")
        month = input("请输入月份:")
        day = input("请输入日:")
        num=day_num(year, month, day)
        week=is_week(num)
        print week
    

    输出结果

    请输入年份:2019
    请输入月份:1
    请输入日:6
    星期日
    

    相关文章

      网友评论

          本文标题:python计算星期|2019北航专业课算法考题

          本文链接:https://www.haomeiwen.com/subject/xdmsrqtx.html