问题是:
返回数组中数字的总和,但忽略以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
答案 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