Python万年历系统:生成任意年份、月份的日历
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()
代码分析
-
导入模块: 首先,我们通过
import calendar引入日历模块,通过import time引入时间模块。 -
获取当前时间: 使用
time.localtime()获取当前时间,并分别获取当前年份和月份。 -
用户输入: 通过
input()函数获取用户输入的年份和月份,并将其转换为整数类型。 -
输入验证: 对用户输入的年份和月份进行判断,如果不合法,则输出错误提示;否则,进入下一步。
-
生成整年日历: 使用
calendar.monthcalendar(year, i)来计算每个月的日历,其中year为年份,i为月份。它返回一个二维列表,每行代表一周,每个元素代表一个日期(如果这一天不在这个月,它的值为0)。通过循环打印每个月的日历,控制输出行数和每行输出的格式。 -
生成指定月份日历: 使用
calendar.isleap(year)来判断是否为闰年,如果是闰年且月份为2,则天数为29;否则,使用calendar.monthrange(year, month)[1]来获取指定月份的天数。然后,我们依次打印每个日期,控制每行输出的格式和换行。
总结
本篇文章介绍了使用 Python 编写万年历系统的代码实现和分析,帮助您了解如何使用 Python 编程语言进行日期和时间的处理。您可以根据需要对代码进行扩展和修改,例如添加其他功能,例如显示节日等。
原文地址: https://www.cveoy.top/t/topic/oR10 著作权归作者所有。请勿转载和采集!