整数位数?

时间:2019-01-27 18:03:20

标签: python loops sum integer digits

我正在使用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))

2 个答案:

答案 0 :(得分:0)

您的代码无效,因为您返回得太早了。

return关键字接受您提供的所有内容,并将其返回给函数的调用者。

在for循环的第一次迭代中,您要计算第一个数字的总和,然后将其返回。

EG: 数字是1234

所以for循环正在“ 1234”上迭代

所以“ 1234”的第一位是“ 1”

然后,您取1的总和(大声笑)

所以您将返回数字1

答案 1 :(得分:0)

在循环结束之前,您用return中断了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)])

如果您想了解更多有关Single Line for Loops的信息,请点击这里。 https://blog.teamtreehouse.com/python-single-line-loops

希望我的回答有帮助。