首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印数字列表的和。如果列表为空,则还打印了元素7,并且它旁边的元素不会对和作出贡献。

打印数字列表的和。如果列表为空,则还打印了元素7,并且它旁边的元素不会对和作出贡献。
EN

Stack Overflow用户
提问于 2022-06-19 11:59:30
回答 2查看 162关注 0票数 0

我试着用这种方法解决问题,但没有奏效。这是极客健忘的问题

代码语言:javascript
复制
arr = [1,  3, 4, 4, 7, 7]
def check(arr):
    sums = sum(arr)
    if arr == []:
       sums = 0
    else:
       for i in range(len(arr)-1):
            if arr[i] == 7:
               sums = sums-arr[i]-arr[i+1]
   
            else:
               sums = sums
    return sums
EN

回答 2

Stack Overflow用户

发布于 2022-06-19 12:44:31

这个问题在定义“在它旁边”是什么时有点模糊,我认为它是后续的元素。

因此,我提出了一个约束的解决方案,即在序列的求和中忽略文字77后面的数字。

代码语言:javascript
复制
def check(seq):
    return sum(n for i, n in enumerate(seq) if n != 7 and seq[i - (i != 0)] != 7)

我在解决方案上所做的与需求相匹配的检查:

代码语言:javascript
复制
assert check([]) == 0, "Empty case"
assert check([1, 7, 8, 1]) == 2, "Exclude 7 and the number next to (8 is ignored) it"
assert check([1, 2, 3, 4, 5, 6, 7]) == 21, "Exclude 7"
assert check([7, 10]) == 0, "7 and 10 are ignored"

如果您有一个指向原始代码挑战的链接,那么在这里发布它将是有帮助的。

票数 0
EN

Stack Overflow用户

发布于 2022-10-13 17:56:10

代码语言:javascript
复制
def realSum(mylist):
    l1=0
    v=[]
    if len(mylist)>0:
        for i in range(len(mylist)):
            if mylist[i]==7:
               if i not in v or v==[]:
                  if i!=len(mylist)-1:
                    v.append(i)
                    v.append(i+1)
                  else:
                    v.append(i)
       for i in range(len(mylist)):
          if i not in v:
             l1+=mylist[i]
       return l1
   else:
       return 0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72676704

复制
相关文章

相似问题

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