python-3.x - 有没有办法找到9结束后的数字总和?
问题描述
问题是:
返回数组中数字的总和,但忽略以 6 开头并延伸到下一个 9 的数字部分(每个 6 后面至少有一个 9)。
六十九([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
解决方案
您的代码包含各种错误,其中您在 for 循环中返回,这会阻止它遍历整个列表。
我建议分两步处理这个问题。首先编写一个过滤掉表单子列表的生成器[6, ..., 9]
。
然后使用sum
which 可以总结任何可迭代的,包括在内的生成器。
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
推荐阅读
- java - 构建ant项目时出现编译错误
- python - to_numeric(..., downcast='float') 过于激进
- javascript - TLS 到多个客户端和不同的消息
- javascript - 如何使用 Ajax 承诺执行功能?
- java - 如何将地图转换为大列表?
- php - PHP中的方法,属性和变量有什么区别
- firefox - Firefox 打印预览的键盘快捷键?
- spring-boot - 引入 Spring Batch 失败 Dao-Test
- python - 如何在保持 y 值范围的同时结合两个 Seaborn 线图?
- javascript - 将 javascript 用于条纹元素