判断date类型是否为空_Python入门案例(五):判断第几天

b706850804e6b7e47495f1a7d8e0c310.png

一、判断第几天V1.0

主要知识点:

  • 元组:是特殊的序列类型,一旦创建,不能修改,使用逗号和圆括号表示,访问方式和列表相同,一般用于表达固定数据项、函数多返回值等情况。元组中的元素可以是不同类型的,可以通过索引访问元组中的元素
# -*- coding:utf-8 -*-
"""
@author:Angel
@file:which_day_V1.0.py
@time:2018/11/20 14:40
@1.0功能:输入某年某月某日,判断这一天是这一年的第几天
"""
from datetime import datetime


def main():
    input_date_str = input('请输入日期(yyyy/mm/dd):')
    input_date = datetime.strptime(input_date_str, '%Y/%m/%d')
    print(input_date)

    year = input_date.year
    month = input_date.month
    day = input_date.day

    # 计算之前月份天数的总和以及当前月份天数
    days_in_month_tup = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
    print(days_in_month_tup[:month - 1])
    days = sum(days_in_month_tup[:month - 1]) + day

    # 判断年份是平年还是闰年
    if(year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
        if month > 2:
            days += 1
    print('这是第{}天'.format(days))


if __name__ == '__main__':
    main()

二、判断第几天V2.0

主要知识点:

  • 列表
  • 列表与元组的区别:元组是不可改变的,列表是可以改变的;元组通常是不同的数据,列表通常是相同类型的数据;元组表示的是结构,列表表示的是顺序
# -*- coding:utf-8 -*-
"""
@author:Angel
@file:which_day_V2.0.py
@time:2018/11/20 14:40
@1.0功能:输入某年某月某日,判断这一天是这一年的第几天
@2.0功能:用列表替换元组
"""
from datetime import datetime


def is_leap_year(year):
    # 判断年份是平年还是闰年
    is_leap = False
    if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
        is_leap = True
    return is_leap


def main():
    input_date_str = input('请输入日期(yyyy/mm/dd):')
    input_date = datetime.strptime(input_date_str, '%Y/%m/%d')
    print(input_date)

    year = input_date.year
    month = input_date.month
    day = input_date.day

    # 计算之前月份天数的总和以及当前月份天数
    days_in_month_list = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    if is_leap_year(year):
        days_in_month_list[1] = 29
    print(days_in_month_list[:month - 1])
    days = sum(days_in_month_list[:month - 1]) + day
    print('这是{}年的第{}天'.format(year, days))


if __name__ == '__main__':
    main()

三、判断第几天V3.0

主要知识点:

  • 集合:包含0或多个数据项的无序组合,集合中的元素不可重复,集合是无序集合,没有索引和位置的概念,用花括号表示,set()函数用于集合的生成,返回的是一个无重复且排序任意的集合,通常用于表示成员间的关系,元素去重等
# -*- coding:utf-8 -*-
"""
@author:Angel
@file:which_day_V3.0.py
@time:2018/11/20 14:40
@1.0功能:输入某年某月某日,判断这一天是这一年的第几天
@2.0功能:用列表替换元组
@3.0功能:将月份划分为不同的集合再操作
"""
from datetime import datetime


def is_leap_year(year):
    # 判断年份是平年还是闰年
    is_leap = False
    if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
        is_leap = True
    return is_leap


def main():
    input_date_str = input('请输入日期(yyyy/mm/dd):')
    input_date = datetime.strptime(input_date_str, '%Y/%m/%d')
    print(input_date)

    year = input_date.year
    month = input_date.month
    day = input_date.day

    # 包含30天的月份集合
    _30_days_month_set = {4, 6, 9, 11}

    # 包含31天的月份集合
    _31_days_month_set = {1, 3, 5, 7, 8, 10, 12}

    days = day

    for i in range(1, month):
        if i in _30_days_month_set:
            days += 30
        elif i in _31_days_month_set:
            days += 31
        else:
            days += 28

    if is_leap_year(year) and month > 2:
        days += 1
    print('这是{}年的第{}天'.format(year, days))


if __name__ == '__main__':
    main()

四、判断第几天V4.0

主要知识点:

  • 字典:是键-值数据项的组合,每个元素是一个键值对,字典类型数据通过映射查找数据项,映射即通过任意键查找集合中的值的过程,字典类型以键为索引,一个键对应一个值,字典类型的数据是无序的。
# -*- coding:utf-8 -*-
"""
@author:Angel
@file:which_day_V4.0.py
@time:2018/11/20 14:40
@1.0功能:输入某年某月某日,判断这一天是这一年的第几天
@2.0功能:用列表替换元组
@3.0功能:将月份划分为不同的集合再操作
@4.0功能:将月份及其对应天数通过字典表示
"""
from datetime import datetime


def is_leap_year(year):
    # 判断年份是平年还是闰年
    is_leap = False
    if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
        is_leap = True
    return is_leap


def main():
    input_date_str = input('请输入日期(yyyy/mm/dd):')
    input_date = datetime.strptime(input_date_str, '%Y/%m/%d')
    print(input_date)

    year = input_date.year
    month = input_date.month
    day = input_date.day

    # 月份-天数字典
    month_day_dict = {1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31}
    # 天数-月份字典
    # day_month_dict = {30: {4, 6, 9, 11}, 31: {1, 3, 5, 7, 8, 10, 12}}

    days = day

    for i in range(1, month):
        days += month_day_dict[i]

    if is_leap_year(year) and month > 2:
        days += 1
    print('这是{}年的第{}天'.format(year, days))


if __name__ == '__main__':
    main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值