Python 万年历系统:生成任意年份、月份的日历

本篇文章将介绍使用Python编写一个万年历系统,能够生成任意年份的完整日历,以及任意年份和月份的日历,并提供代码分析。

代码实现

import calendar
import time

# 获取当前时间
current_time = time.localtime()
current_year = current_time.tm_year
current_month = current_time.tm_mon

# 输入年份和月份
year = int(input('请输入年份:'))
month = int(input('请输入月份:'))

# 判断输入是否合法
if month < 1 or month > 12:
    print('输入的月份不合法!')
elif year < 0:
    print('输入的年份不合法!')
else:
    # 打印整年份的日历
    print('{0}年的日历如下:\n'.format(year))
    for i in range(1, 13):
        # 计算每个月的日历
        cal = calendar.monthcalendar(year, i)

        # 打印月份和星期
        print('*************************************************')
        print('{0}月份的日历如下:\n'.format(i))
        print('Mo Tu We Th Fr Sa Su')

        # 打印每个月的日历
        for j in range(len(cal)):
            # 控制输出行数
            if cal[j][0] == 0:
                break
            for k in range(7):
                # 控制每行输出的格式
                if cal[j][k] == 0:
                    print('  ', end=' ')
                elif cal[j][k] < 10:
                    print(' {0}'.format(cal[j][k]), end=' ')
                else:
                    print('{0}'.format(cal[j][k]), end=' ')
            print()
        print('*************************************************')

    # 打印指定年份和月份的日历
    print('\n指定年份和月份的日历如下:\n')
    # 判断是否为闰年
    is_leap_year = calendar.isleap(year)
    if is_leap_year and month == 2:
        days = 29
    else:
        days = calendar.monthrange(year, month)[1]
    print('Mo Tu We Th Fr Sa Su')
    for i in range(1, days + 1):
        # 控制每行输出的格式
        if i < 10:
            print(' {0}'.format(i), end=' ')
        else:
            print('{0}'.format(i), end=' ')
        # 控制换行
        if i % 7 == 0:
            print()
    print()

代码分析

  1. 导入模块: 首先,我们通过 import calendar 引入日历模块,通过 import time 引入时间模块。

  2. 获取当前时间: 使用 time.localtime() 获取当前时间,并分别获取当前年份和月份。

  3. 用户输入: 通过 input() 函数获取用户输入的年份和月份,并将其转换为整数类型。

  4. 输入验证: 对用户输入的年份和月份进行判断,如果不合法,则输出错误提示;否则,进入下一步。

  5. 生成整年日历: 使用 calendar.monthcalendar(year, i) 来计算每个月的日历,其中 year 为年份,i 为月份。它返回一个二维列表,每行代表一周,每个元素代表一个日期(如果这一天不在这个月,它的值为0)。通过循环打印每个月的日历,控制输出行数和每行输出的格式。

  6. 生成指定月份日历: 使用 calendar.isleap(year) 来判断是否为闰年,如果是闰年且月份为2,则天数为29;否则,使用 calendar.monthrange(year, month)[1] 来获取指定月份的天数。然后,我们依次打印每个日期,控制每行输出的格式和换行。

总结

本篇文章介绍了使用 Python 编写万年历系统的代码实现和分析,帮助您了解如何使用 Python 编程语言进行日期和时间的处理。您可以根据需要对代码进行扩展和修改,例如添加其他功能,例如显示节日等。

Python万年历系统:生成任意年份、月份的日历

原文地址: https://www.cveoy.top/t/topic/oR10 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录