datetime小练习

题目:

1.计算你的生日比如近30年来(1990-2019),每年的生日是星期几,统计一下星期几出现的次数比较多
2,生日提醒,距离生日还有几天

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Hiuhung Wan

'''
1.计算你的生日比如近30年来(1990-2019),每年的生日是星期几,统计一下星期几出现的次数比较多
2,生日提醒,距离生日还有几天
'''

import datetime

def get_week_day(date):
    week_day_dict = {0: '星期一', 1: '星期二', 2: '星期三', 3: '星期四', 4: '星期五', 5: '星期六', 6: '星期日'}
    return week_day_dict[date.weekday()]


def q1(str0):
    year = int(str0.split('-')[0])
    month = int(str0.split('-')[1])
    day = int(str0.split('-')[2])
    dict0 = {'星期一': 0, '星期二': 0, '星期三': 0, '星期四': 0, '星期五': 0, '星期六': 0, '星期日': 0, }  # 准备计数
    for i in range(1990, 2020):
        str_temp = str(i) + '-' + str(month) + '-' + str(day)        # 转成字符串
        dt_temp = datetime.datetime.strptime(str_temp, '%Y-%m-%d')   # 转成date对象
        dict0[get_week_day(dt_temp)] += 1                            # 计数君
        print('%s年的生日是:%s' % (i, get_week_day(dt_temp)))

    list(dict0.values()).sort()
    max_num = list(dict0.values())[-1]     # 最大的数
    list0 = list(dict0.keys())
    list1 = []
    for i in list0:
        if dict0[i] == max_num:
            list1.append(i)
    print('%s出现的次数最多,达到了%s次。' % (list1, max_num))
    print('-' * 50)  # 分隔线

def q2(str0):
    today = datetime.date.today()
    current_year = str(today).split('-')[0]   # 2019
    cur_year_bir = current_year + str0[4:]    # 今年生日
    dt = datetime.datetime.strptime(cur_year_bir, '%Y-%m-%d')  # 今年生日
    m = dt.strftime('%j')
    n = datetime.datetime.today().strftime('%j')
    if int(m) > int(n):  # 今年生日还没到
        print('距今年生日还有%s天' % (int(m) - int(n)))
    elif int(m) < int(n):  # 今年生日已过,求到明年生日还有多少天
        print('距明年生日还有%s天' % (365 - (int(n) - int(m))))  # 不考虑闰年
    else:
        print('今天就是生日')


def run():
    #str0 = '1987-3-28'
    str0 = input('请输入你的生日,如:1950-1-1')
    q1(str0)
    q2(str0)

if __name__ == '__main__':
    run()

  

上一篇:J2SE入门(五) final关键字浅析


下一篇:c#,if 分支语句,条件运算符