有没有一种方法可以找到9结束后的数字总和?

时间:2019-05-02 21:01:50

标签: python-3.x

问题是:

返回数组中数字的总和,但忽略以6开头并扩展到下一个9的数字部分(每6个字符后至少跟9个数字)。

  

sixty_nine([4,5,6,7,8,9])-> 9

     

sixty_nine([4,5,7,8,6,7,8,9,34])->它应该返回-58                                             但它返回-24(忽略34)

我无法理解9以后的数字之和

arr  = [4, 5,7,8, 6, 7, 8, 9,34]
def sixty_nine(arr):
    sums = 0
    l = len(arr)
    for i in range(l):
         if arr[i] == 6 and 9 in arr[i:]:              
            for j in arr[0:i]:
                sums = sums + j
            return sums


sixty_nine(arr)
  

t =该程序的输出为--- 24

1 个答案:

答案 0 :(得分:1)

您的代码包含各种错误,其中包括您要在for循环内返回的错误,这会阻止其遍历整个列表。

我建议分两个步骤处理此问题。首先编写一个生成器,以过滤出[6, ..., 9]形式的子列表。

然后使用sum来求和所有可迭代的生成器。

def ignore_between(lst, a, b):
    i = 0
    while i < len(lst):
        if lst[i] == a:
            try:
                i = lst.index(b, i) + 1
                continue
            except ValueError:
                pass
        yield lst[i]
        i += 1

lst = [4, 5, 7, 8, 6, 7, 8, 9, 34]
output = sum(ignore_between(lst, 6, 9))
print(output) # 58