日期计算:输入某年某月某日,判断这一天是这一年的第几天?

编程:日期计算:输入某年某月某日,判断这一天是这一年的第几天?

1).程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第 几天, 特殊情况,闰年且输入月份大于3时需考虑多加一天。

2).如果输入的月份大于12时提示错误,重新输入

3).如果月份为小月,天数大于30时提示错误,重新输入

4).如果月份为大月,天数大于31时提示错误,重新输入

5).如果年份为平年,2月天数大于28时提示错误,重新输入

6).如果年份为闰年,2月天数大于29时提示错误,重新输入

 def checkYear():   # 检查输入的年份是否为闰年
     year = int(input("年份:"))
     if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
         marks = True
     else:
         marks = False
     return marks,year
 def getMonth():  # 检查输入的月份是否合法
     while True:
         month = int(input('月份:'))
         if month < 1 or month > 12:
             print('月份输入错误,请重新输入')
             continue
         else:
             return month
 def getDay(month,marks):  # 检查输入的天数是否合法
     while True:
         day = int(input('天数:'))
         if day < 1 or day > 31:
             print('天数输入错误,请重新输入')
             continue
         else:
             if month in (4, 6, 9, 11):
                 if day > 30:
                     print('小月天数不能大于30,请重新输入')
                     continue
             if month == 2:
                 if marks and day > 29:
                     print('闰年2月天数不能大于29,请重新输入')
                     continue
                 if marks == False and day > 28:
                     print('平2月天数不能大于28,请重新输入')
                     continue
         return day
 def getSumDays(year,month,day,marks):
     sumDays = 0
     for i in range(1, month):
         if i in (1, 3, 5, 7, 8, 10, 12):
             sumDays += 31
         elif i in (4, 6, 9, 11):
             sumDays += 30
         else:
             if marks:
                 sumDays += 29
             else:
                 sumDays += 28
     sumDays += day
     print('%d年%d月%d日为%d年的第%d天' % (year, month, day, year, sumDays))
 
 m, year = checkYear()
 month = getMonth()
 day = getDay(month, m)
 getSumDays(year, month, day, m)
#(分别写年月日函数进行判断)
#2 写函数,接收两个数字参数,返回比较大的那个数字。
 def my_sum(a,b):
     if a-b>0:
         return a
     elif a-b==0:
         return a
     else:
         return b
 c=my_sum(1,2)
 print(c)
在这里插入代码片
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

逆风微笑的程序猿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值