【Python】输入某年某月某日,判断这一天是这一年的第几天?

一、题目描述

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

二、解题思路

(一)解题基础

1.Python基础语法
2.流程控制
3.数据类型(字符串、列表)

(二)总体思路

由于一年的天数需要根据二月份的天数(28/29)来确定,而二月份的天数需要根据该年是否为闰年(平年28天/闰年29天)来确定。因此,先对年份进行是否是闰年的判断,确定二月份的天数,再根据月份计算前几个月的总天数Days,最后将Days与输入的Day相加得到第几天。

(三)编程思路

1.用变量Year、Month、Day分别保存用户通过input输入的年月日信息;
2.然后对Year进行闰年判断,闰年判断的条件是(Year%4== 0 and Year%100!=0) or (Year%400 == 0 and Year%3200!=0) or Year%172800==0),用if else语句判断,若满足条件,则二月份Feb=29,否则Feb=28;
3.然后根据月份Month确定月份循环累加的条件。设置变量month_num=1,Days=0,用while循环判断month_num<Month,满足条件则将month_num进行if elif else判断;
4.判断分为三类,一是,month_num为1/3/5/7/8/10/12,则Days+=31;二是month_num为4/6/9/11,则Days+=30;三是month_num为2,则Days+=Feb;然后Month+=1。循环累加后将得到的Days与Day相加得到第几天。
5.可以适当添加限制条件用while Ture判断输入的年月日是否合理,若不合理则给出警告,否则重新输入。

三、具体实现

(一)源代码

#判断第几天.py--根据输入的日期判断第几天?
while 1:
    Year,Month,Day=input("请输入年 月 日(空格隔开):").split()#同时输入多个值
    if Year.isdigit() and Month.isdigit() and Day.isdigit():#判断输入的日期是否为数字
        if 1<=eval(Month)<=12:                              #判断日期是否合理
            if 1<=eval(Day)<=31:
                break
    print("输入不合理!请重新输入!")

Year=eval(Year)
if (Year%4==0 and Year%100!=0) or (Year%400==0 and Year%3200!=0) or Year%172800==0:#判断闰年的条件
    Feb=29
else:
    Feb=28
    
Month_num=1
Days=0
Month_31=[1,3,5,7,8,10,12]#31天的月份
Month_30=[4,6,9,11]#30天的月份

while Month_num<eval(Month):#根据用户输入的月份循环累加天数
    if Month_num in Month_31:
        Days+=31
    elif Month_num in Month_30:
        Days+=30
    elif Month_num==2:
        Days+=Feb
    Month_num+=1
    
print("这一天是这一年的第{}天".format(Days+eval(Day)))        

(二)输入输出样例

1.输入:

请输入年 月 日(空格隔开):2022 10 二十五
输入不合理!请重新输入!
请输入年 月 日(空格隔开):2022 13 33
输入不合理!请重新输入!
请输入年 月 日(空格隔开):2022 10 25

2.输出:

这一天是这一年的第298
  • 11
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值