python - 如何使用列表切片来完成此操作?
问题描述
SUMMER OF '69:返回数组中数字的总和,除了忽略以 6 开头并延伸到下一个 9 的数字部分(每个 6 后面至少有一个 9)。如果没有数字,则返回 0。
summer_69([1, 3, 5]) --> 9
summer_69([4, 5, 6, 7, 8, 9]) --> 9
summer_69([2, 1, 6, 9, 11]) --> 14
这就是问题。我一直在尝试使用列表切片来解决这个问题,但一直无法解决。注意:9 只能在 6 之后,不能在 6 之前。
这就是我的逻辑 - 我找到了 6 的索引并将其分配给一个变量,我找到了 9 的变量并为其分配了一个变量。其他两个条件都满足了,但是无论我尝试什么,都不能满足 9 的条件。
这是我这边的一些代码。请原谅我糟糕的编程技巧。
def summer_69(arr):
if 6 not in arr:
return sum(arr)
elif 6 and 9 in arr:
i = arr.index(6)
y = arr.index(9)
sxy = sum(arr[i:y])
return sum(arr) - sxy
else:
i = arr.index(6)
return sum(arr[:i])
对于数组 [4, 5, 6, 7, 8, 9] 我得到输出 18。
解决方案
无需切片即可完成。
def summer_69(l):
sign, count = False, 0
for num in l:
if num == 6:
sign = True
if not sign:
count += num
if num == 9:
sign = False
return count
推荐阅读
- r - 使用表示由 for 循环生成的变量的字符串向量作为函数调用中的变量
- c# - 如何解析 tumblr 搜索结果页面?
- biztalk - 无法从管理控制台启动 Biztalk 服务器应用程序
- php - Laravel 5 我可以在两个关系都在单独的模型中时训练关系吗?
- go - 从多个 goroutine 添加到等待组是否安全?
- ubuntu - 如何在仿生中安装“libmozjs185-dev”?
- android - 如何将数据添加到firebase实时数据库中的现有数据库?
- excel - 使用循环复制和粘贴
- batch-file - MSBUILD 将多个文件从源路径复制到不同的目标路径
- kotlin - Single 抛出异常时使用 .await() 引发异常泛滥