【发布时间】:2017-09-21 23:42:32
【问题描述】:
我是一个本地 C++ 程序员,刚开始学习 python,我得到了以下方法来编写:
返回数组中数字的总和,对于空数组返回 0。除了数字 13 很不吉利,所以它不算数,紧跟在 13 之后的数字也不算数。
我的解决办法是:
def sum13(nums):
elem_sum = 0
index = 0
while index < len(nums):
if nums[index] != 13:
elem_sum += nums[index]
else:
index += 1 #nums[i] is 13, so skip the next element'
index += 1
return elem_sum
熟悉其他基于 C 语言的人会发现这里的循环类似于(相当干净)
for(int i = 0; i < nums.size() /*nums.length*/; ++i) {
if(nums[i] != 13) elem_sum += nums[i];
else i++;
}
请注意,我几天前才开始学习 Python,所以我对这门语言还是很陌生。我希望有人可以就如何以“Python”方式编写此循环提供一些建议,或者使用我可能不知道的一些语言功能提供更清洁的解决方案。
在我之前的尝试中(没有成功)我有:
for i in range(len(nums)):
if nums[i] != 13:
elem_sum += nums[i]
else:
i += 1 #nums[i] is 13, so skip the next element'
【问题讨论】:
-
看看
for在python中可用的循环:docs.python.org/3/tutorial/controlflow.html -
这确实更适合Code Review。
-
@aryamccarthy 我什至不知道它的存在。我很抱歉。
-
不需要。祝你好运。
-
@StephenRauch 是的,此代码有效。发帖人正在寻找使其更加 Pythonic 的方法。
标签: python for-loop methods indexing while-loop