首页 > 解决方案 > 整数中的数字总和?

问题描述

我正在使用 Python 进行作业,但不理解我的代码存在的问题。

根据 Stack Overflow 上的其他答案,答案似乎是:

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))

标签: pythonloopssumintegerdigits

解决方案


return你在循环结束之前用 a 打破了 for 循环。您需要存储累计和,然后在循环结束后返回。

此外,您需要了解 Python 中的“单行循环”是什么。return让我们看看你的第一个代码块是什么意思:

(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 将字符串数组转换为整数数组(也在一行中)

string我们只需将数组中的单个元素类型转换为int

def get_digits_as_int(num):
    return [int(digit) for digit in str(num)]

如果你运行它,你会得到:

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

3 对数组求和int

这相当于您的第一个代码块

def digit_sum(num):
    return sum([int(digit) for digit in str(num)])

如果您想了解更多关于单行循环的信息,这里有一篇很有帮助的文章: https ://blog.teamtreehouse.com/python-single-line-loops

希望我的回答有帮助。


推荐阅读