天天蓝海

  • 首页
  • Python学习
    • HackRank挑战
  • 纪念墙
天天蓝海
学习、记录
  1. 首页
  2. Python学习
  3. HackRank挑战
  4. 正文

【Python学习】-Hackrank挑战-入门-函数

2025年2月21日 222点热度 0人点赞 0条评论

题目:函数-Function


解题方案:

在公历中,闰年有三种判断条件:

  • 年份能被4整除,即为闰年,除非:
    • 年份可以被 100 整除,则不是闰年,除非:
      • 该年份也能被 400 整除。那么该年就是闰年。

这意味着在公历中,2000 年和 2400 年是闰年,而 1800、1900、2100、2200、2300 和 2500 年不是闰年

解题代码:

正常逻辑判断:

def is_leap(year):
   leap = False
   if year % 4 == 0:
       leap = True
       if year % 100 == 0:
           leap = False
           if year % 400 == 0:
               leap = True
   else:
       leap = False
   return leap
year = int(input())
print(is_leap(year))

优化代码:

  1. 布尔表达式直译规则 将闰年判断条件 (能被4整除且不能被100整除) 或 (能被400整除) 转换为表达式: year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
  2. 消除中间变量 直接返回布尔运算结果,省去 leap 变量的多次赋值。
  3. 逻辑显式化 通过括号明确运算优先级,避免多层嵌套 if,代码可读性显著提升。
  4. 验证用例覆盖
    • 2000年(被400整除)→ True
    • 1900年(被100整除但不被400整除)→ False
    • 2020年(被4整除但不被100整除)→ True
    • 2021年(不被4整除)→ False
    def is_leap(year):
       return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
    ​
    year = int(input())
    print(is_leap(year))
标签: HackRank Challenge
最后更新:2025年2月25日

timmyblue

我们没有说再见,只是很默契的没有打扰。

点赞
< 上一篇
下一篇 >

归档

  • 2025 年 3 月
  • 2025 年 2 月

分类

  • HackRank挑战
  • Python学习

Copyright © 天天蓝海 All Rights Reserved.

苏ICP备2025161349号