侧边栏壁纸
博主头像
问道

问道的小花园,总能给你带来惊喜

  • 累计撰写 68 篇文章
  • 累计创建 35 个标签
  • 累计收到 6 条评论

python全项目实战系列(九):输出日期是这年的第几天

问道
2022-07-16 / 0 评论 / 0 点赞 / 461 阅读 / 1,498 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-07-16,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

本系列旨在通过一系列由浅入深的python实战代码或项目,使普通人也能感受到编程的乐趣,编程能够在平时的工作生活上有所帮助。欢迎查看系列的开篇词和前面文章。

概述

输入某年某月某日,判断这一天是该年的第几天。

要先判断输入的月份是否合规,月份要在1-12之间。其次要判断日期是否合规,大月有31天,小月有30天,2月根据闰年还是平年判断。

还要判断年份是否为闰年,如果是闰年切月份大于3时,要加上一天。

代码实现过程

代码中主要用到if else的判断,并相互嵌套,考虑的情况也比较多。对理解python条件判断有帮助。

  1. 先输入年月日,分别enter回车确认
year = int(input('年份:\n'))
month = int(input('月份:\n'))
day = int(input('日期:\n'))

  1. 按照平年来累计日期递增的天数
  2. 根据月份类型进行分别判断,并检验日期输入是否合规,再打印出是该年的第几天。
#先输入年月日,分别enter回车确认
year = int(input('年份:\n'))
month = int(input('月份:\n'))
day = int(input('日期:\n'))

#按照平年来累计日期递增的天数
months = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334)
if 0 <= month <= 12:
    sum = months[month - 1]
else:
    print('月份输入错误')
#根据是第几个月份,算出了前面月份的累计天数加上该月日期数
sum += day
leap = 0

# 大月 1 3 5 7 8 10 12,小月 4 6 9 11,闰月 2
#根据月份类型进行分别判断,并检验日期输入是否合规,再打印出是该年的第几天。
if month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12:
    if 0 <= day <= 31:
        if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
            leap = 1
        if (leap == 1) and (month > 2):
            sum += 1
        print('是今年的第 %d 天.' % sum)
    else:
        print("日期输入有误")
elif month == 4 or month == 6 or month == 9 or month == 11:
    if 0 <= day <= 30:
        if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
            leap = 1
        if (leap == 1) and (month > 2):
            sum += 1
        print('是今年的第 %d 天.' % sum)
    else:
        print("日期输入有误")
elif month == 2:
    if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
        leap = 1
        if 0 <= day <= 29:
            if (leap == 1) and (month > 2):
                sum += 1
            print('是今年的第 %d 天.' % sum)
        else:
            print("闰年2月日期不应大于29")
    else:
        if 0 <= day <= 28:
            print('是今年的第 %d 天.' % sum)
        else:
            print("平年2月日期不应大于28")
else:
    print('月份错误,无法计算')

测试结果:

年份:
2016
月份:
2
日期:
29
是今年的第 60 天.

日期输入不规范时则不计算

年份:
2016
月份:
2
日期:
30
闰年2月日期不应大于29
0

评论区