python 入门学习-输入日期判断天数

输入某年某月某日,判断这一天是这一年的第几天,主要是牵扯到 月份不同 天数不一样,年份不同分闰年和平年只分

闰年判断,四年一润,百年不润    四百年再润 

if ((year % 4 == 0) and(year % 100 != 0)) or  (year % 400 == 0 ) :
    days+=1)

1.通过本节主要学习 元组,列表,集合,字 典 的使用

a) 元组(tuple)是特殊的序列类型

 

  1. 一旦创建不能修改,使得代码更安全,使用逗号和圆括号来表示 如(2,4,6,8)  (‘read’,‘green’,'blue')

  2.访问方式和列表相同

  3.一般用于表达固定数据项。函数多返回值等情况

元组中的元素可以是不同的类型 ,元组的各样元素存在先后关系,可以通过索引访问元组中的元素

  

"""
作者:
版本:v1.0
功能:输入年月日 判断是一年中的第几天
日期:20190726
使用元组的方式和列表两种方式,其中元组方式 已经注释

"""
from _datetime import datetime

def main():
    input_data_str = input('请输入日期(yyyy/mm/dd):')

    input_data = datetime.strptime(input_data_str, '%Y/%m/%d')
    print(input_data_str)
    year = input_data.year
    month = input_data.month
    day = input_data.day

    # 计算之前月份的天数总和使用元组的方式实现
    # days_in_month_tub =(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
    # days = sum(days_in_month_tub[:month-1]) + day
    # if (year % 400 == 0 ) or ((year % 4 == 0) and(year % 100 != 0)):
    #     days += 1

    # 计算之前月份的天数总和使用列表的方式实现
    days_in_moth_lis = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    # 判断是否是闰年

    if (year % 400 == 0 ) or ((year % 4 == 0) and(year % 100 != 0)):
        days_in_moth_lis[1] = 29

    days = sum(days_in_moth_lis[:month - 1]) + day
    print('这是第{}天'.format(days))


if __name__ == '__main__':
    main()

 

参考代码:使用元组和列表实现的功能

参考代码使用集合实现功能

"""
作者:
版本:v2.0
功能:输入年月日 判断是一年中的第几天
日期:20190726
使用集合方式实现
        if i in _30_days_month_set:  # 表示判读 i 是否在集合 _30_days_moth_set 中
"""
from _datetime import datetime

def main():
    input_data_str = input('请输入日期(yyyy/mm/dd):')

    input_data = datetime.strptime(input_data_str, '%Y/%m/%d')
    print(input_data_str)
    year = input_data.year
    month = input_data.month
    day = input_data.day

    # 计算之前月份的天数总和使用集合的方式实现
    _30_days_month_set = {4,6,9,11}
    _31_days_month_set = {1,3,5,7,8,10,12}

    days = 0
    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 += 32
        else:
            days += 28
    # 判断是否是闰年
    if (year % 400 == 0 ) or ((year % 4 == 0) and(year % 100 != 0)):
        days += 1

    print('这是{}年 第{}天'.format(year, days))


if __name__ == '__main__':
    main()

参考代码使用字典实现功能

"""
作者:
版本:v3.0
功能:输入年月日 判断是一年中的第几天
日期:20190726
使用字典方式实现
"""
from _datetime import datetime

def main():
    input_data_str = input('请输入日期(yyyy/mm/dd):')

    input_data = datetime.strptime(input_data_str, '%Y/%m/%d')
    print(input_data_str)
    year = input_data.year
    month = input_data.month
    day = input_data.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}


    days = 0
    days += day

    # # 判断是否是闰年
    # if (year % 400 == 0 ) or ((year % 4 == 0) and(year % 100 != 0)):
    #     month_day_dict[2]=29
    # else:
    #     month_day_dict[2]=28
    # for i in range(1, month):
    #     days+= month_day_dict[i]

    # 判断是否是闰年
    if (year % 400 == 0 ) or ((year % 4 == 0) and(year % 100 != 0)):
        days+=1

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

    print('这是{}年 第{}天'.format(year,days))


if __name__ == '__main__':
    main()

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值