-2

この最後の質問に問題があります。「コンピュータ科学者のように考える方法」という本からです。これで私を助けてくれませんか?

渡された整数の桁の二乗和を計算する関数 sum_of_squares_of_digits を書きます。たとえば、sum_of_squares_of_digits(987) は 194 を返す必要があります。これは、9* 2 + 8 *2 + 7**2 == 81 + 64 + 49 == 194 であるためです。

4

2 に答える 2

4

整数を文字列に変換してから、個々の文字を整数に戻します。

def sum_of_squares_of_digits(value):
    return sum(int(c) ** 2 for c in str(value))

これはsum()ジェネレーター式と一緒に使用して、すべての数字を整数に戻し、それらを二乗し、結果を再度合計します。

デモ:

>>> def sum_of_squares_of_digits(value):
...     return sum(int(c) ** 2 for c in str(value))
... 
>>> sum_of_squares_of_digits(987)
194
于 2013-05-03T21:33:35.020 に答える
2

数値を文字列に変換することで、数値の桁を反復処理できます。

>>> n = 102
>>> for digit in str(n):
...     print(digit)
... 
1
0
2

digitは文字列のままなので、 を使用int(digit)して整数に変換できます。

于 2013-05-03T21:33:25.310 に答える