python 实现万年历

部署运行你感兴趣的模型镜像

引言

pythont 提供了很多运算符,其中逻辑运算符,有三个,分别是 and,or,not ,它们的优先级是

not>and >or ,not 取反 对应其它编程语言里面的 ! ,and 是并且,对应其它编程语言里面的&&

or 是或者,对应其它编程语言里面的 || 

判断闰年还是平年 

def is_dep_year(year):

    if (year%4==0 and year/100!=0)or year%400==0:
        return True
    else:
        return False

其实这两 and 外面可以不加(),因为and的优先级比or 更高

函数

介绍

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫作用户自定义函数。

规则

函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()

任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。

函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

函数内容以冒号 : 起始,并且缩进。

return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。

语法

Python 定义函数使用 def 关键字,一般格式如下:

def <函数名>(<参数(0个或多个)>):
<函数体>
return <返回值>

获取指定年份的月份有多少天 

def getMouthDays(year,month):

    days=31 #默认给31天
    if month==2: #判断如果是2月份
        if is_dep_year(year):
            days=29
        else:
            days=28

    elif month in[4,6,9,11]:#判断是30天的月份
        days=30
    return days

1~12 月,有31天,有30天,闰年2月29天,平年2月28天

获取1990-01-01离现在有多少天,1990-01-01是星期一,以这个为标准来判断星期

def getTotalDays(year,month):
    totalDays=0
    for i in range(1990,year): #算出多少年多少天
        if is_dep_year(i):#判断是否是闰年
            totalDays+=366
        else:
            totalDays+=365
    for i in range(1,month): #算出今年前面几个月过了多少天
        totalDays+=getMouthDays(year,i)
    return totalDays

 全部代码:

# -*- coding: utf-8 -*-
'''
万年历的实现 这里三个'是多行注释
'''

'''
判断是否是闰年
'''
def is_dep_year(year):

    if (year%4==0 and year/100!=0)or year%400==0:
        return True
    else:
        return False


'''
获取指定年份的月份有多少天
'''
def getMouthDays(year,month):

    days=31 #默认给31天
    if month==2: #判断如果是2月份
        if is_dep_year(year):
            days=29
        else:
            days=28

    elif month in[4,6,9,11]:#判断是30天的月份
        days=30
    return days
'''
获取1990-01-01离现在有多少天,1990-01-01是星期一,以这个为标准来判断星期
'''
def getTotalDays(year,month):
    totalDays=0
    for i in range(1990,year): #算出多少年多少天
        if is_dep_year(i):#判断是否是闰年
            totalDays+=366
        else:
            totalDays+=365
    for i in range(1,month): #算出今年前面几个月过了多少天
        totalDays+=getMouthDays(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 > 12: # 判断月份是否输入错误,错误就重新开始循环
                print "年份或者月份输入错误,请重新输入!"
                continue
        except: # 捕捉到转换成整型异常,输出提示,重新开始循环
                print "年份或者月份输入错误,请重新输入!"
        continue
        break # 如果没有异常就跳出循环

'''
打印日期,按周的形式打印
'''
     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, getMouthDays(year, month)+1):
            print i,
            print '\t',
            iCount += 1
            if iCount % 7 == 0: # 计数器取余为0,换行
                print ''

效果如下:

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值