判断一年中的第几天

元组

  1. 元组(tuple)是特殊的序列类型
  2. 一旦创建就不能修改,使得代码更安全
  3. 试用逗号和圆括号来表示,如(‘red’,‘blue’,‘green’),(;2,4,6)
  4. 访问方式和列表不同
  5. 一般用于表示固定数据项、函数多返回值等情况
    特点:
    元组中的元素可以是不同类型的
    元组中各元素存在先后关系,可通过索引访问元组中元素

列表与元组

  • 元组是不可变的,列表是可变的
  • 元组通常由不同的数据组成,列表通常是由相同的数据类型组成
  • 元组表示的是结构,列表表示的是顺序

集合

  • python 中的集合(set)类型同数学中的集合概念一致,即包含0或多个数据项的无序组合
  • 集合中的元素不可重复
  • 集合是无序组合,没有索引和位置的概念
  • set()函数用于集合的生成,返回结果是一个无重复且排序任意的集合
  • 集合通常用于表示成员间的关系、元素去重等

字典

  • 字典类型(dict)是"键—值"数据项的组合,每个元素是一个键值对
    如:身份证号(键)—个人信息(值)
  • 字典类型数据通过映射查找数据项
  • 映射:通过任意键查找集合中的值得过程
  • 字典类型以键为索引,一个键对应一个值
  • 字典类型的数据是无序的

在这里插入图片描述

增加一项d[key] = value
访问d[key]
删除某项del d[key]
key是否在字典中key in d

查阅官方文档找到直接获取第几天的方法
https://docs.python.org/3/library/time.html#time.strftime
在这里插入图片描述

判断第几天1.0
试用知识点:元组

"""
    作者:陈洁
    版本:1.0
    日期:07/10/2019
    功能:输入某年某月某日,判断这一天是这一年的第几天?
"""
from datetime import datetime
def main():
    """
        主函数
    """
    input_date_str = input('请输入日期(yyy/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)
    days = sum (days_in_month_tup[: month - 1]) + day
    print(days)
    #判断闰年
    if (year%400==0) or(year%4 ==0 )and( year%400 != 0):
        if month>2 :
            days +=1
    print('这是第{}天。'.format(days))
if __name__ == '__main__':
    main()

判断第几天2.0
试用知识点:列表

"""
    作者:陈洁
    版本:2.0
    日期:07/10/2019
    功能:输入某年某月某日,判断这一天是这一年的第几天?
    2.0新增功能:用列表替换元组
"""
from datetime import datetime
def is_leap_year(year):
    """
    判断是否为闰年
    是,返回true
    否,返回false
    """
    is_leap = False
    if (year % 400 == 0) or ((year % 4 == 0) and (year % 400 != 0)):
        is_leap = True
    return is_leap
def main():
    """
        主函数
    """
    input_date_str = input('请输入日期(yyy/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
    days = sum(days_in_month_list[:month - 1])+ day
    print('这是{}年的第{}天。'.format(year,days))
if __name__ == '__main__':
    main()

判断第几天3.0
试用知识点:集合

"""
    作者:陈洁
    版本:3.0
    日期:07/10/2019
    功能:输入某年某月某日,判断这一天是这一年的第几天?
    2.0新增功能:用列表替换元组
    3.0新增功能:将月份划分为不同的集合再操作
"""
from datetime import datetime
def is_leap_year(year):
    """
    判断是否为闰年
    是,返回true
    否,返回false
    """
    is_leap = False
    if (year % 400 == 0) or ((year % 4 == 0) and (year % 400 != 0)):
        is_leap = True
    return is_leap
def main():
    """
        主函数
    """
    input_date_str = input('请输入日期(yyy/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_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 += 31
        else:
            days += 28
    if is_leap_year(year) and month > 2:
        days += 1
    print('这是{}年的第{}天。'.format(year, days))
if __name__ == '__main__':
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值