【Python打卡2019】20190430之根据日期判断为当年哪一天-字典使用

0.任务分析与描述

此前的实现当中,我们都使用的是普通的元素集合,将月份和天数分开存储;
我们在Java中经常使用map类型进行键值对的存储,键值对能够满足将月份和天数一一对应的需求;
在Python中,我们可以通过字典来实现。

1.字典
  • 字典可以通过dict()函数创建,也可以直接使用{};
  • 字典中的元素无序,其中的元素为键值对形式(创建时逗号隔开两个键值对,冒号隔开键与值);
  • 添加元素直接赋值,如d[1]=2;则d中为{1:2}
  • 删除元素用del d[key];取出元素使用d[key]即可;
  • 字典其他用法可以参考我室友的博客:https://blog.csdn.net/MessiNine/article/details/80443442
2.程序与结果
"""判断输入日期为当前年份的第几天用列表代替元组+用集合set取代列表+使用字典取代set
"""
from datetime import datetimedef is_leap_year(year):return (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0)def cal_which_day(date_str):input_date = datetime.strptime(date_str, "%Y/%m/%d")year = input_date.yearmonth = input_date.monthday = input_date.day# _31_days_month_set = {1, 3, 5, 7, 8, 10, 12}  # 大括号直接创建集合# _30_days_month_set = {4, 6, 9, 11}# 用字典代替集合,因为字典可以存储键值对,刚好可以将月份与其天数对应起来month_days_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}total_month_days = 0# 这样的话,我们看一从1月计算到month月来进行天数的计算for i in range(1, month):  # range(1, n)表示从1月到month-1月,正好满足我们的需要total_month_days += month_days_dict[i]if is_leap_year(year) and month > 2:  # 如果是闰年,且大于2月,+1total_month_days += 1total_days = total_month_days + dayreturn total_daysdef main():input_date_str = input("请输入日期(yyyy/mm/dd):")which_day = cal_which_day(input_date_str)print("{}是当年的第{}天~(字典取代集合)".format(input_date_str, which_day))if __name__ == '__main__':main()
Y:\Python\Anaconda\python.exe Y:/PythonWorkspace/lect06/WhichDay4.py
请输入日期(yyyy/mm/dd):2016/04/30
2016/04/30是当年的第121天~(字典取代集合)Process finished with exit code 0


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部