2

私はプロジェクト オイラーの問題 30 を実行しています。これは、数字の 5 乗の合計として記述できるすべての数字の合計を見つけることです。(詳細はhttp://projecteuler.net/problem=30をご覧ください。)

何らかの理由で、試みたソリューションを実行しようとすると、「int is not callable」TypeError が発生します。

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 に答える