Python笔记-CSP 201509-2 日期计算

文章目录

  • 一、题目
  • 二、算法思想
  • 三、代码

一、题目

Python笔记-CSP 201509-2 日期计算_第1张图片

二、算法思想

  • 原本想要使用if语句来进行每个月份的判断,之后发现使用这种方法的话就会出现许多的if语句嵌套,不利于逻辑的纠错,经过思考后,发现使用字典会使代码更加简洁些。
  • 使用字典来存储十二个月份中每个月的天数,针对二月时需要对年份进行判断,如果为闰年时就为29天,平年时为28天。
  • 使用february函数进行二月天数的求解,输入年份year,如果为4倍数且不为100倍数时返回29天;如果为400倍数时返回29天,剩下的情况就是平年返回28天。

Python笔记-CSP 201509-2 日期计算_第2张图片

  • 在主函数中,yearday分别保存年份和总天数,使用num来存储前几个月份的天数总和,以便之后在计算到第i个月份时的判断;
  • 然后遍历月份字典dici为键、j为值
  • 如果前几个月的天数加上此月的天数比day大时,就说明找到了对应的月份,将day的值减去前几个月的总天数num就是当前月份的日期;
  • 如果不位于此月份内,就添加当前月份的天数到num中。

三、代码

在这里插入图片描述

# coding=utf-8
# 作者:小狐狸
# 题目:日期计算
def february(year):
    '''根据年份返回二月份天数'''
    if year%4==0 and year%100!=0: #闰年
        return 29
    if year%400==0: #闰年
        return 29
    return 28 #平年

if __name__=='__main__':
    year = int(input())
    day = int(input())
    dic = {
     } #各月份对应天数
    dic[1] = 31
    dic[2] = february(year)
    dic[3] = 31
    dic[4] = 30
    dic[5] = 31
    dic[6] = 30
    dic[7] = 31
    dic[8] = 31
    dic[9] = 30
    dic[10] = 31
    dic[11] = 30
    dic[12] = 31
    num = 0 #前几个月份的天数和
    for i,j in dic.items():
        if num+j>=day: #位于此月内
            day -= num #减去前几个月的天数
            #输出
            print(i)
            print(day)
            break
        num += j #添加月份

你可能感兴趣的:(Python,CSP,python,csp)