Python实例004:输入某年某月某日,判断日期的正确合理性以及输出该天是该年的第几天

Python实例004:

输入某年某月某日,判断日期的正确合理性以及输出该天是该年的第几天?

  • 运用if判断语句、while循环语句、函数、算术运算符、比较(关系)运算符、赋值运算符、逻辑运算符、成员运算符、运算符优先级。。
#!/usr/bin/env python3
# -*- coding:utf-8 -*-

flag = True
while flag :
    Date = input('请输入正确合理的年月日(其输入格式如yyyy-mm-dd):')
    # split('-')函数利用分隔符(,/;/空格/-等)将每个字符进行分隔
    Date = Date.split('-')
    # for循环将每个字符转换为int值
    for n in range( len(Date) ) :
        Date[n] = int( Date[n] )
    Year = Date[0]; Month = Date[1]; Day = Date[2]
    # if判断输入的年月日的正确合理性
    if (0 < Month <= 12) :
        flag = False
        if ((Month in (1, 3, 5, 7, 8, 10, 12)) and (Day > 31 or Day < 0)) :     # Python成员运算符(in / not in)
            flag = True
            print('输入的日期有误,%d月为大月,最多31天。请重新输入!\n' % Month )
        if ((Month in (4, 6, 9, 11)) and (Day > 30 or Day < 0)) :
            flag = True
            print('输入的日期有误,%d月为小月,最多30天。请重新输入!\n' % Month )
        if (Month == 2) :
            if (((Year % 4 == 0) and (Year % 100 != 0)) or (Year % 400 == 0)) :
                if (Day > 29 or Day < 0) :
                    flag = True
                    print('输入的日期有误,该年2月为闰年2月,最多29天。请重新输入!\n')
            else:
                if (Day > 28 or Day < 0):
                    flag = True
                    print('输入的日期有误,该年2月为平年2月,最多28天。请重新输入!\n')
    else :
        flag = True
        print('输入的月份有误,每年只有12个月份。请重新输入!\n')


Ordi_y_day = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365] #平年月份分段天数
Leap_y_day = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366] #闰年月份分段天数

if ( ( (Year % 4 == 0) and (Year % 100 != 0) ) or (Year % 400 == 0) ) :
    D_counter = Leap_y_day[ Month - 1 ] + Day
    print(Year,'年是闰年,', Month,'月', Day,'日是该年的第', D_counter,'天')
else :
    D_counter = Ordi_y_day[ Month - 1 ] + Day
    print('%d年是平年,%d月%d日是该年的第%d天' % (Year, Month, Day, D_counter) )

运行结果如下

  • 结果1
请输入正确合理的年月日(其输入格式如yyyy-mm-dd):2019-15-10
输入的月份有误,每年只有12个月份。请重新输入!

请输入正确合理的年月日(其输入格式如yyyy-mm-dd):2019-02-09
2019年是平年,2月9日是该年的第40天
  • 结果2
请输入正确合理的年月日(其输入格式如yyyy-mm-dd):2019-01-32
输入的日期有误,1月为大月,最多31天。请重新输入!

请输入正确合理的年月日(其输入格式如yyyy-mm-dd):2019-02-29
输入的日期有误,该年2月为平年2月,最多28天。请重新输入!

请输入正确合理的年月日(其输入格式如yyyy-mm-dd):2019-04-31
输入的日期有误,4月为小月,最多30天。请重新输入!

请输入正确合理的年月日(其输入格式如yyyy-mm-dd):2020-02-30
输入的日期有误,该年2月为闰年2月,最多29天。请重新输入!

请输入正确合理的年月日(其输入格式如yyyy-mm-dd):2019-02-28
2019年是平年,2月28日是该年的第59天
  • 结果3
请输入正确合理的年月日(其输入格式如yyyy-mm-dd):2019-03-01
2019年是平年,3月1日是该年的第60天
  • 结果4
请输入正确合理的年月日(其输入格式如yyyy-mm-dd):2020-03-01
2020 年是闰年, 3 月 1 日是该年的第 61 天
  • 致谢
    若对大家有用,感谢点赞或评论;若有不足或补充之处,也感谢大家评论进行指正,后期我将对本文进行补充完善。相信这是互相进步的开始!

你可能感兴趣的:(编程语言PL,______Python,Case,软件开发技术_Python)