需求
输入年份和月份可以输出当年当月的日历
一、代码展示
# 提示语句 年 月
# 判断是否为闰年的
def isLeapYear(year):
if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0):
return True
else:
return False
# 给定月份,算出来该月份有几天
def getDayOfMonth(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
elif month == 4 or month == 6 or month == 9 or month == 11:
return 30
else:
if isLeapYear(year):
return 29
else:
return 28
while True:
yearStr = input("请输入年份(数字):")
if yearStr.isdigit():
year=int(yearStr)
monthStr = input("请输入月份(1-12):")
if monthStr.isdigit() and 1 <= int(monthStr) <=12:
month=int(monthStr)
# 计算该年月距离 1900-01-01的总天数
totalDays = 0
for y in range(1900,year):
if isLeapYear(y):
totalDays += 366
else:
totalDays += 365
# 将剩余月份的天数相加
for m in range(1,month):
totalDays += getDayOfMonth(year,m)
print(totalDays)
# 该年该月的第一天是星期几
firstDayOfMonth = (totalDays+1) % 7
print(firstDayOfMonth)
# 接着进行格式化输出
print("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t")
# 规律 星期几就打印几个空格
# 一个tab 两个汉字
# print("\t"*2)
counter = firstDayOfMonth
print("\t"*2*firstDayOfMonth,end="")
# 打印几号
dayOfMonth = getDayOfMonth(year,month)
for day in range(1,dayOfMonth+1):
print(day,end="\t\t")
counter += 1
# 控制换行,没打印7个值包括空白都换行
if counter % 7 == 0:
print()
print()
else:
print("输入的数据不合法,请输入1~12之间的数字")
else:
print("请输入数字,不要闹")