python今年第几周 python第几天_元组

判断第几天 1.0

python今年第几周 python第几天_python今年第几周_02


四年一闰,百年不闰。year%4==0 &year%100!=0

四百年再闰。year%400==0

元组

python今年第几周 python第几天_python今年第几周_03


区别于列表,元组用圆括号和逗号隔开。

元组一旦被创建就不能修改。

python今年第几周 python第几天_主函数_04

v_1.0代码如下:

"""
    作者:xpt
    功能:判断第几天
    版本:1.0
    日期:19/11/2018
"""
from datetime import datetime


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

    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)  # 平年二月28天,则闰年二月需要+1
    # print(days_in_month_tup[:month - 1])
    days = day + sum(days_in_month_tup[:month - 1])
    # print (days)

    # 判断是否闰年
    if (year % 4 == 0 & year % 100 != 0)|(year % 400 == 0):
        # 注意月份大于2才加1
        if month > 2:
            days += 1
    print('这是第{}天'.format(days))


if __name__ == '__main__':
    main()

v_1.0代码模块化:

python今年第几周 python第几天_初始化_05

"""
   作者:xpt
    功能:判断第几天
    版本:1.0
    日期:19/11/2018
"""
from datetime import datetime


def is_leap_year(year):
    """
    判断是否闰年
    是,返回Ture
    否,返回False
    """
    is_leap = False
    if (year % 4 == 0 & year % 100 != 0)|(year % 400 == 0):
        is_leap = True
    return  is_leap


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

    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)  # 平年二月28天,则闰年二月需要+1
    # print(days_in_month_tup[:month - 1])
    days = day + sum(days_in_month_tup[:month - 1])
    # print (days)

    # 判断是否闰年
    # 注意月份大于2才加1
    if month > 2 & is_leap_year(year):
        days += 1
    print('这是第{}天'.format(days))


if __name__ == '__main__':
    main()

但是一般不写两个return,修改如下:

python今年第几周 python第几天_python今年第几周_06


python今年第几周 python第几天_初始化_07

• 如果用列表替换元组,该如何操作?

判断第几天 2.0–增加功能:用列表替换元组

python今年第几周 python第几天_主函数_08

列表与元组

python今年第几周 python第几天_主函数_09


列表是可以被修改的!!!

python今年第几周 python第几天_元组_10


v_2.0代码如下:

"""
    作者:xpt
    功能:判断第几天
    版本:2.0
    日期:19/11/2018
    2.0增加功能:用列表替换元组
"""
from datetime import datetime


def is_leap_year(year):
    """
    判断是否闰年
    是,返回Ture
    否,返回False
    """
    is_leap = False
    if (year % 4 == 0 & year % 100 != 0)|(year % 400 == 0):
        is_leap = True
    return  is_leap


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

    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)  # 平年二月28天,则闰年二月需要+1
    # 列表是可以被修改的
    if is_leap_year(year):
        days_in_month_list[1] = 29

    days = day + sum(days_in_month_list[:month - 1])

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


if __name__ == '__main__':
    main()

python今年第几周 python第几天_初始化_11

• 能否按不同的天数将月份划分成不同的集合,然后再操作?

判断第几天 3.0–增加功能:将月份划分为不同的集合再操作

python今年第几周 python第几天_python今年第几周_12

集合

python今年第几周 python第几天_python今年第几周_13


无序!无重复!

python今年第几周 python第几天_初始化_14


python今年第几周 python第几天_主函数_15


python今年第几周 python第几天_元组_16

range()用法补充:

指定从哪个数字开始

python今年第几周 python第几天_初始化_17


v_3.0代码如下

"""
    作者:xpt
    功能:判断第几天
    版本:3.0
    日期:20/11/2018
    2.0增加功能:用列表替换元组
    3.0增加功能:将月份划分为不同的集合再操作
"""
from datetime import datetime


def is_leap_year(year):
    """
    判断是否闰年
    是,返回Ture
    否,返回False
    """
    is_leap = False
    if (year % 4 == 0 & year % 100 != 0)|(year % 400 == 0):
        is_leap = True
    return  is_leap


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

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

    _30_day_month_set = {4,6,9,11}        # 一个月是30天的月份
    _31_day_month_set = {1,3,5,7,8,10,12} # 一个月是31天的月份

    # 初始化值
    days = 0
    for i in range(1, month):
        if i in _30_day_month_set:
            days += 30
        elif i in _31_day_month_set:
            days += 31
        else:
            days += 28
    # 是否闰年,是否月份大于2
    if is_leap_year(year):
        if month > 2:
            days += 1

    days = days + day

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


if __name__ == '__main__':
    main()

python今年第几周 python第几天_python今年第几周_18

• 能否将月份和天数同时表示在一种数据类型中?

判断第几天 4.0–增加功能:将月份及其对应天数通过字典表示

python今年第几周 python第几天_元组_19

字典

python今年第几周 python第几天_主函数_20


python今年第几周 python第几天_python今年第几周_21


创建字典:

python今年第几周 python第几天_初始化_22


增加一项:

python今年第几周 python第几天_元组_23


修改某一项:

python今年第几周 python第几天_元组_24


删除某一项:

python今年第几周 python第几天_元组_25


是否在字典中:

python今年第几周 python第几天_python今年第几周_26


python今年第几周 python第几天_python今年第几周_27


python今年第几周 python第几天_主函数_28


字典d.get用法:

python今年第几周 python第几天_初始化_29


v_4.0代码如下:

月份-天数 字典

python今年第几周 python第几天_主函数_30

"""
    作者:xpt
    功能:判断第几天
    版本:4.0
    日期:20/11/2018
    2.0增加功能:用列表替换元组
    3.0增加功能:将月份划分为不同的集合再操作
    4.0增加功能:将月份及其对应天数通过字典表示
"""
from datetime import datetime


def is_leap_year(year):
    """
    判断是否闰年
    是,返回Ture
    否,返回False
    """
    is_leap = False
    if (year % 4 == 0 & year % 100 != 0)|(year % 400 == 0):
        is_leap = True
    return is_leap


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

    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}

    # 初始化值
    days = 0
    for i in range(1, month):
        days += month_day_dict[i]

    # 是否闰年,是否月份大于2
    if is_leap_year(year):
        if month > 2:
            days += 1

    days = days + day

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


if __name__ == '__main__':
    main()

天数-月份 字典

python今年第几周 python第几天_主函数_31


python今年第几周 python第几天_元组_32

"""
    作者:xpt
    功能:判断第几天
    版本:4.0
    日期:20/11/2018
    2.0增加功能:用列表替换元组
    3.0增加功能:将月份划分为不同的集合再操作
    4.0增加功能:将月份及其对应天数通过字典表示
"""
from datetime import datetime


def is_leap_year(year):
    """
    判断是否闰年
    是,返回Ture
    否,返回False
    """
    is_leap = False
    if (year % 4 == 0 & year % 100 != 0)|(year % 400 == 0):
        is_leap = True
    return is_leap


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

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

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

    # 初始化值
    days = 0
    for i in range(1, month):
        if i in day_month_dict.get(30):
            days += 30
        elif i in day_month_dict.get(31):
            days += 31
        else:
            days += 28

    # 是否闰年,是否月份大于2
    if is_leap_year(year):
        if month > 2:
            days += 1

    days = days + day

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


if __name__ == '__main__':
    main()

python今年第几周 python第几天_元组_33

课后练习
• Python提供了一个可以直接获取“第几天”的方法,一行代码就能完成
• 自己通过查阅官方文档找到实现方法
• 提示
strftime()中提供了许多格式化日期字符串的操作
https://docs.python.org/3/library/time.html#time.strftime Next?
• 文件的基本操作
• 循环结构的跳出
• 面向对象的编程