利用python实现万年历

代码如下:

  1 #!/usr/bin/env python2
  2 #-*- coding:utf-8 -*-
  3 """
  4 使用python实现万年历
  5 """
  6 
  7 def is_leap_year(year):
  8     """
  9     判断是否是闰年,返回boolean值
 10     """
 11     if year/4==0 and  year/400 !=0:
 12         return True
 13     elif year/100 == 0 and year/400 ==0 :
 14         return True
 15     else:
 16         return False
 17 
 18 def getMonthDays(year,month):
 19     """
 20     获取指定年月的月份有多少天
 21     """
 22     days = 31        #31天居多,设置为默认值
 23     if month == 2 :    #2月份要判断是否是闰年
 24         if is_leap_year(year):
 25             days=29
 26         else:
 27             days=28;
 28     elif month in [4,6,9,11]:     #判断小月,只有30天
 29         days=30
 30     return days
 31 
 32 def getTotalDays(year,month):
 33     """
 34     获取1990-01-01离现在有多少天,1990-01-01是星期一,以这个为标准来判断星期
 35     """
 36     totalDays=0
 37     for i in range(1990,year):     #使用range来循环,算出多少年多少天
 38         if is_leap_year(i):        #判断是否是闰年
 39             totalDays += 366
 40         else:
 41             totalDays += 365
 42     for i in range(1,month):       #使用range循环,算出今年前面几个月过了多少>    天
 43         totalDays +=getMonthDays(year,i)
44     return totalDays
 45 
 46 
 47 if __name__ == '__main__':
 48     while True:         #循环判断是否输入错误的格式
 49         print "××××××××××python实现万年历××××××××"
 50         year = raw_input("请输入年份(如:1990):")
 51         month = raw_input("请输入月份 (如:      1)   :  ")
 52         try:              #捕捉输入异常格式和月份的正确
 53             year = int(year)
 54             month = int(month)
 55             if month <1 or month >12:            #判断月份是否输入错误,错误就重新开始循环
 56                 print "年份或者月份输入错误,请重新输入!"
 57                 continue
 58         except:                #捕捉到转换成整型异常,输出提示,重新开始循环
 59             print "年份或者月份输入错误,请重新输入!"
 60             continue
 61         break     #如果没有异常就跳出循环
 62 #if is_leap_year(year):
 63 #    print "%s是润年"%year
 64 #else:
 65 #    print "%s是平年"%year
 66 #print "%s月份总共有%s天!"%(month,getMonthDays(year,month))
 67 
 68 print "日\t一\t二\t三\t四\t五\t六"
 69 iCount = 0      #计数器来判断是否换行
 70 for i in range(getTotalDays(year,month)%7+1):
 71     print '\t',                 #输出空不换行
 72     iCount+=1
 73 for i in range(1,getMonthDays(year,month)):
 74     print i,
 75     print '\t',
 76     iCount +=1
 77     if iCount%7 == 0 :           #计数器取余为0,换行
 78         print ''


运行效果:


运行效果
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容