2

我正在做 Project Euler 的第 30 题,即找到所有可以写为数字的五次方之和的数字的总和。(http://projecteuler.net/problem=30了解更多信息。)

出于某种原因,当我尝试运行我尝试的解决方案时,我得到一个“int is not callable”类型错误:

def problem30():
    sum = 0
    for n in xrange(20000):
        if sum([((int(x))**5) for x in list(str(n))]) == n:
            sum += n
    sum

为什么我会收到这样的错误,我该如何解决?提前致谢。

4

2 回答 2

8

您将变量命名为sum,并尝试同时将其用作内置函数。

重命名作为sum总和的标识符:

def problem30():
    total = 0
    for n in xrange(20000):
        if sum(int(x) ** 5 for x in str(n)) == n:
            total += n
    return total

我也简化了你的表达方式;大多数括号和清单都是多余的。

于 2013-02-22T21:18:37.603 回答
0

这就像调用一个变量 justData 然后尝试以下操作:

justData = 0
justData(parameterA, parameterB)
# Oops, tried to call a variable as though it wasn't data.
于 2013-02-22T21:19:16.603 回答