この最後の質問に問題があります。「コンピュータ科学者のように考える方法」という本からです。これで私を助けてくれませんか?
渡された整数の桁の二乗和を計算する関数 sum_of_squares_of_digits を書きます。たとえば、sum_of_squares_of_digits(987) は 194 を返す必要があります。これは、9* 2 + 8 *2 + 7**2 == 81 + 64 + 49 == 194 であるためです。
整数を文字列に変換してから、個々の文字を整数に戻します。
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
数値を文字列に変換することで、数値の桁を反復処理できます。
>>> n = 102
>>> for digit in str(n):
... print(digit)
...
1
0
2
digit
は文字列のままなので、 を使用int(digit)
して整数に変換できます。