请教@Robin_TY老师,请问python使用字典编程判断第几天时,用天数作键的字典的函数式怎么写?谢谢

Robin_TY - PhD@CSU,研究方向:计算机视觉,模式识别

赞同来自: 东南偏南

这个是可以作业,最好能自己独立完成。以下实现方式可以作为参考
"""
    作者: Robin_TY
    功能: 判断某日期是第几天
    日期: 19/01/2018
"""
import datetime


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

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

    day_month_dict = {28: [2],                      # 28天的月份
                      30: [4, 6, 9, 11],            # 30天的月份
                      31: [1, 3, 5, 7, 8, 10, 12]}  # 31天的月份
    days = 0
    for i in range(1, month):
        for day_key, month_list in day_month_dict.items():
            if i in month_list:
                # 如果当前月在列表中
                days += day_key

    days += day
    is_leap_year = False
    if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
        is_leap_year = True

    if is_leap_year and month > 2:
        days += 1
    print('这是第{}天。'.format(days))


if __name__ == '__main__':
    main()

东南偏南

赞同来自:

谢谢老师! 修正了错误。也出现了新的问题: 字典里我用的{},老师的案例里用的是[], 我试了下都是可以的。但两者的差别是什么?我上网查了一下,没有看明白。能麻烦老师再讲下吗?谢谢!

Robin_TY - PhD@CSU,研究方向:计算机视觉,模式识别

赞同来自:

dict的结构是key-value,value可以是一个值,也可以是一个列表,也可以是集合。 如果值是列表,就用[]表示;如果是集合,就用{}表示。所以要根据实际场景选择使用列表还是集合。 在这个案例里,没有什么区别,因为月份不会重复,使用列表和集合不会对结果有任何影响。    

要回复问题请先登录注册