美文网首页
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