问题描述编写一个万年历系统输入任意年份显示该年的12个月份;输入任意年份和月份显示该年月日历。用python语言进行编码设计并给出代码分析且必须满足以下要求1要求每个面板输出整个月份不可分段显示超过应能够自动分屏显示提示可通过if语句控制输出行数的多少2能对闰年进行检测与处理提示通过取4的余数来判断是否为闰年。3按照日历的格式每行自动显示7位数提示类似于1的过程通过if语句来实现4能自动调用系统时
代码如下:
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)。 -
我们使用
for循环依次打印每个月份的日历。在打印每个月份的日历时,我们首先打印月份和星期,然后根据每个月的日历,逐行打印日期。 -
我们通过
if语句来控制输出行数和每行输出的格式。 -
最后,我们打印指定年份和月份的日历。我们使用
calendar.isleap(year)来判断是否为闰年,如果是闰年且月份为2,则天数为29;否则,使用calendar.monthrange(year, month)[1]来获取指定月份的天数。然后,我们依次打印每个日期,控制每行输出的格式和换行
原文地址: https://www.cveoy.top/t/topic/hpc5 著作权归作者所有。请勿转载和采集!