素数分解(1)>?(Pythonic错误信号)

2024-09-28 17:30:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个prime_factorize函数,它返回一个从素因子到其幂的字典映射。例如,50=2^1*5^2,所以prime_factorize(50)返回{2 : 1, 5 : 2}。你知道吗

假设这是记录在案的行为,那么如果称为0、1或负数,用什么方式来表示错误最不令人惊讶呢?抛出ValueError?返回看起来正确的输出(例如prime_factorize(-5) -> {-1: 1, 5: 1})?返回空的dict?你知道吗

如果你有更好的格式来返回一个素因子分解,我也很乐意听到


Tags: 函数字典格式错误方式primedict因子
3条回答

与python无关,更多的是关于素因子分解的概念;因子分解应该为所有x<;2或非整数引发一个异常。你知道吗

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块中的异常。你知道吗

我绝对不会转换不正确的数据或空的dict,因为当有人第一次传递不正确的值时,这会导致一些棘手的调试。提出例外,这就是他们的目的!你知道吗

不知道你为什么在这里用字典。两个元组的列表不是也可以吗?即haveprime_factor(50)return[(2,1), ((5,2)]。你知道吗

使用字典的前提是你知道键并想查找它的值,而对于一个任意数的素数因子似乎不是这样。你知道吗

相关问题 更多 >