Return 数组中元素的总和,同时忽略元素 6 和 9 之间的所有元素(也包括在内)
Return the sum of elements in an array while ignoring all elements that lie in between elements 6 and 9 (also included)
这就是整个问题:
Return 数组中数字的总和,除了忽略以 6 开头并延伸到下一个 9 的数字部分(每个 6 后面至少有一个 9)。 Return 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 之后的元素添加到新的数组 arr1 直到迭代器达到 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
代码:
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[x]
return sum
*注意:
您需要更好地命名您的变量。例如,在您的代码中:
for x, i in enumerate(arr):
应该是:
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)
这里主要是对数值求和。每当遇到 6
时,9 not in it
会消耗所有值,直到下一个 9
(它是错误的,所以 none 从那个 6
到那个9
算进总和)。
这就是整个问题:
Return 数组中数字的总和,除了忽略以 6 开头并延伸到下一个 9 的数字部分(每个 6 后面至少有一个 9)。 Return 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 之后的元素添加到新的数组 arr1 直到迭代器达到 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
代码:
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[x]
return sum
*注意:
您需要更好地命名您的变量。例如,在您的代码中:
for x, i in enumerate(arr):
应该是:
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)
这里主要是对数值求和。每当遇到 6
时,9 not in it
会消耗所有值,直到下一个 9
(它是错误的,所以 none 从那个 6
到那个9
算进总和)。