开发者社区> 问答> 正文

python 怎么调出日历

python 怎么调出日历

展开
收起
云计算小粉 2018-05-10 20:10:59 1374 0
1 条回答
写回答
取消 提交回答
  • is_leap_year 判断是否为闰年
    get_num_of_days_in_month 获得每月的天数
    get_total_num_of_days 获得自1800年1月1日以来经过的天数
    get_start_day 获得每月1日为星期几
    print_month_body 打印日历的数字部分
    get_month_name 获得每月的名称
    print_month_title 打印日历标题与头部部分

    具体实现如下:

    coding=utf-8

    author = 'Leonard'

    def is_leap_year(year):

    # 判断是否为闰年
    if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
        return True
    else:
        return False
    

    def get_num_of_days_in_month(year, month):

    # 给定年月返回月份的天数
    if month in (1, 3, 5, 7, 8, 10, 12):
        return 31
    elif month in (4, 6, 9, 11):
        return 30
    elif is_leap_year(year):
        return 29
    else:
        return 28
    

    def get_total_num_of_day(year, month):

    # 自1800年1月1日以来过了多少天
    days = 0
    for y in range(1800, year):
        if is_leap_year(y):
            days += 366
        else:
            days += 365
    
    for m in range(1, month):
        days += get_num_of_days_in_month(year, m)
    
    return days
    

    def get_start_day(year, month):

    # 返回当月1日是星期几,由1800.01.01是星期三推算
    return 3 + get_total_num_of_day(year, month) % 7
    

    月份与名称对应的字典

    month_dict = {1: 'January', 2: 'February', 3: 'March', 4: 'April', 5: 'May', 6: 'June',

              7: 'July', 8: 'August', 9: 'September', 10: 'October', 11: 'November', 12: 'December'}
    

    def get_month_name(month):

    # 返回当月的名称
    return month_dict[month]
    

    def print_month_title(year, month):

    # 打印日历的首部
    print '         ', get_month_name(month), '   ', year, '          '
    print '-------------------------------------'
    print '  Sun  Mon  Tue  Wed  Thu  Fri  Sat  '
    

    def print_month_body(year, month):

    '''
    打印日历正文
    格式说明:空两个空格,每天的长度为5
    需要注意的是print加逗号会多一个空格
    '''
    i = get_start_day(year, month)
    if i != 7:
        print ' ', # 打印行首的两个空格
        print '    ' * i,   # 从星期几开始则空5*几个空格
    for j in range(1, get_num_of_days_in_month(year, month)+1):
        print '%4d' %j, # 宽度控制,4+1=5
        i += 1
        if i % 7 == 0:  # i用于计数和换行
            print ' '   # 每换行一次行首继续空格
    

    主函数部分

    year = int(raw_input("Please input target year:"))
    month = int(raw_input("Please input target month:"))
    print_month_title(year, month)
    print_month_body(year, month)

    2019-07-17 22:24:16
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载