python - 整数中的数字总和?
问题描述
我正在使用 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
你在循环结束之前用 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
希望我的回答有帮助。
推荐阅读
- excel - 如何确定连续值组?
- machine-learning - 当我拟合模型时,它在创建模型后不显示超参数
- java - 即使条件为假,if 语句也会执行
- python - Python:将文本文件解析为格式化的 json 文件
- ruby-on-rails - 服务调用未更新 Active Record 值以增加连接模型
- macos - 如何摆脱 AppleScript 中字符串的特定部分?
- oauth-2.0 - 基于 OAuth2 的 SSO
- python - 将 npArrays 转换为整数
- python - 为什么我不能访问另一台计算机上的简单 Python 服务器?
- python - p.stdout.readline() 在 True 时中断: