有人可以解释一下我为什么要首先将数字转换为字符串,然后将其转换为整数。以下是代码:
print sum(int(number) for number in str(__import__('math').factorial(520)))
答案 0 :(得分:3)
因为代码总结了阶乘结果的数字。为了访问每个数字,它将数字转换为字符串并循环数字字符,然后将它们转换为int
。
>>> __import__('math').factorial(10)
3628800
>>> sum(int(number) for number in str(__import__('math').factorial(10)))
27 # == 3 + 6 + 2 + 8 + 8
还有另一种方法可以访问数字的数字,然后除以10并保存余数。在这种情况下,您不必将数字转换为字符串,然后将数字字符串转换为int。
def sum_digits(number):
reminder = 0
while number:
reminder += number%10
number = number/10
return reminder
num = __import__('math').factorial(10)
print(sum_digits(num))
27
答案 1 :(得分:2)
因为您正在迭代字符串中的每个字符。如果您从生成器中展开它,那么很容易理解
sum_ = 0
for number in str(math.factorial(520)):
sum_ += int(number)