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

在网上查到的方法:

 1 # 思路:先判断是否为闰年,这关系到 2 月份的天数。
 2 # 之后再根据月份值把前几个月的天数累积加起来,最后再加上个“日”,就可以了。
 3 #闰年判断:四年一闰,百年不闰,400年再闰
 4 data = input('请输入某年某月某日:')
 5 #print(data)
 6 
 7 year = int(data[0:4])
 8 month = int(data[5:7])
 9 day = int(data[8:])
10 print(month)
11 '''y为闰年标识符'''
12 
13 
14 if year%100 == 0:
15     if year%400 == 0:
16         y = True
17         print("是闰年1")
18     else:
19         y = False
20         print('不是闰年1')
21 elif year%4 == 0:
22     y = True
23     print('是闰年')
24 else:
25     y = False
26     print('不是闰年')
27 
28 if y:
29     ms_day=[31,29,31,30,31,30,31,31,30,31,30,31]
30     print('1')
31 else:
32     ms_day=[31,28,31,30,31,30,31,31,30,31,30,31]
33     print('0')
34 days=0;
35 for i in range(1,13):
36     print(3)#从1到12逐一判断,以确定月份
37     if i==month:
38         for j in range(i-1): #确定月份i之后,则将ms列表中的前i-1项相加
39             days += ms_day[j]
40             print('%s是该年份的第%s天' % (data,(days+day)))

这种方法对于一月份无法实现计算

另解:

方法一:

这里需要用到datetime模块中的date类, 先导入该模块

datetime.date()的用法:

用法:targetDay = datetime.date(year, month, day)

传入年月日,返回一个date类型的时间

1 targetDay = datetime.date(2020, 1, 1)
2 print(type(targetDay)) # 结果:<class 'datetime.date'>
3 print(targetDay)  # 2019-01-01

date类型的对象的方法:
 1. targetDay.year # 返回targetDay年份
 2. targetDay.month # 返回targetDay月份
 3. targetDay.day # 返回targetDay对应该月份的天数
 4. targetDay.weekday() # 返回targetDay那天对应是星期几
 5. targetDay.isoformat() # 返回格式’YYYY-MM-DD’表示日期的字符串
 6. targetDay.ctime() # 返回表示日期的字符串
 5. targetDay.strftime(format) # 返回一个表示日期的字符串,由显式的格式字符串控制。引用小时、分钟和秒的格式代码的值将为0
   特别:date类型对象之间可以相减,返回值是俩者之间的间隔的天数

1 import datetime
2 targetDay = datetime.date(2020, 2, 1)
3 nowDay = datetime.date.today()
4 count_day = nowDay - targetDay
5 print(count_day)  # 结果:22 days, 0:00:00

运行结果:

1 请输入4位数的年份:2020
2 请输入月份:2
3 请输入当月哪一天:1
4 2020-02-01是2020年的第32 days, 0:00:00天.

猜你喜欢

转载自www.cnblogs.com/insight-cm/p/12348383.html