最近进行python基础培训,课下作业制作万年历,之前没做过,感觉里面还是有很多需要学的。所谓万年历,就是咱们电脑或者手机的日期会记录每个月每天对应星期几。用python来制作万年历,就是从键盘输入年份和月份,然后输出对应的日历表。在制作过程中有如下问题需要思考:

  • 万年历的起始时间,也就是从哪一天算起?

  • 平年和闰年的天数不一样,同时,每个月的天数不一样,如何对输入日期距离起始日期的天数求和?

  • 如何打印出万年历的样子?

    针对这些问题进行思考,可以让逻辑更清楚。首先,万年历从1990年1月1日开始,对应星期一。求输入日期到1990年1月1日的天数可分为两部分,比如输入2019年9月,那么需要分别计算2018年12月31日到1990年1月1日的天数,以及2019年8月31号到2019年1月1号的天数,最后加1(关于加1这个还没懂,我的程序后面没有加1是对的,但是如果我加1,就错开一位了)。由于里面涉及到平年和闰年,所以需要先判断,同时之后求每个月天数时还要判断平年和闰年,所以直接写个判断函数。

#判断平年和闰年
def leap_year(year):if(year%4==0 and year%100==0) or (year%400==0):return Trueelse:return False

下面需要计算每个月的天数 ,其中需要注意2月份要判断平年和闰年,调用leap_year()函数即可。

#计算每个月的天数
def monthdays(year,month):if month==2:if leap_year(year):days=29else:days=28elif month in[4,6,9,11]:days=30else:days=31return days

接下来我们计算输入年份year和月份month代表的日期,距离1990年1月1日的天数,如前面所说需要分成两部分,

#计算总天数
def totaldays(year,month):yearday=0for i in range(1990,year):#计算输入年份之前的if leap_year(i):yearday+=366else:yearday+=365for i in range(1,month):#注意不能包括该月份yearday+=monthdays(year,i)return yearday

完成现在准备工作之后,就进行显示函数,利用Input()函数从控制台输入,打印过程需要注意

#显示函数
year=int(input("请输入年"))
month=int(input("请输入月"))
week=(totaldays(year,month))%7  #计算该月第一天是周几
print('日\t一\t二\t三\t四\t五\t六\t')
for i in range(0,week):  #前面打印week个空格print("\t",end="")
for i in range(1,monthdays(year,month)+1):  #c从week+1的位置开始打印数字if (totaldays(year,month)+i)%7==0: #天数为7的倍数时,记住要换行print(i,end="\n")else:print(i,end="\t")

运行之后,结果如下:

不过我还是没弄懂,有些程序是求出总天数之后加1,然后去模7,但是我这个程序出来结果是对的,一直想不明白,如果有知道的,麻烦指点一下,对了,如果print出来的是一二三四五六日,这种程序需要稍微改动一下,这里就不说了,大家可以自己思考一下。

python制作万年历相关推荐

  1. python万年历制作_利用Python制作万年历

    第一个Python小程序,制作简易万年历.现在开始学习Python的目的主要是为了学习人工智能 写这个小程序的目的主要是了解一下Python的简单语法使用,其实写这个程序之前,我还没有看Python的 ...

  2. 用python制作万年历

  3. python交互式日历制作图片_2.利用Python制作电子版电影台历

    2020嗖的一下就要过去了,想买一个豆瓣电影台历,官方价格是98,想着有点贵,就想利用学习的Python制作一个电子版的台历,效果图如下 非周六周日 带Tips 周六周日 界面整体的布局:头部仿台历便 ...

  4. 怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...

    话不多说,首先先看效果图,它能够记录你在使用过程中的历史,方便你查看是否有错: 接下来就仔细分析一下是如何制作的: 简易计算器 第一步:导入资源库 在过程中使用到了tkinter这个资源库,win+R ...

  5. 用 Python 制作可视化报表,这也太快了!

    作者 | 小F 来源 | 法纳斯特 在数据展示中使用图表来分享自己的见解,是个非常常见的方法. 这也是Tableau.Power BI这类商业智能仪表盘持续流行的原因之一,这些工具为数据提供了精美的图 ...

  6. Get了!用Python制作数据预测集成工具 | 附代码

    作者 | 李秋键 责编 | 晋兆雨 大数据预测是大数据最核心的应用,是它将传统意义的预测拓展到"现测".大数据预测的优势体现在,它把一个非常困难的预测问题,转化为一个相对简单的描述 ...

  7. 碉堡的小程序:用 Python 制作演示迷宫算法的 gif 动画

    微信改版,加星标不迷路! 碉堡的小程序:用 Python 制作演示迷宫算法的 gif 动画 作者:neozhaoliang 本文要介绍的是我写的一个有趣的小程序,一个脱离了低级趣味的程序,一个有益于广 ...

  8. Python制作当年第一款手机游戏-贪吃蛇游戏(练习)

    前言: 文章利用Python pygame做一个贪吃蛇的小游戏而且讲清楚每一段代码是用来干嘛的. 据说是贪吃蛇游戏是1976年,Gremlin公司推出的经典街机游戏,那我们今天用Python制作的这个 ...

  9. python制作解压工具_使用python制作一个解压缩软件

    python实现解压缩的重要模块就是--zipfile,其次是os 安装zipfile模块 首先得安装zipfile模块,打开cmd输入一下命令即可安装 pip install zipfile os是 ...

最新文章

  1. 第十五届智能车竞赛不公平竞争情况反映以及审议结果
  2. Win10安装bash慢的解决方案
  3. Keras创建者深度思考:不要将AI作为操纵用户的工具
  4. mybaits二十八:逆向工程
  5. 判断python模型是否安装的办法
  6. python app服务器_Python应用02 Python服务器进化
  7. arcgis悬挂点修改_ArcGis拓扑的那些事儿(拓扑应用过程三)
  8. SAP Fiori应用里对国际化RTL需求(right-to-left)的支持
  9. c++中vector使用说明
  10. 调用gensim库训练word2vec词向量
  11. 实战!轻松搭建图像分类 AI 服务
  12. weightedrandomSamplers(2)
  13. 回溯法 —— 求解子集和问题
  14. linux安装consul集群
  15. 一文带你弄懂 CDN 技术的原理
  16. NVivo 12 Mac的大规模部署
  17. c语言里什么叫double,c语言double什么意思
  18. 回顾 12 个面向 Web 开发人员的在线代码编辑器
  19. 持续集成与持续部署(五)03-TravisCI——Travis CI和Docker的持续集成之所使用的基础组件、dockerfile配置、docker部署脚本
  20. 算法导论------递归算法的时间复杂度求解

热门文章

  1. Thymeleaf 中文文档----全译版
  2. java.lang.IllegalAccessException 没有访问权限
  3. python列表切片习题(一)
  4. 无线投屏(智慧教室)
  5. 【TensorFlow】官方例子mnist_with_summaries.py在windows下运行tensorboard
  6. 推特情感分析-基于spark
  7. epub电子书如何用Windows电脑打开?
  8. 对于任一整数n,符号函数sign(n)的定义如下
  9. 我的世界服务端大全-服务器插件等相关网站推荐
  10. 算法的时间复杂度和空间复杂度总结