python打印万年历
1.输入年份,输入月份
2.格式化输出本月的日历
3.思路
输入年,月,打印对应年月的日历。
1,首先1970年是Unix系统诞生的时间,1970
年成为Unix的元年,1970
年1月1号是星期四,现在大多的手机的日历功能只能显示到1970年1月1日这一天;
2,要想打印某年某月的日历,首先应该计算出这个月1号是星期几?
解决1号是星期几?
2.1: 先计算出年天数,即截至这一年1月1号的天数,用for循环,从1970年开始,闰年 + 366,平年 + 365;
2.2: 计算出月天数,即截至本月1号的天数,用for循环,从1月份开始,算出月天数;
2.3: 用年天数加月天数,求得本月1号距离1970年1月1号的总天数,用总天数来判断本月1号是星期几;
3, 判断本月的总天数;
4, 打印日历;
4.运行效果图1:
运行效果图2:
5.代码实现
:
# 定义判断闰年的函数,是闰年返回True,不是返回False def isLeapYear(year): if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): return True else: return False # 定义计算从1970年到截止到今年的 年天数的函数 def yearsDays(year): totalDays = 0 for i in range(1970, year): # print("%d年" % i) if isLeapYear(i): totalDays += 366 else: totalDays += 365 return totalDays # 定义计算本年一月截止到目前月的 月天数的函数 def monthsDays(year, month): s = (") days = int(s[month - 1]) # print(month,"月") if isLeapYear(year): days = days else: if month == 1: days = 0 elif month == 2: days == 31 else: days = days - 1 return days # 定义计算本月的天数 def thisMonthDays(year, month): if month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12: return 31 elif isLeapYear(year) and month == 2: return 29 elif (not isLeapYear(year)) and month == 2: return 28 else: return 30 # 计算本月一号是星期几的函数 def week(year, month): thisDay = 0 yDays = yearsDays(year) mDays = monthsDays(year, month) # 计算出来年天数和月天数的总和 sumDays = yDays + mDays if sumDays % 7 == 0: thisDay = 4 else: if (sumDays % 7 + 4 > 7): thisDay = abs(sumDays % 7 - 3) else: thisDay = sumDays % 7 + 4 # print("星期%d" % thisDay) return thisDay # 定义打印顶部标题栏函数 def printTitle(year, month): print("-------------------------------------%s年%d月----------------------------------------" % (year, month)) s = ("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六") for i in s: print("%-10s" % i, end="") print() # 打印主体部分 def printMain(year, month): day1 = week(year, month) day2 = thisMonthDays(year, month) # 打印空白地方 if day1 != 7: for i in range(1, day1 + 1): s = " " print("%-13s" % s, end="") # 打印其他地方 for j in range(day1 + 1, day1 + day2 + 1): if j % 7 == 0: print("%-13d" % (j - day1)) else: print("%-13d" % (j - day1), end="") year = int(input("请输入年份:")) month = int(input("请输入月份:")) printTitle(year, month) printMain(year, month)
python打印万年历的更多相关文章
- Python打印格式化与字符串
关于Python打印格式化与字符串,比较全面的总结,希望对大家有帮助~ # -*- coding: cp936 -*- ''' 打印格式 ''' print "a" print & ...
- python打印表格式数据,留出正确的空格和段落星号或注释
python打印表格式数据,留出正确的空格,格式化打出 代码如下: def printPicnic(itemsDict,leftWidth,rightWidth): print('PICNIC ITE ...
- python 打印 emoji
python 打印 emoji 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10486506.html 一.Unicode字符集: ...
- python打印列表的下标和值的例子:
python打印列表的下标和值的例子: In [1]: list01=[1,4,5] In [10]: def funct01(ll): ....: for index,value in ...
- 【Python】Python 打印和输出更多用法。
Python 打印和输出 简述 在编程实践中,print 的使用频率非常高,特别是程序运行到某个时刻,要检测产生的结果时,必须用 print 来打印输出. 关于 print 函数,前面很多地方已经提及 ...
- python 打印 九九表
用Python 打印九九表. print 每打印一行默认会带有换行, 在print语句后加上,end = 't' 会变成tab. 排版会好点. def main(): for i in range(1 ...
- python打印表格式数据-星号或注释
python打印表格式数据,留出正确的空格,格式化打出 代码如下: def printPicnic(itemsDict,leftWidth,rightWidth): print('PICNIC ITE ...
- python 打印 str 字符串的实际内容 repr(str)
python 打印 str 字符串的实际内容 repr(str) s = 'aa' print(repr(s))
- python打印日志log
整理一个python打印日志的配置文件,是我喜欢的格式. # coding:utf-8 # 2019/11/7 09:19 # huihui # ref: import logging LOG_FOR ...
随机推荐
- rownum基本用法
对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀. ...
- intersect for multiple vectors in R
Say you have a <- c(1,3,5,7,9) b <- c(3,6,8,9,10) c <- c(2,3,4,5,7,9) A straightforward way ...
- poj3417
poj3417 题意 给出一颗 n 个节点, n - 1 条边的树,再加上 m 条新边,允许删掉树边和新边各一条,问能使树分为两部分的方案数. 分析 在树的基础上加上不重复的新边一定会构成环,那么考虑 ...
- JavaSE教程-02Java基本语法-BUG:易错点
1.区别文档注释和多行注释 多行注释:多一个* 多行注释 格式: /* 注释文字 */ 文档注释 格式:/** 注释文字 */ 2.有关变量名.类名.方法名等注意点 由字母.数字.下划线.$组成,但不 ...
- HTML----网页基础和基本标签
网页分类: 1.静态网页:所有内容全写死,都写在源代码中,若修改必须修改源代码,后缀为.html或htm 2.动态网页:内容大部分来自于数据库,可以修改,后缀为.aspx(c#).jsp(java). ...
- python中文字符串编码问题
接口测试的时候,发现接口返回内容是uncodie类型但是包含中文.在使用print进行打印时输出提示错误: UnicodeEncodeError: 'ascii' codec can't encode ...
- EJB基础知识
本人博客文章网址:https://www.peretang.com/basic-knowledge-of-ejb/ 什么是EJB 可移植的, 可重用的, 可伸缩的业务应用程序的平台 为什么选择EJB ...
- js中运动框架的封装
//获取非行间样式的封装 function setStyle(obj,name){ // 考虑兼容性问题 if(obj.currentStyle){//不兼容火狐和谷歌 return obj.curr ...
- hadoop伪分布式集群搭建与安装(ubuntu系统)
1:Vmware虚拟软件里面安装好Ubuntu操作系统之后使用ifconfig命令查看一下ip; 2:使用Xsheel软件远程链接自己的虚拟机,方便操作.输入自己ubuntu操作系统的账号密码之后就链 ...
- epclise设置tomcat方法(步骤)(菜鸟巧记二)
epclise设置tomcat 1.打开epclise→window→preferences 2.输入server,打开server→runtime environments→选择add新建 3.打开 ...