输入某年某月某日,判断这一天是这一年的第几天,主要是牵扯到 月份不同 天数不一样,年份不同分闰年和平年只分
闰年判断,四年一润,百年不润 四百年再润
if ((year % 4 == 0) and(year % 100 != 0)) or (year % 400 == 0 ) :
days+=1)
1.通过本节主要学习 元组,列表,集合,字 典 的使用
a) 元组(tuple)是特殊的序列类型
1. 一旦创建不能修改,使得代码更安全,使用逗号和圆括号来表示 如(2,4,6,8) (‘read’,‘green’,'blue')
2.访问方式和列表相同
3.一般用于表达固定数据项。函数多返回值等情况
元组中的元素可以是不同的类型 ,元组的各样元素存在先后关系,可以通过索引访问元组中的元素
""" 作者: 版本:v1.0 功能:输入年月日 判断是一年中的第几天 日期:20190726 使用元组的方式和列表两种方式,其中元组方式 已经注释 """ from _datetime import datetime def main(): input_data_str = input('请输入日期(yyyy/mm/dd):') input_data = datetime.strptime(input_data_str, '%Y/%m/%d') print(input_data_str) year = input_data.year month = input_data.month day = input_data.day # 计算之前月份的天数总和使用元组的方式实现 # days_in_month_tub =(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) # days = sum(days_in_month_tub[:month-1]) + day # if (year % 400 == 0 ) or ((year % 4 == 0) and(year % 100 != 0)): # days += 1 # 计算之前月份的天数总和使用列表的方式实现 days_in_moth_lis = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 判断是否是闰年 if (year % 400 == 0 ) or ((year % 4 == 0) and(year % 100 != 0)): days_in_moth_lis[1] = 29 days = sum(days_in_moth_lis[:month - 1]) + day print('这是第{}天'.format(days)) if __name__ == '__main__': main()
参考代码:使用元组和列表实现的功能
参考代码使用集合实现功能
"""
作者:
版本:v2.0
功能:输入年月日 判断是一年中的第几天
日期:20190726
使用集合方式实现
if i in _30_days_month_set: # 表示判读 i 是否在集合 _30_days_moth_set 中
"""
from _datetime import datetime
def main():
input_data_str = input('请输入日期(yyyy/mm/dd):')
input_data = datetime.strptime(input_data_str, '%Y/%m/%d')
print(input_data_str)
year = input_data.year
month = input_data.month
day = input_data.day
# 计算之前月份的天数总和使用集合的方式实现
_30_days_month_set = {4,6,9,11}
_31_days_month_set = {1,3,5,7,8,10,12}
days = 0
days += day
for i in range(1, month):
if i in _30_days_month_set:
days += 30
elif i in _31_days_month_set:
days += 32
else:
days += 28
# 判断是否是闰年
if (year % 400 == 0 ) or ((year % 4 == 0) and(year % 100 != 0)):
days += 1
print('这是{}年 第{}天'.format(year, days))
if __name__ == '__main__':
main()
参考代码使用字典实现功能
"""
作者:
版本:v3.0
功能:输入年月日 判断是一年中的第几天
日期:20190726
使用字典方式实现
"""
from _datetime import datetime
def main():
input_data_str = input('请输入日期(yyyy/mm/dd):')
input_data = datetime.strptime(input_data_str, '%Y/%m/%d')
print(input_data_str)
year = input_data.year
month = input_data.month
day = input_data.day
# 计算之前月份的天数总和使用字典方式实现
# 月份 天数 字典
month_day_dict = {1: 31,
2: 28,
3: 31,
4: 30,
5: 31,
6: 30,
7: 31,
8: 31,
9: 30,
10: 31,
11: 30,
12: 31}
days = 0
days += day
# # 判断是否是闰年
# if (year % 400 == 0 ) or ((year % 4 == 0) and(year % 100 != 0)):
# month_day_dict[2]=29
# else:
# month_day_dict[2]=28
# for i in range(1, month):
# days+= month_day_dict[i]
# 判断是否是闰年
if (year % 400 == 0 ) or ((year % 4 == 0) and(year % 100 != 0)):
days+=1
for i in range(1, month):
days+= month_day_dict[i]
print('这是{}年 第{}天'.format(year,days))
if __name__ == '__main__':
main()