Python学习记录01--日历小程序

 记录和分享自己学习python过程中的一些想法和代码……

class day_time():
    def __init__(self, year, month, day):
        self.year = year
        self.month = month
        self.day = day

    def calculate_year(self):
        if (int(self.year) % 4 == 0 and int(self.year) % 100 != 0) or (int(self.year) % 400 == 0):
            return 1
        return 0

    def calculate_month(self):
        if self.calculate_year() == 1:
            print('润年')
            month_dic = {'一月': '31', '二月': '29', '三月': '31', '四月': '30', '五月': '31', '六月': '30',
                         '七月': '31', '八月': '31', '九月': '30', '十月': '31', '十一月': '30', '十二月': '31'}
        else:
            print('平年')
            month_dic = {'一月': '31', '二月': '28', '三月': '31', '四月': '30', '五月': '31', '六月': '30',
                     '七月': '31', '八月': '31', '九月': '30', '十月': '31', '十一月': '30', '十二月': '31'}
        return month_dic

    def calculate_day(self):
        # 泰勒公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
        # 其中,c是年份的前两位,y是年份的后两位,m是月份,d是日期.
        c = int(self.year[0:2])
        y = int(self.year[2:4])
        m = int(self.month)
        d = int(self.day)
        weekday = int(c / 4) - 2 * c + y + int(y / 4) + int(13 * (m + 1) / 5) + d - 1
        return weekday % 7

    def week_day(self):
        weekdic = {0: '星期日', 1: '星期一', 2: '星期二', 3: '星期三', 4: '星期四', 5: '星期五', 6: '星期六'}
        if int(self.calculate_day()) in weekdic.keys():
            return weekdic[int(self.calculate_day())]
        return -1

    def print_day(self):
        month_dic = self.calculate_month()
        month_trans = {'一月': 1, '二月': 2, '三月': 3, '四月': 4, '五月': 5, '六月': 6,
                       '七月': 7, '八月': 8, '九月': 9, '十月': 10, '十一月': 11, '十二月': 12}
        y = self.year
        for m in month_dic.keys():
            t = month_trans[m]
            for i in range(1, int(month_dic[m]) + 1):
                print(y + '年' + str(t) + '月' + str(i) + '日' + day_time(y, t, i).week_day())


time1 = day_time('2020', '5', '10')
# time1.calculate_month()
# print(time1.week_day())
time1.print_day()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值