为什么我用这个(python)代码得到“int不可调用”类型错误?

问题描述:

我在做项目欧拉的问题30,这是找到所有数字的总和,可以写成他们的数字的五次幂的总和。 (http://projecteuler.net/problem=30了解更多信息)为什么我用这个(python)代码得到“int不可调用”类型错误?

出于某种原因,我得到一个“int是不可调用的”类型错误,当我尝试运行我尝试的解决方案:

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

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

+6

不要将其命名变量'sum',它可以混合起来使用功能'和()' – TerryA 2013-02-22 21:17:32

+0

@Haidro这正是发生的事情。 – BlackVegetable 2013-02-22 21:17:55

+0

哦,当然!我现在感觉很傻。谢谢您的帮助。 – Foxin 2013-02-22 21:26:47

您将变量命名为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 

我已经简化你的表情也一点点;大部分括号和清单都是过剩的。

+0

非常感谢。我无法相信我没有注意到这一点。 – Foxin 2013-02-22 21:25:39

+0

@Foxin:容易犯的错误。你很快就会认识到异常,通常是相同类型的错误。 :-) – 2013-02-22 21:26:42

这是完全一样调用变量justData,然后尝试以下操作:

justData = 0 
justData(parameterA, parameterB) 
# Oops, tried to call a variable as though it wasn't data.