首页 > 解决方案 > Python PCAP 中的函数

问题描述

大家好,我有一个实验室,要求我编写和测试一个函数,该函数接受一个参数(一年),如果年份是闰年则返回 True,否则返回 false

def isYearLeap(year):
    if year % 2000 == 0 or year % 2016 ==    0:
        return True
    elif year % 1900 == 0 or year % 1987 == 0:
        return False

   print(isYearLeap(2000))


testData = [1900, 2000, 2016, 1987]
testResults = [False, True, True, False]
for i in range(len(testData)):
    yr = testData[i]
    print(yr, "->", end="")
    result = isYearLeap(yr)
    if result == testResults[i]:
        print("Ok")
     else:
        print("Failed")

尽管实验室准备了测试代码,但我实际上不知道我的函数和函数体是否正确

标签: python-3.x

解决方案


在函数中硬编码测试值是个坏主意。闰年应按以下方式计算:

闰年是可以被 4 整除的任何年份(例如 2016、2020、2024 等)

除非它可以精确地除以 100,否则它不是(例如 2100、2200 等)

除非能被400整除,否则就是(如2000、2400)

所以最终代码将如下所示:(我添加了更多测试用例)

def isYearLeap(year):
    return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)


testData = [1900, 2000, 2016, 1987, 2100, 2400, 2019]
testResults = [False, True, True, False, False, True, False]
for i in range(len(testData)):
    yr = testData[i]
    print(yr, "->", end=" ")
    result = isYearLeap(yr)
    if result == testResults[i]:
        print("Ok")
    else:
        print("Failed")

推荐阅读