用Python写一个日历
计算公式
w=(d+2*m+3*(m+1)//5+y+y//4-y//100+y//400)%7+1
如果是一月或者二月的话,需要把1、2月当做上一年的13、14月使用
代码
def get_week_with_date(y,m,d):
'''根据年月日计算星期几'''
#把1、2月当做上一年的13、14月使用
if m==1 :
y=y-1
m=13
elif m==2:
y=y-1
m=14
#使用公式计算出星期几并返回
w=(d+2*m+3*(m+1)//5+y+y//4-y//100+y//400)%7+1
return w
def is_leap_year(y):
'''判断是否为闰年'''
if year%400==0 or (year%4==0 and year%100!=0):
return True
else:
return False
def get_days_in_month(y,m):
'''获取指定月份的天数'''
if m in [1,3,5,7,8,10,12]:
return 31
elif m in [4,6,9,11]:
return 30
else:
if is_leap_year(y) :
return 29
else:
return 28
'''1.提示用户输入年月'''
year=int(input("请输入年份:"))
month=int(input("请输入年份:"))
'''2.计算这个月有多少天'''
days=get_days_in_month(year, month)
'''3.按照指定格式显示日期'''
print("一 二 三 四 五 六 日")
print("-"*20)
for i in range(1,days+1):
w=get_week_with_date(year, month, i)
if i==1 :
print(f"{' '*(w-1)*3}",end="")
else:
if w==1 :
print("")
print(f"{i:02d}",end=" ")
print("")
输出效果