万年历_获取某月日历

**用户任意输入一个年份,月份,系统会自动打印一张该月份的日历表,效果类似于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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值