Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 返回数组中元素的总和,同时忽略位于元素6和9(也包括)之间的所有元素_Python_For Loop_Enumerate - Fatal编程技术网

Python 返回数组中元素的总和,同时忽略位于元素6和9(也包括)之间的所有元素

Python 返回数组中元素的总和,同时忽略位于元素6和9(也包括)之间的所有元素,python,for-loop,enumerate,Python,For Loop,Enumerate,这就是全部问题: 返回数组中数字的总和,但忽略从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 我尝试使用我自己的方法,尽管还有其他可用的解决方案,但我想知道为什么我的解决方案会出现错误。 我尝试初始化一个名为arr1的单独列表,并

这就是全部问题:

返回数组中数字的总和,但忽略从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
我尝试使用我自己的方法,尽管还有其他可用的解决方案,但我想知道为什么我的解决方案会出现错误。 我尝试初始化一个名为arr1的单独列表,并打算遍历给定数组,直到它到达前6个。然后我想继续将6之后的元素添加到新数组中,直到迭代器达到9。至于其余的数字,我在代码的else块中求和

以下是我的解决方案:

def summer_69(arr):
    sum = 0
    arr1 =[]
    for x,i in enumerate(arr):
        if i == 6:
            while arr[x]!=9:
                arr1 = i
                x+=1
        else:
            sum += arr[i]
    return sum
我得到以下错误:

IndexError: list index out of range

有人能指出为什么它会给我这个错误吗?

你的错误在这行:

    sum += arr[i]
您正在传递应该是索引的值。把i改成x

代码:

*注:

您需要更好地命名变量。例如,在您的代码中:

for x, i in enumerate(arr):
应该是:

for index, value in enumerate(arr):
因此,您可以更好地阅读或调试错误。

迭代器解决方案(我喜欢这些):


这主要是对这些值进行求和。每当遇到
6
时,不在其中的
9
将消耗所有值,直到下一个
9
(这是错误的,因此从
6
9
的所有值都不会计入总和)。

感谢您指出这一点。我更改了值,但是对于问题中提到的第二个和第三个数组示例,我没有得到正确的答案。答案分别是33和23。无法理解。如果i<6或i>9:sum+=arr[x]没问题,伙计,请用sum+=arr[x]代替sum+=arr[i],使用sum+=arr[x]将不会使索引器:列表索引超出范围,但结果sum与此逻辑错误请共享整个错误消息,这是我见过的最短的解决方案。谢谢。@versacecrispies顺便说一句,这个问题在什么地方出现了吗?我总是喜欢在问题出现的地方提交解决方案,以获得额外的验证。例如,所示的所有三个示例也可以用
sum(arr中的x表示x,如果不在6@HeapOverflow中,请您解释一下“如果x!=6或9不在其中”是如何工作的?@pk786如果x不是6,它就包含在sum中。如果它是6,那么
9不在其中
会消耗所有东西,直到下一个9(这是假的,所以没有一个算入总数)。@pk786好吧,为了确定里面是否有9,它需要检查它,直到找到一个为止(或者直到最后,但问题保证有一个)。
for index, value in enumerate(arr):
def summer_69(arr):
    it = iter(arr)
    return sum(x for x in it if x != 6 or 9 not in it)