1. 题目🔍
输入一个日期,打印出这一天是该年的第几天
1.1 输入样例
请输入日期,格式YYYY MM DD:2020 04 17
1.2 输出样例
2020 04 17是2020年的第108天
2. 题解✨
2.1 思路
- 首先,此题的☸核心☸在于判断闰年(判断闰年方法:四年一闰;百年不闰,四百年再闰)
- 其次,我们根据该年是否为闰年来创建两个分别适用于平年和闰年的每月天数列表
- 最后,将该月前面月份的天数与该月的天数相加即可“判断一某天是该年的第几天”
2.2 代码
# 模块一:接受输入的日期,切片存储
date = input('请输入日期,格式YYYY MM DD:')
year = int(date[0:4]) # 切片后存储
month = int(date[5:7])
day = int(date[8:])
# 上方代码可简化为
# year, month, day = map(int, input().split())
# 模块二:判断闰年
def is_leap_year(year):
if year % 4 == 0:
if year % 100 == 0:
if year % 400 == 0:
return True # 四百年再闰
return False # 百年不闰
return True # 四年一闰
return False
# 模块三:闰年/平年每月天数列表
if is_leap_year(year) is True:
month_list = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
else:
month_list = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# 模块四:判断输入的月份,加上之前的天数
days = 0 # 某月之前月份包含的天数
for i in range(month - 1):
days += month_list[i]
total = days + day # 总天数
# 模块五:格式化输出
print('{}是{}年的第{}天'.format(date, year, total))
# >>> 理解切片 <<<
# 将索引视作指向字符之间 ,第一个字符的左侧标为0,最后一个字符的右侧标为n,其中n是字符串长度。
# +---+---+---+---+---+---+
# | P | y | t | h | o | n |
# +---+---+---+---+---+---+
# 0 1 2 3 4 5 6
# 注意:切片的开始总是被包括在结果中,而结束不被包括 <range()与之相同>。这使得s[:i] + s[i:]总是等于s
# word = 'Python'
# print(word[:2] + word[2:])
相关内容