【发布时间】:2017-08-19 00:01:18
【问题描述】:
我正在 CodeWars 中处理这个 Kata,我通过了除一项测试外的所有测试,但它没有说明错误是什么。描述说要检查两个列表的多重性。列表 a2 是列表 a1 的正方形列表。我需要在 a1 中检查 a2 中所有项目的平方根,如果数组为空、None 或平方根不在 a1 中,则返回 false。
我希望得到您可能有的任何提示,这些提示不仅涉及功能(使其更加 Pythonic),还涉及错误处理。我错过了什么?为什么不通过?提前致谢。
def comp(a1, a2):
if a1 == [] or a2 == []:
return False
if a1 == None or a2 == None:
return False
pos_count = 0
neg_count = 0
for num in set(a2):
if num**0.5 in set(a1):
pos_count += 1
else:
neg_count += 1
if neg_count > 0:
return False
else:
return True
【问题讨论】:
-
对于a1中的每个数字;如果 number 乘以 number 不在 a2 中;返回假。如果 a1 数字用尽,则返回 True。
-
在 shell 中,尝试
2 * 2。结果是 4,一个整数。现在试试4 ** .5。结果是 2.0 个浮点数。当你在a2中取一个数字的平方根时,结果可能是一个带有一些floating point errors 的浮点数。当您尝试将其与a1中的整数进行比较时,比较可能会失败。无论如何,这只是对正在发生的事情的猜测。 -
好吧,我的浮点误差理论可能不正确,我只是检查了
a1中 0 到 100000 的整数及其在a2中的平方 - 您的函数适用于所有这些。 -
如果您需要测试两个列表的多重性,那么如果您在
a1中有2,但在a2中没有4,这个函数不仍然是return True?a2中的 2x4和a1中只有一个2呢? -
如果
num是负数怎么办?num ** 0.5带给你什么?
标签: python error-handling