整数的位数之和?

2021-05-16 08:23:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用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))
2条回答
网友
1楼 ·

在循环完成之前,您用return中断了for循环。您需要存储累计和,然后在循环完成后返回它。你知道吗

此外,您还需要了解什么是Python中的“单行for循环”。 让我们看看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)])

如果您想了解有关单行for循环的更多信息,请参阅以下文章: https://blog.teamtreehouse.com/python-single-line-loops

希望我的回答有帮助。你知道吗

网友
2楼 ·

你的代码不起作用,因为你返回得太早了。你知道吗

return关键字接受您给它的任何内容,并将其返回给函数的调用者。你知道吗

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

例如: 号码是1234

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

所以“1234”的第一个数字是“1”

然后取1的和(不管这意味着什么lol)

所以你会返回数字1

相关问题