首先,我最近才开始在codeacademy.com上学习Python,这可能是一个非常基本的问题,所以感谢您的帮助,请原谅我缺乏知识。
下面的函数将正整数作为输入,并返回所有数字的总和。我不明白的是,为什么我必须首先将输入的类型更改为str,然后再更改为整数,以便将数字的数字相互添加。有人可以帮我解释一下吗?该代码适用于练习,但我觉得我在这里错过了大局。
def digit_sum(n):
num = 0
for i in str(n):
num += int(i)
return num
答案 0 :(得分:3)
整数不是数字序列。它们只是(整数)数字,所以它们不能被迭代。
通过将整数转换为字符串,您创建了一系列数字(字符),并且可以迭代字符串 。它不再是数字,现在是 text 。
将其视为一种表现形式;您也可以将相同的数字转换为十六进制文本,或八进制文本或二进制文本。它仍然是相同的数值,只是在文本中写得不同。
对字符串的迭代起作用,并为您提供单个字符,对于数字意味着每个字符也是一个数字。代码将该字符转换为带有int(i)
的数字。
您不必使用该技巧。你也可以使用数学:
def digit_sum(n):
total = 0
while n:
n, digit = divmod(n, 10)
num += digit
return num
这使用while
循环,并重复将输入数除以10(保留余数),直到达到0
。余数总和,给你数字总和。因此1234
变为123
和4
,然后变为12
和3
等。
答案 1 :(得分:0)
让我们说数字12345 所以我需要1,2,3,4,5来自给定的数字,然后总结。
那么如何获得个人数量。一个数学方法是@Martijn Pieters如何展示。
另一种方法是将其转换为字符串,并使其可迭代。
这是实现这一目标的众多方法之一。
>>> sum(map(int, list(str(12345))))
15
list()函数将字符串分成单个字母。所以我需要一个字符串。一旦我将所有数字作为单个字母,我就可以将它们转换为整数并将它们相加。