【问题标题】:What is the "test case failed" in python?python中的“测试用例失败”是什么?
【发布时间】:2020-08-31 03:32:19
【问题描述】:

很抱歉,我开始练习在 HackerRank 中解决 Python 编程问题,但我遇到了一个称为测试用例错误的问题。需要帮助来解决我当前的问题。

在 HackerRank 中的问题说明下方,

2 月 29 日几乎每四年在日历中增加一天,这一天称为闰日。它更正了我们的星球绕太阳运行大约需要 365.25 天这一事实。闰年包含闰日。

在公历中,用于识别闰年的三个条件:

年份可以被4整除,是闰年,除非: 年份可以除以 100,它不是闰年,除非: 年份也能被 400 整除。那么就是闰年。 这意味着在公历中,2000 年和 2400 年是闰年,而 1800、1900、2100、2200、2300 和 2500 年不是闰年。来源

任务 给定一年,确定它是否是闰年。如果是闰年,则返回布尔值 True,否则返回 False。

请注意,提供的代码存根从 STDIN 读取并将参数传递给 is_leap 函数。只需完成is_leap函数即可。

输入格式 阅读年份,测试年份。

约束 1900

输出格式 该函数必须返回一个布尔值(真/假)。输出由提供的代码存根处理。

示例输入 0

1990

样本输出 0

False

解释0 1990 年不是 4 的倍数,因此不是闰年。

下面是我提交的代码:

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

year = int(input())

注意:提交后会显示Test case Failed

【问题讨论】:

    标签: python function


    【解决方案1】:

    我认为您在理解这个问题时遇到了一些困难。一年为闰年的条件是:

    • 它应该能被 4 整除,但不能被 100 整除 或
    • 它应该能被 400 整除。

    这意味着:

    1. 400 -> 闰年。
    2. 100 -> 可以被 4 整除,但仍然不是闰年,因为它可以被 100 整除。
    3. 4 -> 闰年。

    所以基本上,我们必须检查一年是否能被 4 整除,但不能被 100 整除,或者它是否能被 400 整除。

    用于此的 Python 代码将是:

    def is_leap(year):
        if year%4==0 and year%100!=0:
            return True
        if year%400==0:
            return True
        return False            
    

    您不需要太多的 return 语句,因为如果第一个条件为真,它将永远不会转到下一个语句。如果代码在此函数中的任何位置返回 True,则它永远不会达到 False。控件转到return False 的唯一方法是,如果没有任何条件为真。

    【讨论】:

      【解决方案2】:

      条件中给出的闰年条件

      • 如果输入能被 4 整除而不是 100(均匀 整除)那么它就是闰年
      • 如果输入能被 100 和 400 整除,则为闰年

      代码

      def is_leap(year):
          
              if 1900 <= year <= 10**5:
                  if (year % 4 == 0 and year % 100 != 0) or (year % 100 == 0 and year % 400 == 0):
                      return True
                  return False
              return False
          
          year = int(input())
      

      这将满足所有测试用例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-21
        • 1970-01-01
        • 2011-09-29
        • 2020-02-20
        • 2013-08-30
        • 2018-04-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多