案例描述
输入某年某月某日,判断这一天是这一年的第几天?
例子:
输入的日期为2017/03/05,是2017年的第几天?
输入的日期为2012/03/05,是2012年的第几天?
案例分析
1.每个月份的天数不同
2.闰年与平年的2月份天数不同
3.闰年判断:四年一闰,百年不闰,四百年再闰
项目实现
V1.0——输入某年某月某日,判断这一天是这一年的第几天
将每月的天数存入元组中,根据输入直接访问元组中数据来计算是第几天。
- 元组(tuple)是特殊的序列类型
- 一旦被创建就不能修改,使得代码更安全
- 使用逗号和圆括号来表示,如 (‘red’, ‘blue’, ‘green’), (2, 4, 6)
- 访问方式和列表相同
- 一般用于表达固定数据项、函数多返回值等情况
- 元组的特点:
- 元组中的元素可以是不同类型的
- 元组中各元素存在先后关系,可通过索引访问元组中元素
代码实现:
from datetime import datetime
def main():
input_date_str = input('请输入日期(yyyy/mm/dd):')
input_date = datetime.strptime(input_date_str, '%Y/%m/%d')
year = input_date.year
month = input_date.month
day = input_date.day
days_in_month_tup = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
# 计算输入月份之前的月份天数总和以及当月天数
days = sum(days_in_month_tup[:month - 1]) + day
# 大于二月份的需要判断是否为闰年,若为闰年则天数加1
if month > 2:
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
days += 1
print