【发布时间】:2016-07-27 09:34:18
【问题描述】:
我在其他地方遇到过这个代码段。它只是将给定数字中的所有数字相加:
def sumDigits(n):
sum = 0
while n > 0:
sum += n % 10
n //= 10
return sum
问题是,我根本不明白它背后的逻辑。特别是,我不完全了解循环的作用:
while n > 0:
sum += n % 10 # Why n % 10?
n //= 10 # Again, not sure why we divide the number by 10
谁能给我一个算法如何工作的例子?
谢谢!
【问题讨论】:
-
您知道
%运算符的作用吗?您是否考虑过查看n % 10是什么以及n在每次迭代中的变化? -
是的,我知道模数运算符。我只是不确定它在这种情况下的用途。我试过在纸上追踪它,但仍然无法弄清楚。
-
print(n, sum)在循环中? -
sum([int(i) for i in str(n)])。而不是算法。你也可以试试这个。我知道这不在谈话范围内。我刚刚提到了另一种选择。
标签: python algorithm sum-of-digits