**用户任意输入一个年份,月份,系统会自动打印一张该月份的日历表,效果类似于windows系统的日历表。
1,简单的方法就是直接导入Calendar模块,调用它的month方法。
import calendar
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
cal = calendar.month(year, month)
print ("输出{0}年{1}月份的日历:".format(year,month))
print (cal)
输入:
请输入年份:2024
请输入月份:8
输出:
输出2024年8月份的日历:
August 2024
Mo Tu We Th Fr Sa Su
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
2,不直接导入模块,通过定义函数块来实现。
def print_month_calendar(year, month):
# 每月的天数,二月默认为28天,后面会根据是否为闰年进行调整
days_in_month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# 输入的年份和月份
Year = year
Month = month
# 假设没有闰年存在,那么我们所输入的这年的第一天之前就有s日
s = 365 * (Year - 1)
Count = 0
# 计算之前的闰年数
for i in range(1, Year):
if i % 4 == 0 and i % 100 != 0 or i % 400 == 0:
Count += 1
# 加上闰年数(闰年多一天)
s = s + Count
# 如果是闰年,则二月改为29天
if Year % 4 == 0 and Year % 100 != 0 or Year % 400 == 0:
days_in_month[2] = 29
# 加上当前年中已经过的月份的天数
for i in range(1, Month):
s = s + days_in_month[i]
# 计算出该月份的第一天是星期几
k = s % 7
# 输出星期标题
week_days = [" 日", " 一", " 二", " 三", " 四", " 五", " 六"]
for day in week_days:
print(day, end="")
print()
# 输出空白区域
for i in range(k + 1):
print(" ", end="")
# 输出当前月的天数
for i in range(1, days_in_month[Month] + 1):
print(f"{i:4d}", end="")
# 每周六换行
if (i + k + 1) % 7 == 0:
print()
print()
# 用户输入年份和月份
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
# 打印相应的月历表
print_month_calendar(year, month)
请输入年份:2024
请输入月份:8
日 一 二 三 四 五 六
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31