python面试题之判断某日期是该年的第几天

题目概述:
'''
从控制台上分别输入年、月、日,计算输入的日期是这一年的第多少天
比如输入的是2023、2、1,输出的结果是2023年2月1日是2023年的第32天
'''
方法一:
#闰年:能被4整除,不能被100整除,或者仅可以被400整除
year=int(input("请输入年份:"))   #获取年份
mouth=int(input("请输入月份:"))  #获取月份
day=int(input("请输入第几天:"))   #获取日

ly=True
#首先判断输入的年份是否为闰年
if (year%4==0 and year%100!=0) or year%400==0:
    ly=True
else:
    ly=False

if ly==True: #若为闰年则2月份有29天
    MS=[31,29,31,30,31,30,31,31,30,31,30,31]
else:
    MS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

AllDayS=0
for i in range(1,13):   #从1到12逐一判断,以确定月份
    if mouth==i:
        for j in range(i-1):    #确定月份i之后,则将ms列表中的前i-1项相加
            AllDayS+=MS[j]
        print(f'{year}年,{mouth}月,第{day}天,是{year}年的第{AllDayS+day}天') #最后再加上“日”,即是答案

方法二:

#通过字符串一将对应时间存储
date=input("请输入对应的时间,格式为:yyyy-mm-dd:\n")
#通过切片,分别将年月日单独存储
year=int(date[0:4])
mouth=int(date[5:7])
day=int(date[8:10])
#print(year,mouth,day)  不确定取的是否正确,可以打印查看

alldays=0
for i in range(1,mouth):
    if i in [1,3,5,7,8,10,12]:
        alldays+=31
    elif i in [4,6,9,11]:
        alldays+=30
    elif i==2:
        if (year%4==0 and year%100!=0) or year%400==0:
            alldays+=29
        else:
            alldays+=28
alldays=alldays+day
print(f'{year}年、{mouth}月、{day}号,是{year}年的第{alldays}天')
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值