Python实现的简单万年历例子分享

 更新时间:2014年04月25日 11:32:07   作者:  
这篇文章主要介绍了Python实现的简单万年历例子分享,需要的朋友可以参考下

复制代码 代码如下:
#!/usr/bin/env python2
#-*- coding:utf-8 -*-
__author__ = 'jalright'

"""
使用python实现万年历
"""

def is_leap_year(year):
    """
判断是否是闰年,返回boolean值
    """
    if year/4==0 and  year/400 !=0:
        return True
    elif year/100 == 0 and year/400 ==0 :
        return True
    else:
        return False

def getMonthDays(year,month):
    """
获取指定年月的月份有多少天
    """
    days = 31        #31天居多,设置为默认值
    if month == 2 :    #2月份要判断是否是闰年
        if is_leap_year(year):
            days=29
        else:
            days=28;
    elif month in [4,6,9,11]:     #判断小月,只有30天
        days=30
    return days

def getTotalDays(year,month):
    """
获取1990-01-01离现在有多少天,1990-01-01是星期一,以这个为标准来判断星期
    """
    totalDays=0
    for i in range(1990,year):     #使用range来循环,算出多少年多少天
        if is_leap_year(i):        #判断是否是闰年
            totalDays += 366
        else:
            totalDays += 365
    for i in range(1,month):       #使用range循环,算出今年前面几个月过了多少天
        totalDays +=getMonthDays(year,i)
    return totalDays


if __name__ == '__main__':
    while True:                                 #循环判断是否输入错误的格式
        print "××××××××××python实现万年历××××××××"
        year = raw_input("请输入年份(如:1990):")
        month = raw_input("请输入月份:如:1")
        try:                                    #捕捉输入异常格式和月份的正确
            year = int(year)
            month = int(month)
            if month <1 or month >1:            #判断月份是否输入错误,错误就重新开始循环
                print "年份或者月份输入错误,请重新输入!"
                continue
        except:                                 #捕捉到转换成整型异常,输出提示,重新开始循环
            print "年份或者月份输入错误,请重新输入!"   
            continue
        break     #如果没有异常就跳出循环
    #if is_leap_year(year):
    #    print "%s是润年"%year
    #else:
    #    print "%s是平年"%year
    #print "%s月份总共有%s天!"%(month,getMonthDays(year,month))

    print "日\t一\t二\t三\t四\t五\t六"
    iCount = 0      #计数器来判断是否换行
    for i in range(getTotalDays(year,month)%7):
        print '\t',                 #输出空不换行
        iCount+=1
    for i in range(1,getMonthDays(year,month)):
        print i,
        print '\t',
        iCount +=1
        if iCount%7 == 0 :           #计数器取余为0,换行
            print ''

相关文章

  • 利用Python的PyPDF2库提取pdf中的图片

    利用Python的PyPDF2库提取pdf中的图片

    本篇给大家分享一下通过Python的PyPDF2库提取pdf中的图片方法,文中有详细的代码示例和流程步骤,感兴趣的同学可以阅读一下
    2023-05-05
  • Python使用psutil库对系统数据进行采集监控的方法

    Python使用psutil库对系统数据进行采集监控的方法

    利用psutil库可以获取系统的一些信息,如cpu,内存等使用率,从而可以查看当前系统的使用情况,实时采集这些信息可以达到实时监控系统的目的。本文给大家介绍Python psutil系统监控的相关知识,感兴趣的朋友一起看看吧
    2021-08-08
  • python实现扑克牌交互式界面发牌程序

    python实现扑克牌交互式界面发牌程序

    这篇文章主要介绍了python实现扑克牌交互式界面发牌程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • 基于Python生成个性二维码过程详解

    基于Python生成个性二维码过程详解

    这篇文章主要介绍了基于Python生成个性二维码过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Python通过文本和图片生成词云图

    Python通过文本和图片生成词云图

    这篇文章主要介绍了Python通过文本和图片生成词云图,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Python 在区块链智能合约开发中的应用与实践小结

    Python 在区块链智能合约开发中的应用与实践小结

    Python作为一种广泛应用的编程语言,在区块链智能合约开发中扮演着重要角色,通过使用Python框架如Brownie和Web3.py,开发者可以轻松编写和部署智能合约,感兴趣的朋友一起看看吧
    2024-09-09
  • 完美解决keras 读取多个hdf5文件进行训练的问题

    完美解决keras 读取多个hdf5文件进行训练的问题

    这篇文章主要介绍了完美解决keras 读取多个hdf5文件进行训练的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Python实现定时任务

    Python实现定时任务

    本篇文章主要介绍了Python实现定时任务,主要有5种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-02-02
  • 使用Python去除字符串中某个字符的多种实现方式比较

    使用Python去除字符串中某个字符的多种实现方式比较

    python中字符串是不可变的,所以无法直接删除字符串之间的特定字符,下面这篇文章主要给大家介绍了关于使用Python去除字符串中某个字符的多种实现方式比较的相关资料,需要的朋友可以参考下
    2022-06-06
  • python给视频添加背景音乐并改变音量的具体方法

    python给视频添加背景音乐并改变音量的具体方法

    在本篇文章里小编给大家整理的是关于python给视频添加背景音乐并改变音量的具体方法,需要的朋友们可以参考下。
    2020-07-07

最新评论