Python打印指定日期日历

下面的代码只是演示其中的原理和思路,真正使用时可以直接调用Python标准库calendar中的方法。

from datetime import date

daysOfMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

def myCalendar(year, month):

#获取year年month月1日是周几

start = date(year, month, 1).timetuple().tm_wday

#打印头部信息

print('{0}年{1}月日历'.format(year,month).center(56))

print('\t'.join('日 一 二 三 四 五 六'.split()))

#获取该月有多少天,如果是2月并且是闰年,适当调整一下

day = daysOfMonth[month-1]

if month==2:

if year%400==0 or (year%4==0 and year%100!=0):

day += 1

#生成数据,根据需要在前面填充空白

result = [' '*8 for i in range(start+1)]

result += list(map(lambda d: str(d).ljust(8), range(1, day+1)))

#打印数据

for i, day in enumerate(result):

if i!=0 and i%7==0:

print()

print(day, end='')

print()

def main(year, month=-1):

if type(year)!=int or year<1000 or year>10000:

print('Year error')

return

if type(month)==int:

#如果没有指定月份,就打印全年的日历

if month==-1:

for m in range(1, 13):

myCalendar(year, m)

#如果指定了月份,就只打印这一个月的日历

elif month in range(1,13):

myCalendar(year, month)

else:

print('Month error')

return

else:

print('Month error')

return

main(2017)

原文发布于微信公众号 - Python小屋(Python_xiaowu)

原文发表时间:2016-07-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏跟着阿笨一起玩NET

关于DataGridView_DataError事件的问题

本文转载:http://blog.csdn.net/szstephenzhou/article/details/7834725

49610
来自专栏.NET技术

.net平台的MongoDB使用

  最近花了点时间玩了下MongoDB.Driver,进行封装了工具库,平常也会经常用到MongoDB,因此写一篇文章梳理知识同时把自己的成果分享给大家。

15920
来自专栏技术博客

MVC项目开发中那些用到的知识点(Jquery ajax提交Json后台处理)

  jQuery提供的ajax方法能很方便的实现客户端与服务器的异步交互,在asp.net mvc 框架使用jQuery能很方便地异步获取提交数据,给用户提供更...

16120
来自专栏开发 & 算法杂谈

Hiredis源码阅读(一)

Hiredis库主要包含三类API:同步api、异步api以及回复解析api。首先介绍一下同步api以及回复解析api。

686110
来自专栏大内老A

像TransactionScope一样使用DbTransaction

System.Transactions.TransactionScope为了提供一种非常方便的实现分布式事务的方式,但是在某些情况下为了阻止本地事务向分布式事务...

55970
来自专栏GreenLeaves

Linq基础知识之延迟执行

Linq中的绝大多数查询运算符都有延迟执行的特性,查询并不是在查询创建的时候执行,而是在遍历的时候执行,也就是在enumerator的MoveNext()方法被...

272100
来自专栏liulun

ASP.NET Core教程【三】实体字段属性、链接标签、并发数据异常、文件上传及读取

前文索引: ASP.NET Core教程【二】从保存数据看Razor Page的特有属性与服务端验证 ASP.NET Core教程【一】关于Razor Page...

32760
来自专栏逸鹏说道

c# 温故而知新: 线程篇(一) 下

Abort 方法: 其实 Abort 方法并没有像字面上的那么简单,释放并终止调用线程,其实当一个线程调用 Abort方法时,会在调用此方法的线程上引发一个异常...

27660
来自专栏chenssy

【死磕Java并发】-----J.U.C之阻塞队列:SynchronousQueue

原文出处http://cmsblogs.com/ 『chenssy』 【注】:SynchronousQueue实现算法看的晕乎乎的,写了好久才写完,如果当中有什...

42170
来自专栏大内老A

WCF中关于可靠会话的BUG!!

对WCF的可靠会话编程有一定了解的人应该知道,我们可以使用 DeliveryRequirementsAttribute 可以指示WCF确认绑定提供服务或客户端实...

201100

扫码关注云+社区

领取腾讯云代金券