-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 回答