Python的听课笔记案例5--判别第几天4.0

原创
小哥 3年前 (2022-11-02) 阅读数 7 #大杂烩

本课是《审时度势》的第一课4本课重点介绍本例中词典类型的应用。

词典类型(dict)“键--Value“数据项组合,每个元素都是一个键-值对(任何类型都可以用作键)。
例如:ID号(密钥)--个人信息(价值)
字典类型数据通过映射查找数据项。
映射:通过任何键在集合中查找值的过程。
字典类型按键索引,一个键对应一个值。
字典类型数据顺序错误。

1.关于词典的运作情况:
1,初始化空词典:d = dict()
2,要添加一个值的字典:d[key] = value
3词典修改一个值:d[key] = new_value
4,字典删除一个值:del d[key]
5,访问词典中的项:d[key]
6,查看词典中的所有项目:d
7,查看某个项目是否在词典中:key in d  在词典中返回:true;不在词典中返回:false。
8,遍历词典。key:d.keys()
9,遍历词典。value:d.values()
10,遍历词典。所有项:d.items()

d = dict()
d
{}
print(d)
{}
d[egg] = 2.59
d
{egg: 2.59}
d[milk] = 3.51
d[cheese] = 4.9
d
{egg: 2.59, milk: 3.51, cheese: 4.9}
d[egg] = 10.99
d
{egg: 10.99, milk: 3.51, cheese: 4.9}
del d[cheese]
d
{egg: 10.99, milk: 3.51}
milk in d
True
yogurt in d
False
d.keys()
dict_keys([egg, milk])
d.values()
dict_values([10.99, 3.51])
d.items()
dict_items([(egg, 10.99), (milk, 3.51)])

2.使用字典类型来判断日期。

"""
    作者:langxingbudui
    版本:4.0
    日期:2019-06-17
    功能:输入某一年的某一天,判断这一天是一年中的哪一天?
    2.0添加函数:使用列表而不是元组
    3.0新增功能:分月后再进行运算
    4.0新增功能:月份及其对应的天数由字典表示。
"""

from datetime import datetime

def is_leap_year(year):
    """
        判断year今年是闰年吗?
        是,返回True
        否,返回False
    """
    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}

    # 初始化值
    days = 0
    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()

3.问题:字典中可以互换月和日吗?

day_month_dict = {30: {4, 6, 9, 11},
31: {1, 3, 5, 7, 8, 10, 12}}

这个想法是建立在收集的方法上的。如果你有更好的想法,请分享并虚心学习。

"""
    作者:langxingbudui
    版本:4.0
    日期:2019-07-05
    功能:输入某一年的某一天,判断这一天是一年中的哪一天?
    2.0添加函数:使用列表而不是元组
    3.0新增功能:分月后再进行运算
    4.0新增功能:月份及其对应的天数由字典表示。
    4.0思考问题:颠倒词典中月和日的顺序
"""

from datetime import datetime

def is_leap_year(year):
    """
        判断year今年是闰年吗?
        是,返回True
        否,返回False
    """
    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 = 0
    days += day

    for i in range(1, month):
        if i in day_month_dict[30]:
            days += 30
        elif i in day_month_dict[31]:
            days += 31
        else:
            days += 28
    if is_leap_year(year) and month > 2:
        days += 1

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

if __name__ == __main__:
    main()

下图是本例中使用的知识点的汇总:

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除