我有一个 prime_factorize
函数,它返回一个从素数到它们的幂的字典映射。例如,50 = 2^1 * 5^2,所以 prime_factorize(50)
返回 {2 : 1, 5 : 2}
。
假设这是记录在案的行为,如果调用 0、1 或负数,那么发出错误信号的最不令人惊讶的方式是什么?抛出 ValueError
?返回看起来像正确输出的东西(例如,prime_factorize(-5) -> {-1: 1, 5: 1}
)?返回空字典?
如果您有更好的格式来返回质因数分解,我也很想听听。
最佳答案
在 prime_factorize(n)
中:
if n < 2 or not isinstance(n, numbers.Integral):
raise ValueError("Number to factor can't be less than 2")
else:
# normal behavior
这样用户 a.) 获得关于出错的有意义的信息 b.) 可以在 try...except
block 中处理异常。
我绝对不会转换不正确的数据或空的字典,因为这会在有人第一次传递不正确的值时导致一些棘手的调试。引发异常,这就是它们的用途!
关于python - prime_factorize(1) -> ? (Python 错误信号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4476880/