#显示给定年份的日历
#打印日历函数
def printMonth(year,month):
printMonthTitle(year,month)
printMonthBody(year,month)
#打印标题栏显示月份与年份
def printMonthTitle(year,month):
print(" ",getMonthName(month)," ",year)
print("---------------------------------------")
print(" sun Mon Tue Wed Thu Fri Sat")
#打印日历主体
def printMonthBody(year,month):
startDay=getStartDay(year,month)
numberOfDaysInMonth=getNumberOfDaysInMonth(year,month)
i=0
for i in range(0,startDay):
print(" ",end=" ")
for i in range(1,numberOfDaysInMonth+1):
print(format(i,"4d"),end=" ")
if (i+startDay)%7==0:
print()
def getMonthName(month):
if month==1:
monthName="January"
elif month==2:
monthName="February"
elif month==3:
monthName="March"
elif month==4:
monthName="April"
elif month==5:
monthName="May"
elif month==6:
monthName="June"
elif month==7:
monthName="July"
elif month==8:
monthName="Augest"
elif month==9:
monthName="September"
elif month==10:
monthName="October"
elif month==11:
monthName="November"
else:
monthName="December"
return monthName
def getStartDay(year,month):
STRT_DAY_FOR_JAN_1_1800=3
totalNumberOfDays=getTotalNumberOfDays(year,month)
return (totalNumberOfDays+STRT_DAY_FOR_JAN_1_1800)%7
def getTotalNumberOfDays(year,month):
total=0
for i in range(1800,year):
if isLeapYear(i):
total=total+366
else:
total=total+365
for i in range(1,month):
total=total+getNumberOfDaysInMonth(year,i)
return total
def getNumberOfDaysInMonth(year,month):
if(month==1 or month==3 or month==5 or month==7 or month==8 or
month==10 or month==12):
return 31
if(month==4 or month==6 or month==9 or month==11):
return 30
if month==2:
return 29 if isLeapYear(year) else 28
return 0
def isLeapYear(year):
return (year%4==0 and year%100 !=0) or year%400==0
def main():
year=eval(input("请输入一个年份:"))
month=eval(input("请输入月份:"))
printMonth(year,month)
main()