python学习笔记(判断第几天)

每天30min学习python—判断第几天

目录

  1. 判断第几天1.0+2.0
  2. 判断第几天3.0
  3. 判断第几天4.0
  4. 课后练习

(1.0+2.0)实现功能

  • 输入某年某月某日,判断这是一年中的第几天?
  • 2.0新增:用tuple替换list

知识点

  • 元组(tuple)
    • 特殊的数列类型
    • 一旦被创建不能修改,使得代码安全
    • 使用逗号和圆括号表示,比如(2,3,4)
    • 访问方式和列表相同
    • tuple中元素可以是不同类型
    • tuple中可以使用索引访问元素

代码区

"""
    作者:Troublemaker
    功能:判断第几天
    版本:1.0+2.0
    日期:2019/10/7 9:25
    脚本:1.0.py
    新增:用tuple替换list
"""

import datetime
import math


def main():
    """
        主函数
    """
    input_date_str = input("请输入日期:(格式:xxxx/xx/xx)")
    get_date = datetime.datetime.strptime(input_date_str, '%Y/%m/%d')

    # 非闰年列表
    month_list = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    # 非闰年元组
    month_tuple = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)

    # 得到年,月,日
    which_year = get_date.year
    which_month = get_date.month
    which_day = get_date.day

    # 计算非闰年的总天数
    # total_day = math.fsum(month_list[:(which_month - 1)]) + which_day
    total_day = math.fsum(month_tuple[:(which_month - 1)]) + which_day

    # 判断是否是闰年
    if (which_year % 400 == 0) or ((which_year % 100 != 0) and (which_year % 4 == 0)):
        if which_month >= 3:  # 如果闰年月份在三月以后的才能加1
            total_day += 1

    print("这是{}年的第{}天。".format(which_year, total_day))

if __name__ == '__main__':
    main()

3.0 实现功能

  • 输入某年某月某日,判断这是一年中的第几天?
  • 2.0新增:用list替换tuple
  • 3.0新增:将月份划分为不同的集合再操作

知识点

  • 集合(set)----用{}表示
    • python中的集合(set)类型同数学的集合概念一样,包含0个或多个元素的无序组合
    • 集合中的元素不可重复
    • 集合是无序组合,没有索引和位置的概念
    • 集合通常用于表示成员间的关系、元素去重等

代码区

"""
    作者:Troublemaker
    功能:判断第几天
    版本:3.0
    日期:2019/10/7 10:28
    脚本:3.0.py
    新增:将月份划分为不同的集合再操作
"""
import datetime


def main():
    """
        主函数
    """
    input_date_str = input("请输入日期:(格式:xxxx/xx/xx)")
    get_date = datetime.datetime.strptime(input_date_str, '%Y/%m/%d')

    # 31天的集合
    _31day_set = {1, 3, 5, 7, 8, 10, 12}
    # 30天的集合
    _30day_set = {4, 6, 9, 11}

    # 得到年,月,日
    which_year = get_date.year
    which_month = get_date.month
    which_day = get_date.day

    # 计算非闰年的总天数
    total_day = 0
    total_day += which_day
    for month in range(1, which_month):
        if month in _31day_set:
            total_day += 31
        elif month in _30day_set:
            total_day += 30
        else:
            total_day += 28

    # 判断是否是闰年
    if (which_year % 400 == 0) or ((which_year % 100 != 0) and (which_year % 4 == 0)):
        if which_month >= 3:  # 如果闰年月份在三月以后的才能加1
            total_day += 1

    print("这是{}年的第{}天。".format(which_year, total_day))

if __name__ == '__main__':
    main()

4.0 实现功能

  • 输入某年某月某日,判断这是一年中的第几天?
  • 2.0新增:用list替换tuple
  • 3.0新增:将月份划分为不同的集合再操作
  • 4.0新增:将月份及对应天数用字典表示

知识点

  • 字典(dict)

    • 字典是“键——值”数据项的组合,每个键对应一个值
    • 字典类型通过映射查找数据项
    • 什么是映射?
      • 通过任意键查找值的过程
    • 字典(dict)以键为索引,一个键对应一个值
    • 字典类型数据是无序的
  • 字典的一些操作

    • 增加一项
      • d[key]=value
    • 访问某个值
      • d[key]
    • 删除某项
      • del d[key]
    • key 是否在字典中
      • key in dict
  • 字典的遍历

    • 遍历所有key

      • for key in dict.keys():

        print(key)

    • 遍历所有vlaue

      • for value in dict.values():

        print(value)

    • 遍历所有key和对应的value,即所有数据项

      • for item in dict.items():

        print(item)


代码区

"""
    作者:Troublemaker
    功能:判断第几天
    版本:4.0
    日期:2019/10/7 11:01
    脚本:4.0.py
    新增:将月份及其对应天数通过字典表示
"""
import datetime


def main():
    """
        主函数
    """
    input_date_str = input("请输入日期:(格式:xxxx/xx/xx)")
    get_date = datetime.datetime.strptime(input_date_str, '%Y/%m/%d')

    # 月份的字典
    month_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}

    # 得到年,月,日
    which_year = get_date.year
    which_month = get_date.month
    which_day = get_date.day

    # 计算非闰年的总天数
    total_day = 0
    total_day += which_day
    for month in range(1, which_month):
        total_day += month_dict[month]

    # 判断是否是闰年
    if (which_year % 400 == 0) or ((which_year % 100 != 0) and (which_year % 4 == 0)):
        if which_month >= 3:  # 如果闰年月份在三月以后的才能加1
            total_day += 1

    print("这是{}年的第{}天。".format(which_year, total_day))

if __name__ == '__main__':
    main()

课后练习(一行代码:直接获取第几天的方法)

"""
    作者:Troublemaker
    功能:一行代码得到一年中的第几天
    版本:
    日期:2019/10/7 19:41
    脚本:one_code.py
"""
import time


def main():
    input_date_str = input("请输入日期:(格式:xxxx/xx/xx)")
    which_day = time.strptime(input_date_str, "%Y/%m/%d")
    print(which_day.tm_yday)
    
if __name__ == '__main__':
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值