python-3.x - 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")
尽管实验室准备了测试代码,但我实际上不知道我的函数和函数体是否正确
解决方案
在函数中硬编码测试值是个坏主意。闰年应按以下方式计算:
闰年是可以被 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")
推荐阅读
- javascript - 自定义元素不设置/获取属性
- python - 从数据库中取值,为空 json {} 或 Null,男性单独案例
- regex - elixir - 替换 unicode 字符 - PCRE 不支持 \L、\l、\N{name}、\U 或 \u
- python - write() 参数必须是 str,而不是 list
- javascript - 如何将多个 setClassToggle(具有多个类)设置为同一个触发器 ScrollMagic
- node.js - Node.js 我无法解析 TXT 记录
- angular - 布尔字符串的离子/角度翻译
- maven - Maven - “覆盖”在外部设置中不起作用
- python - 在 python 中使用 ECM 记录链接
- sql - 如何在 SQL 中将一行与其他行进行比较