整数的位数之和?
Sum of Digits in an Integer?
我正在 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))
您的代码无效,因为您 return 太早了。
return 关键字接受您提供的任何内容,然后 return 将其发送给函数的调用者。
在 for 循环的第一次迭代中,您计算第一个数字的总和然后 returning 它。
例如:
号码是 1234
所以 for 循环遍历“1234”
所以“1234”的第一个数字是“1”
然后你取 1 的总和(不管是什么意思哈哈)
所以你会 return 数字 1
您在循环结束前使用 return
中断了 for 循环。您需要存储累计和,然后在循环完成后 return 它。
此外,您需要了解什么是 Python 中的 'Single line for loop'。
让我们看看 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)])
这里有一个 post 如果您想了解更多关于单行循环的信息,它会很有帮助:
https://blog.teamtreehouse.com/python-single-line-loops
希望我的回答对您有所帮助。
我正在 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))
您的代码无效,因为您 return 太早了。
return 关键字接受您提供的任何内容,然后 return 将其发送给函数的调用者。
在 for 循环的第一次迭代中,您计算第一个数字的总和然后 returning 它。
例如: 号码是 1234
所以 for 循环遍历“1234”
所以“1234”的第一个数字是“1”
然后你取 1 的总和(不管是什么意思哈哈)
所以你会 return 数字 1
您在循环结束前使用 return
中断了 for 循环。您需要存储累计和,然后在循环完成后 return 它。
此外,您需要了解什么是 Python 中的 'Single line for loop'。
让我们看看 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)])
这里有一个 post 如果您想了解更多关于单行循环的信息,它会很有帮助: https://blog.teamtreehouse.com/python-single-line-loops
希望我的回答对您有所帮助。