• Python每日一练——第5天:闰年问题升级版


    前言📢📢

    Python每日一练来啦,本文已收录于:《Python每日一练》专栏

    此专栏目的在于,帮忙学习Python的小白提高编程能力,训练逻辑思维,每周持续更新中,欢迎免费订阅!!!

    在这里插入图片描述



    1. 问题描述

    输入年月日,输出该日期是否是闰年,并且输出该日期是此年份的第几天

    闰年判断条件(两个条件满足任意一个就为闰年):

    • 一、能被4整除,并且不能被100整除
    • 二、能被400整除


      小伙伴们看了问题描述后,一定要自己先练习,再去看博主的代码和解题思路,才能提高自己的编程水平,全靠自觉哟!!!

      欢迎小伙伴们把自己的思路或答案在评论区留言,博主会选一个最优解答进行置顶。
      在这里插入图片描述

    2. 算法思路

    1.接收用户输入的年月日,创建保存12个月份天数的列表


    2.根据年份判断是否是闰年,如果是把二月份设为29天,否则把二月份设为28天


    3.根据月份和日期统计是当年的第几天

    3. 代码实现

    实现代码📝:

    """python每日一练:闰年问题升级版
    1.接收用户输入的年月日,创建保存12个月份天数的列表
    
    2.根据年份判断是否是闰年,如果是把二月份设为29天,否则把二月份设为283.根据月份和日期统计是当年的第几天
    """
    
    # 1. 接收用户输入的年月日,创建保存12个月份天数的列表
    year = int(input("请输入年份:"))
    month = int(input("请输入月份:"))
    day = int(input("请输入日期:"))
    # 12个月天数列表
    date_list = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    count_day = day  # 用来统计第几天
    
    # 2. 根据年份判断是否是闰年,如果是把二月份设为29天,否则把二月份设为28天
    if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
        print("%s 年是闰年" % year)
        date_list = 29
    else:
        print("%s 年是平年" % year)
        date_list[1] = 28
    
    # 3. 根据月份和日期统计是当年的第几天
    for i in range(month - 1):
        count_day += date_list[i]
    # 格式化输出
    print("%s年:%s月:%s日是当年的第%s天" % (year, month, day, count_day))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    运行结果👇:

    在这里插入图片描述

    在这里插入图片描述

    4. 算法升级

    使用time模块的strftime函数判断第几天

    实现代码📝:

    import time
    
    try:
        # 键盘输入日期格式
        a = input('请输入日期(格式:xxxx-xx-xx):')
        # 时间字符串转化为元组
        b = time.strptime(a, '%Y-%m-%d')
    except ValueError:
        print('请输入正确的日期格式!')
    else:
        b = time.strptime(a, '%Y-%m-%d')  # 时间元组格式化输出
        # print(b)
        # time.struct_time(tm_year=2020, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=1, tm_isdst=-1)
        year = b.tm_year
        month = b.tm_mon
        day = b.tm_mday
        count_day = b.tm_yday  # 一年内的一天(001-366)
    
        if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
            print("%s 年是闰年" % year)
        else:
            print("%s 年是平年" % year)
    
        print("%s年:%s月:%s日是当年的第%s天" % (year, month, day, count_day))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    运行结果👇:
    在这里插入图片描述

    5. 如何让刷题变得更加高效呢?

    1. 编程小白选手

    很多刚入门编程的小白学习了基础语法,却不知道语法的用途,不知道如何加深映像,不知道如何提升自己,这个时候每天刷自主刷一道题就非常重要(百炼成神),可以去牛客网上的编程初学者入门训练。该专题为编程入门级别,适合刚学完语法的小白练习,题目涉及编程基础语法,基本结构等,每道题带有练习模式和考试模式,可还原考试模式进行模拟,也可通过练习模式进行练习。

    链接地址牛客网 | 编程初学者入门训练
    在这里插入图片描述
    2. 编程进阶选手

    当基础练习完已经逐步掌握了各知识要点后,这个时候去专项练习中学习数据结构、算法基础、计算机基础等。先从简单的入手,感觉上来了再做中等难度,以及较难的题目。这三样是面试中必考的知识点,我们只有坚持每日自己去多加练习,拒绝平躺持续刷题,不断提升自己才能冲击令人满意的公司。

    链接地址牛客网 | 专项练习
    在这里插入图片描述
    速度上号,大家一起冲击大厂,有疑问评论区留言解答!!!

  • 相关阅读:
    CCF CSP认证 历年题目自练Day34
    C++——隐式类型转换
    Android NDK开发(一)生成指定平台的ndk及根据native接口生成jni接口
    双向电平电压转换器TXS0102DCTR应用电路设计
    lower_bound()与upper_bound()
    sql 7
    [论文笔记] SecPod:一个基于虚拟化安全系统的框架
    用 Python 开发的 PDF 抽取Excel表格 2.0版
    一个固定 WSL2 ip 的简单方法
    信奥中的数学:同余
  • 原文地址:https://blog.csdn.net/yuan2019035055/article/details/124934959