python月历

__author__='XXX'

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,monet):                        #自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日是星期几
    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):                                 #开始打印日历正文
    i = get_start_day(year,month)
    #print(i)
    print('     ' * i ,end='')
    for j in range(1,get_num_of_days_in_month(year,month)+1):
        print( '%5d' %j,end='')
        i += 1
        if i % 7 == 0:
            print(' ')

year = int(input("Please input target year:"))
month = int(input("Please input target month:"))                #与确定为月历
print_month_title(year,month)
print_month_body(year,month)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值