📜  无需日历或日期时间模块即可打印日历的Python程序(1)

📅  最后修改于: 2023-12-03 15:10:27.744000             🧑  作者: Mango

无需日历或日期时间模块即可打印日历的Python程序

有时候,我们需要在Python程序中打印一个简单的日历。如果我们使用标准的日历或日期时间模块,我们必须导入这些模块并使用它们。

但是,如果我们只需要打印一个基本的日历,而不需要使用日期和时间,我们可以使用一些基本的Python程序来打印一个简单的日历。

以下是一个简单的Python程序,无需使用任何日历或日期时间模块,即可打印日历。

# 打印指定年份的日历
def print_calendar(year):

    # 打印年份
    print("                         ", year)

    # 打印星期几的缩写
    print("Sun Mon Tue Wed Thu Fri Sat")

    # 计算第一天是星期几
    first_day = (year + (year - 1) // 4 - (year - 1) // 100 + (year - 1) // 400) % 7

    # 创建一行日期
    line = "    " * first_day

    # 打印每个月的日历
    for m in range(1, 13):

        # 打印月份和缩写
        if m == 1:
            print("January", end="")
        elif m == 2:
            print("February", end="")
        elif m == 3:
            print("March", end="")
        elif m == 4:
            print("April", end="")
        elif m == 5:
            print("May", end="")
        elif m == 6:
            print("June", end="")
        elif m == 7:
            print("July", end="")
        elif m == 8:
            print("August", end="")
        elif m == 9:
            print("September", end="")
        elif m == 10:
            print("October", end="")
        elif m == 11:
            print("November", end="")
        elif m == 12:
            print("December", end="")
        print("                  ")

        # 打印每个月的天数
        if m == 2:
            if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
                days = 29
            else:
                days = 28
        elif m == 4 or m == 6 or m == 9 or m == 11:
            days = 30
        else:
            days = 31

        # 打印日期
        for d in range(1, days + 1):
            if len(line) > 0 and len(line) % 28 == 0:
                print(line)
                line = ""
            line += "{0:3d}".format(d)

        # 打印最后一行日期
        print(line)
        line = ""

        # 打印每个月之间的空行
        print("")

使用该程序,我们可以打印任何年份的简单月历。以下是一个示例:

>>> print_calendar(2021)
                         2021
Sun Mon Tue Wed Thu Fri Sat
                  January                  
                           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

                  February                  
                           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

                  March                  
                           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

                  April                  
                                       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

                  May                  
                                             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

                  June                  
                                 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

                  July                  
                                             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

                  August                  
                                                   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

               September                  
                                 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

                October                  
                                             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

               November                  
                                       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

               December                  
                                             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

如上所示,我们可以使用这个简单的Python程序来打印基本的日历,而不需要使用标准的日历或日期时间模块。