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 ...
随机推荐
- 极光开发者沙龙 之 移动应用性能优化实践 【一】旧酒新瓶——换个角度提升 App 性能与质量
旧酒新瓶--换个角度提升 App 性能与质量 主讲人:高亮亮 --- 饿了么移动技术部高级iOS工程师,负责饿了么商家版iOS APP开发,对架构和系统底层有深入研究,擅长移动性能分析,troub ...
- CCNA毕业测试
要求: 1:不同楼层物理隔离,但逻辑相连 2:相同楼层物理相连,但逻辑隔离 3:主机可以动态获取IP地址 4:不同VLAN间可以进行通信 5:主机最终访问www.baidu.com弹出Congratu ...
- rownum基本用法
对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀. ...
- PHP基础入门(一)---世界上最好用的编程语言
作为一名程序员,我们应该都听过这样一个梗:PHP编程语言,是世界上最好用的编程语言~~~下面来和大家看一下,什么是PHP↓↓↓ PHP PHP又名超文本预处理器,是一种通用开源脚本语言.PHP主要适用 ...
- Linux笔记③(ftp、nfs、ssh服务器搭建)
1.ftp服务器搭建(利用vsftpd这个工具) 作用:文件的上传和下载 服务器端: 修改配置文件,配置文件目录:/etc/vsftpd.conf ,修改里面的允许匿名访问.指定匿名访问目录等操作,根 ...
- java封装FFmpeg命令,支持原生ffmpeg全部命令,实现FFmpeg多进程处理与多线程输出控制(开启、关闭、查询),rtsp/rtmp推流、拉流
前言: 之前已经对FFmpeg命令进行了封装http://blog.csdn.net/eguid_1/article/details/51787646,但是当时没有考虑到扩展性,所以总体设计不是太好, ...
- CSS 公共样式
global.css | reset.css(格式化样式) common.css(公共组件样式) layout.css(当前页面样式) 清除全站所有页面的浏览器默认样式,保证在初始样式在所有浏览器下一 ...
- Azure 认知服务 (2) 计算机视觉API - 分析图像
<Windows Azure Platform 系列文章目录> 在上一节内容中,笔者介绍了微软认知服务的概览. 在本节中,笔者将详细介绍微软认知服务中的一种:计算机视觉 (Computer ...
- Web压力测试软件webbench
官方网站:http://home.tiscali.cz/~cz210552/webbench.html下载地址:http://home.tiscali.cz/~cz210552/distfiles/w ...
- 懵懂oracle之存储过程2
上篇<懵懂oracle之存储过程>已经给大家介绍了很多关于开发存储过程相关的基础知识,笔者尽最大的努力总结了所有接触到的关于存储过程的知识,分享给大家和大家一起学习进步.本篇文章既是完成上 ...