Python 整数中的数字之和?

Python 整数中的数字之和?,python,loops,sum,integer,digits,Python,Loops,Sum,Integer,Digits,我正在用Python做一个作业,不明白我的代码有什么问题 根据关于堆栈溢出的其他答案,答案似乎是: def digit_sum(number): return (sum(int(digit) for digit in str(number))) 我下面的代码不起作用。为什么不呢 def digit_sum(number): for digit in str(number): return sum(int(digit)) 您的代码不起作用,因为您返回得太早了

我正在用Python做一个作业,不明白我的代码有什么问题

根据关于堆栈溢出的其他答案,答案似乎是:

def digit_sum(number):

    return (sum(int(digit) for digit in str(number)))
我下面的代码不起作用。为什么不呢

def digit_sum(number):
    for digit in str(number): 
        return sum(int(digit))

您的代码不起作用,因为您返回得太早了

return关键字接受您给予它的任何内容,并将其返回给函数的调用方

在for循环的第一次迭代中,计算第一个数字的和,然后返回它

例如: 电话号码是1234

所以for循环在1234上迭代

所以1234的第一个数字是1

然后取1的和,不管是什么意思,哈哈


因此,您将返回数字1

在循环结束之前,您用一个返回值中断了for循环。您需要存储累计和,然后在循环完成后返回它

此外,您还需要了解Python中的“单行循环”是什么。 让我们看看在您的第一段代码中,返回意味着什么:

(sum(int(digit) for digit in str(number)))
我们可以将这一行转化为多个步骤:

1获取一个数字数组作为字符串 这一步可以这样做

def get_digits_as_string(num):
    return [digit for digit in str(num)]
运行上面的函数可以看到

>>> get_digits_as_string(12345)
['1', '2', '3', '4', '5']

2将字符串数组转换为一行中的整数数组 我们只需将数组中的单个字符串元素强制转换为int

如果您运行它,您将获得:

>>> get_digits_as_int(12345)
[1, 2, 3, 4, 5]
3求整数数组的和 这相当于您的第一个代码块

def digit_sum(num):
    return sum([int(digit) for digit in str(num)])
如果您想了解更多关于单线for循环的信息,下面是一篇文章:


希望我的回答能有所帮助。

当您给函数指定return关键字时,函数的标准行为是什么?第一个版本首先将所有单个数字转换为整数类型,然后求和。在第二个版本中,您在for循环中放入了return语句。因此,一旦您将第一个数字转换为整数,您的函数就会将控件返回到进行函数调用的位置。
def digit_sum(num):
    return sum([int(digit) for digit in str(num)])