如何在 Python 中打印日历?Python提供了一个内置的函数来打印日历,它还允许基于日历执行许多操作,有很多方法可以打印日历。让我们看看如何打印python日历。

如何在Python中使用calendar
Python提供了一个内置模块calendar来打印输出日历,并允许执行其他各种操作。calendar模块有许多类和函数,可用于打印理想化的日历。日历从星期一开始,到星期日结束。在下面的代码中,我们使用 calendar.month()函数打印一个特定的月份,该函数有两个参数年份和月份。

输出:

不使用calendar模块打印输出日历
在不使用calendar模块的情况下打印日历可能是一件复杂的事情,通过使用循环、if-else判断、数学计算来实现。

在Python中打印全年日历
我们使用calendar模块在python中打印全年日历,calendar.calendar()函数,以年份为参数。

输出:

calendar模块其他用法
- 使用calendar.isleap()判断闰年
- 使用calendar.leapdays()返回在两个年份之间的闰年总数。
- 使用calendar.monthrange()返回一个元组数据(两个整数)。第一个:代表本月起始星期数(0:星期一 … 6:星期天)第二个:代表本月最后一天的日期数,即该月天数
- 使用calendar.monthlen()返回指定月的天数。

文中涉及代码:
import calendar
y=2023
m=3
print(calendar.month(y,m))
month ={1:'January', 2:'February', 3:'March',
4:'April', 5:'May', 6:'June', 7:'July',
8:'August', 9:'September', 10:'October',
11:'November', 12:'December'}
day =(y-1)% 400
day = (day//100)*5 + ((day % 100) - (day % 100)//4) + ((day % 100)//4)*2
day = day % 7
nly=[31,28,31,30,31,30,31,31,30,31,30,31]
ly =[31,29,31,30,31,30,31,31,30,31,30,31]
s=0
if y % 4 == 0:
for i in range(m-1):
s+= ly[i]
else:
for i in range(m-1):
s+= nly[i]
day+=s%7
day=day%7
space=''
space=space.rjust(2, ' ')
print('Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa')
if m==9 or m==4 or m==6 or m==11:
for i in range(31+day):
if i<=day:
print(space, end=' ')
else:
print("{:02d}".format(i-day), end=' ')
if (i+1)%7== 0:
print()
elif m==2:
if y%4==0:
p=30
else:
p=29
for i in range(p+day):
if i<=day:
print(space, end=' ')
else:
print("{:02d}".format(i-day), end =' ')
if (i+1)% 7==0:
print()
else:
for i in range(32+day):
if i<=day:
print(space, end=' ')
else:
print("{:02d}".format(i-day), end=' ')
if (i+1)%7==0:
print()
print()
print (calendar.calendar(2023))
print(calendar.isleap(2022)) # False
print(calendar.leapdays(2000,2023)) # 6
print(calendar.monthrange(2023,3)) # (2, 31)
print(calendar.monthlen(2023,3)) # 31
感谢阅读,关注我,精彩继续!