首先我们日常生活中其实大部分东西都可以使用python去实现完成的,今天我们就学习了如何去使用python去实现我们现实生活中常用的日历。
下附代码,大家可以先看看代码
#WanNianLi_Month.py
#coding=utf-8
__author__ = '庄乾坤'
def is_leap_year(year):#自定义函数
#判断是否为闰年
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
return True
else:
return False
def get_num_of_days_in_month(year,month):
#给定年月返回月份的天数
if month in (1,3,5,7,8,10,12):#设定月份范围
return 31
elif month in (4,6,9,11):
return 30
elif is_leap_year(year):
return 29
else:
return 28
def get_total_num_of_day(year,month):
#自1800年1月1日以来过了多少天
days = 0
for y in range(1800,year):
if is_leap_year(y):
days += 366
else:
days += 365
for m in range(1,month):
days += get_num_of_days_in_month(year,m)
return days
def get_start_day(year,month):
#返回当月1日是星期几,由1800.01.01是星期三推算
return (3 + get_total_num_of_day(year,month)) % 7
#月份与名称对应的字典
month_dict = {1:'January',2:'February',3:'March',4:'April',5:'May',6:'June',7:'July',8:'August',9:'September',10:'October',11:'November',12:'December'}
def get_month_name(month):
#返回当月的名称
return month_dict[month]
def print_month_title(year,month):
#打印日历的首部
print('',get_month_name(month),' ',year,' ')
print('------------------------------------------------------------')
print(' Sun Mon Tue Wed Thu Fri Sat ')
def print_month_body(year,month):
#打印日历正文,格式说明:空两空格,每天长度为5,需要注意的是print加逗号会多一个空格
i = get_start_day(year,month)
#print(i)
print(' ' * i,end='')#从星期几开始则空5*几个空格
for j in range(i,get_num_of_days_in_month(year,month)+1):
print('%5d' %j,end='')#宽度控制,4+1=5
i += 1
if i % 7 == 0 : #i用于技术和换行
print('')#每换行一次行首继续空格
year = int(input("Please input target year:"))
for month in range(1,13):
print_month_title(year,month)
print_month_body(year,month)
print()
这里面用的比较重要的函数是自定义函数和for循环语句
最后输入2023年即可,出来了整年的日历
还有一个更简便的代码,大家可以一起学习下
#Calendar_Call.py
import calendar
#输入指定的年月
yy=int(input("输入年份:"))
mm=int(input("输入月份:"))
#显示月日历
print(calendar.month(yy,mm))
#显示年日历
print(calendar.prcal(yy,m=6))#使用calend里的prcal函数,m参数可以显示几个月 几个月为一行输出[将12个月分为几列]
#给定某一天,判断是星期几
print(calendar.weekday(2022, 9, 9))
#判断是不是闰年
print(calendar.isleap(2022))
这条比上面要少,运行结果也是差不多的