Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.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的数字部分除外。返回0表示没有数字_Python - Fatal编程技术网

Python 返回数组中数字的总和,但忽略从6开始并延伸到下一个9的数字部分除外。返回0表示没有数字

Python 返回数组中数字的总和,但忽略从6开始并延伸到下一个9的数字部分除外。返回0表示没有数字,python,Python,当我打印出来的时候,出于某种原因,它打印出4而不是9?我是一个初学者,如果我的代码很慢,我很抱歉。基本上,问题是要求我们给他们总数,但忽略数字6到9。有人能告诉我我做错了什么吗?有没有更简单的方法呢?你没有跳过从6开始到9结束的数字部分,你只是跳过了6到9之间的任何数字 您可以使用一个标志变量来指示您何时在本节中 你也没有把所有的数字相加。当你找到一个不在范围内的数字时,你就会返回,然后把这个数字和下一个数字相加 def summer_69(arr): for i in range(0,

当我打印出来的时候,出于某种原因,它打印出4而不是9?我是一个初学者,如果我的代码很慢,我很抱歉。基本上,问题是要求我们给他们总数,但忽略数字6到9。有人能告诉我我做错了什么吗?有没有更简单的方法呢?

你没有跳过从6开始到9结束的数字部分,你只是跳过了6到9之间的任何数字

您可以使用一个标志变量来指示您何时在本节中

你也没有把所有的数字相加。当你找到一个不在范围内的数字时,你就会返回,然后把这个数字和下一个数字相加

def summer_69(arr):
    for i in range(0,len(arr)-1):
        if arr[i] == range (6,10):
            del arr[i]
        elif arr[i] != range(6,10):
            return arr[i] + arr[i + 1]

print(summer_69([1,3,5]))

您可以使用函数式编程。数组对象有map和reduce方法

a、 filtere=>e<6 | | e>9这将过滤不在范围6、9内的数字,并返回不在范围6、9内的数字数组 .reduceprev,e=>prev+e这将迭代地将每个数字相加并返回单个值。
使用一组用于查找的清洁剂解决方案:

var a = [1, 3,5];
var r = a.filter((e)=>e < 6 ||e > 9).reduce((prev, e) => prev + e);
console.log(r);

如果arr[i]在6,10范围内:不要使用;else:用于range0中的i,lenarr-否则将跳过数组中的最后一个元素。rangea,b是从[a,b]到[a,b]@selbie的所有内容,我认为这是故意的,因为它后来使用了arr[I+1],当你到达最后一个I时,这将超出范围。你不应该修改你正在迭代的列表。当你删除一个元素时,下面所有元素的索引都会下移,你会跳过其中的一些。
var a = [1, 3,5];
var r = a.filter((e)=>e < 6 ||e > 9).reduce((prev, e) => prev + e);
console.log(r);
def s69(arr):
if len(arr) == 0:
    return 0
out = 0
d = {6,7,8,9}
for a in arr:
    if a not in d:
        out+=a
return out