我对这最后一个问题感到很麻烦。它出自“如何像计算机科学家一样思考”一书。你能帮助我吗?
编写一个函数sum_of_squares_of_digits,用于计算传递给它的整数数字的平方和。例如,sum_of_squares_of_digits(987)应返回194,因为9 * 2 + 8 * 2 + 7 ** 2 == 81 + 64 + 49 == 194。
答案 0 :(得分:5)
将整数转换为字符串,然后将单个字符转换回整数:
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
答案 1 :(得分:2)
您可以通过将数字转换为字符串来迭代数字的数字:
>>> n = 102
>>> for digit in str(n):
... print(digit)
...
1
0
2
digit
仍然是一个字符串,因此您可以使用int(digit)
将其转换为整数。