2024-04-24 04:58:42 发布
网友
我正在用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的和(不管这意味着什么lol)
所以你会返回数字1
在循环完成之前,您用return中断了for循环。您需要存储累计和,然后在循环完成后返回它。你知道吗
return
此外,您还需要了解什么是Python中的“单行for循环”。 让我们看看return在您的第一段代码中是什么意思:
(sum(int(digit) for digit in str(number)))
我们可以将这一行转化为多个步骤:
这一步可以这样做
def get_digits_as_string(num): return [digit for digit in str(num)]
运行上面的函数可以看到
>>> get_digits_as_string(12345) ['1', '2', '3', '4', '5']
我们只是将数组中的单个string元素强制转换为int
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]
这相当于您的第一个代码块
def digit_sum(num): return sum([int(digit) for digit in str(num)])
如果您想了解有关单行for循环的更多信息,请参阅以下文章: https://blog.teamtreehouse.com/python-single-line-loops
希望我的回答有帮助。你知道吗
你的代码不起作用,因为你返回得太早了。你知道吗
return关键字接受您给它的任何内容,并将其返回给函数的调用者。你知道吗
在for循环的第一次迭代中,计算第一个数字的和,然后返回它。你知道吗
例如: 号码是1234
所以for循环在“1234”上迭代
所以“1234”的第一个数字是“1”
然后取1的和(不管这意味着什么lol)
所以你会返回数字1
在循环完成之前,您用
return
中断了for循环。您需要存储累计和,然后在循环完成后返回它。你知道吗此外,您还需要了解什么是Python中的“单行for循环”。 让我们看看
return
在您的第一段代码中是什么意思:我们可以将这一行转化为多个步骤:
1获取字符串形式的数字数组
这一步可以这样做
运行上面的函数可以看到
2将字符串数组转换为整数数组(也在一行中)
我们只是将数组中的单个
string
元素强制转换为int
如果您运行它,您将得到:
3对
数组求和int
这相当于您的第一个代码块
如果您想了解有关单行for循环的更多信息,请参阅以下文章: https://blog.teamtreehouse.com/python-single-line-loops
希望我的回答有帮助。你知道吗
相关问题 更多 >
编程相关推荐