我已经使用El Capitan OS成功地将python模块primefac安装到我的mac中的开发人员框架中。当我调用" import primefac"时,它会返回以下错误:
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/primefac.py", line 613
print "\033[1;31m" + (names[g] if g in names else g) + "\033[;m"
^
SyntaxError: invalid syntax
我非常怀疑我的primefac.py版本有语法错误,因为我用gitHub中的primefac.py替换了不同的文件。
我正在使用带有primefac-1.1的Python 3.5.2。可能是什么导致我的primefac.py以某种方式不可读?它可能在错误的目录中吗?
答案 0 :(得分:3)
primefac
库目前只与Python 2兼容 - 如果你想使用它,你需要使用Python 2.7 :(你正在使用Python 3,这意味着语法在图书馆工作不了。
答案 1 :(得分:0)
如果您查看pypi类别部分,您会看到此时此时primefac尚未移植到python3.x。作为替代方案,我建议您可以使用支持python3.x的primefac-fork
答案 2 :(得分:0)
我绝对可以肯定,我的功能没有针对python2的优化,但是我的功能适用于python3。
该函数没有检查器是输入是大于1的正整数还是其他值。您可以根据需要添加它们。实际上,我将以注释形式举一个例子。
它返回一个字典,其中dict.keys是素数因子,dict.values是相应素数因子的指数
def primeFactors(num):
# try:
# if num != int(abs(num)) or num == 1:
# return {"WrongInputError": num}
# except:
# return {"WrongInputError": num}
prime_factors = dict()
i = 2
while num > 1:
is_factor = False
while num % i == 0:
if not is_factor:
prime_factors[i] = 1
else:
prime_factors[i] += 1
is_factor = True
num //= i
i += 1
return prime_factors