人工智能学习联盟免费课程——案例五:判断第几天
2019-03-22 10:07
447 查看
目录
案例五 时间判断
通过不同的数据储存类型来实现同一个功能,元组、列表、集合和字典。
from datetime import datetime
def is_leap_year(year): ''' 判断是否为闰年 ''' is_leap = False if (year % 2 == 0) | ((year % 2 ==0) & (year % 2 != 0)): is_leap = True return is_leap
元组
#元组存储月份天数表 def days_tupl() : data_str = input('请输入日期(yyyymmdd):') data_time = datetime.strptime(data_str, '%Y%m%d') #提取年月日 year = data_time.year month = data_time.month day = data_time.day #月份天数表 days_of_month = (31,28,31,30,31,30,31,31,30,31,30,31) #计算天数 days = sum(days_of_month[:month - 1]) + day if (month > 2) & is_leap_year(year): days += 1 print('这是{}年的第{}天(by tupl)。'.format(year,days))
列表
#列表存储月份天数表 def days_list() : data_str = input('请输入日期(yyyymmdd):') data_time = datetime.strptime(data_str, '%Y%m%d') #提取年月日 year = data_time.year month = data_time.month day = data_time.day #月份天数表 days_of_month = [31,28,31,30,31,30,31,31,30,31,30,31] #判断闰年 if is_leap_year(year): days_of_month[1] = 29 #计算天数 days = sum(days_of_month[:month - 1]) + day print('这是{}年的第{}天(by list)。'.format(year,days))
集合
#集合存储月份天数表 def days_set() : data_str = input('请输入日期(yyyymmdd):') data_time = datetime.strptime(data_str, '%Y%m%d') #提取年月日 year = data_time.year month = data_time.month day = data_time.day #月份天数表 _31_days = {1,3,5,7,8,10,12} _30_days = {4,6,9,11} #初始化 days = 0 days += day #计算天数 for i in range(1,month): if i in _31_days: days += 31 elif i in _30_days: days += 30 else: days += 28 #判断闰年 if is_leap_year(year): days += 1 print('这是{}年的第{}天(by set)。'.format(year,days))
字典
#集合存储月份天数表 def days_dic() : data_str = input('请输入日期(yyyymmdd):') data_time = datetime.strptime(data_str, '%Y%m%d') #提取年月日 year = data_time.year month = data_time.month day = data_time.day #月份天数表 days_of_month = {1:31, 2:28, 3:31, 4:40, 5:31, 6:30, 7:31, 8:31, 9:30, 10:31, 11:30, 12:31} #初始化 days = 0 days += day #计算天数 for i in range(1,month): days += days_of_month[i] #字典索引从1开始 #判断闰年 if is_leap_year(year): days += 1 print('这是{}年的第{}天(by dic)。'.format(year,days))
def main(): days_tupl() days_list() days_set() days_dic()
main()
请输入日期(yyyymmdd):20000301 这是2000年的第61天(by tupl)。 请输入日期(yyyymmdd):20000301 这是2000年的第61天(by list)。 请输入日期(yyyymmdd):20000301 这是2000年的第61天(by set)。 请输入日期(yyyymmdd):20000301 这是2000年的第61天(by dic)。
课后思考
- 如果把字典中的键值对反过来,如何实现功能
- Python自带的功能,一行代码来实现
#思考1 def days_dic2() : data_str = input('请输入日期(yyyymmdd):') data_time = datetime.strptime(data_str, '%Y%m%d') #提取年月日 year = data_time.year month = data_time.month day = data_time.day #月份天数表 days_of_month = {31:{1,3,5,7,8,10,12}, 30:{4,6,9,11}} #初始化 days = 0 days += day #计算天数 for i in range(1,month): if i in days_of_month[31]: days += 31 elif i in days_of_month[30]: days += 30 else: days += 28 #字典索引从1开始 #判断闰年 if is_leap_year(year): days += 1 print('这是{}年的第{}天(by dic)。'.format(year,days))
days_dic2()
请输入日期(yyyymmdd):20000301 这是2000年的第61天(by dic)。
#思考2 from datetime import datetime as dt print(dt.strftime(dt.strptime(input('请输入查询日期(yyyymmdd):'),'%Y%m%d'),'%j'))
请输入查询日期(yyyymmdd):20000301 061
借助datetime库里的stftime函数来实现格式化数据。该函数的功能是将一个时间类型变量转换成你需要的格式,%j代表的是Day of the year as a zero-padded decimal number.
更多参考Python官方文档
相关文章推荐
- 人工智能学习联盟免费课程——案例六:判断密码强弱
- 人工智能学习联盟免费课程——案例八:城市空气质量指数计算
- 人工智能学习联盟免费课程——案例七:模拟掷骰子
- 《From Zero to Hero – 从1000个代码案例中学习人工智能和大数据》课程
- 北美18名校的数据挖掘,数据分析,人工智能及机器学习课程汇总
- 北美18名校的数据挖掘,数据分析,人工智能及机器学习课程汇总
- 深度学习框架-Tensorflow案例实战视频课程
- 国外免费在线计算机课程学习
- CSDN学院:24门精品课程免费领取(含Python+人工智能等专题课程)
- AL 人工智能学习书籍 视频 课程
- 大数据,人工智能,深度学习,机器学习课程收集
- Java编程开发学习路线图(附所有免费课程+在线自测)
- 学习网站开发必备推荐!30天学会HTML和CSS基础入门视频教程 (免费精品课程)
- 给iPhone应用开发的有志者的100个免费的课程和学习指南(100 Free Courses & Tutorials for Aspiring iPhone App Developers)
- 明德扬视频分享--点拨FPGA课程 100多个案例免费学
- Python练手小案例:判断这一天是这一年的第几天?(这个程序有毒)
- 安卓入门到进阶免费视频课程学习,赶快加入学习!!
- 第000讲-第006讲 从1000个代码案例中学习人工智能和大数据实战
- 【人工智能专场】大规模分布式机器学习系统设计和应用经验分享-2017CCTC大会-专题视频课程...
- 学习内容:KNN算法实现-阿里云人工智能课程笔记