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}天')

你可能感兴趣的:(算法,服务器,python)