已知1900年1月1日是星期一
1.先输出提示语句,接受用户输入年、月。
2.根据输入的年份判断是否是闰年。
3.根据月份判断月的天数。
4.循环计算输入的年份距1900年1月1日的总天数。
5.循环计算输入的月份距输入年份的1月1日共有多少天。
6.相加4与5的天数得到总天数
7.用总天数计算输入月份的第一天是星期几
8.格式化显示这个月的日历
代码如下:
def isLeapYear(year):#判断是否是闰年
return True if (year % 100 != 0 and year % 4 == 0) or year % 400 ==0 else False
def monthDay(year,month):#判断当前月天数
li = [31,28,31,30,31,30,31,31,30,31,30,31]
if isLeapYear(year):
li[1] = 29
return li[month-1]
def totalDay(year, month):#距1900年1月1日的天数
days = 0
for index_year in range(1900, year):
days += 366 if isLeapYear(index_year) else 365
for index_month in range(1, month):
days += monthDay(year, index_month)
return days
def show(): #显示当前月
year,month = eval(input("输入年份、月份:"))
space_num = totalDay(year, month) % 7 + 1
#print("空格数",space_num)
#print("星期",totalDay(year, month) % 7 + 1,"开始")
print("星期日\t一\t二\t三\t四\t五\t六")
for i in range(1, monthDay(year,month) + 1):
if (i == 1):
for j in range(space_num % 7):
print("\t",end="")
print("\t%2d"%i,end="")
if (i + space_num) % 7 == 0:
print()
show()
实现的效果如下: