首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何使用列表切片来实现这一点?

我如何使用列表切片来实现这一点?
EN

Stack Overflow用户
提问于 2019-09-19 10:20:15
回答 2查看 36关注 0票数 0

69年的夏季:返回数组中数字的总和,但忽略从6开始并扩展到下一个9的数字部分(每6后面将至少跟一个9)。返回0表示没有数字。

代码语言:javascript
复制
    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的条件无论我怎么尝试都不能得到满足。

这是我这边的一些代码。请原谅我糟糕的编程技术。

代码语言:javascript
复制
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。

EN

回答 2

Stack Overflow用户

发布于 2019-09-19 10:46:17

无需切片即可完成。

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2021-01-17 23:17:34

我的解决方案是:

代码语言:javascript
复制
def sum67(nums):
    add = True
    sum1 =0
    for i in range(len(nums)):
        if add:
            if nums[i] == 6:
                add = False
            else:
                sum1 += nums[i]
        else:
            if nums[i] == 7:
                add= True
    return sum1
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58002842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档