第2关:计算日期

year = int(input('year:'))
month = int(input('month:'))
day = int(input('day:'))
leap = year%4 # 闰年 (能被四整除的年份)
n = month-1
count = 0
date = 0
z = 0
tup_1 = (1,3,5,7,8,10,12) #大月 (有31天的月份的元组)
if year < 0 or month>12 or month<0 or day>31 or day<0:
    print('Input Error!')
else:
    if leap == 0:#闰年代表2月份只有29天
       #while语句的作用是记录有几个大月
       #例如 5月21日,在5月前,有2个大月,本月的天数已得出,因此不计大小月
        while (n >= tup_1[z]):
            count += 1
            z += 1
                
        date = 30*n+day-1+count
        #此外,将所有月份的天数看成30天
        #闰年则 -1 ,平年则 -2 
        #count 为大月的个数,+count
        #因此只需判断大月的个数以及平闰年2月份的天数
        #例如 2020年5月21日 30*4+21-1+2(闰年 2个大月)
        print(date)
    else:
        while (n >= tup_1[z]):
            count = count+1
            z = z+1
        date = 30*n+day-2+count
        print(date)

“”"
本关任务:编写程序,输入一个日期,包括年、月和日,计算该日期是这一年的第几天。

若输入的年份<0,则输出 “Input Error!”
若输入的月份小于0或大于12、或者输入的日期小于0或大于31,则提示“Input Error!”
若输入的为合法日期,,例如分别输入 year:2020 month:6 day:15 则输出:167

“”"

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-阿呆-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值