我在最后一个问题上遇到了麻烦。它来自《如何像计算机科学家一样思考》一书。你们能帮我解决这个问题吗?
编写一个函数 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)
它把它变成一个整数。