题目概述: ''' 从控制台上分别输入年、月、日,计算输入的日期是这一年的第多少天 比如输入的是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}天')