对数组中的元素求和,直到它能被 5 整除,然后在 python 中继续做同样的事情

Sum the elements in an array until its divisible by 5 and continue the same in python

提问人:mugesh 提问时间:8/23/2023 更新时间:8/23/2023 访问量:52

问:

请帮我获取python中的逻辑 输入为 sample= [1,2,3,4,5,6,7,8,9,10] 例外输出为 结果=[15,40] 解释 检查样本中的每个元素并逐个相加,直到该值可被 5 整除(所以 1+2+3+4+5=15) 检查和添加继续(所以 6+7+8+9+10=40),因此结果在列表结果 =[15,40]

我试过了 对于示例中的 i 如果(sample[i] % 5==0): 但在条件之后,它不会继续下去

python-3.x 列表 for-loop while 循环

评论

1赞 Reinderien 8/23/2023
1+2+3+4=10,也可以被 5 整除。为什么不就此止步呢?
0赞 Alain T. 8/23/2023
不清楚,但似乎“当 VALUE 能被 5 整除时”是指最后一个附加值(而不是总和本身)
0赞 Community 8/23/2023
请提供足够的代码,以便其他人可以更好地理解或重现问题。
0赞 mugesh 8/23/2023
@Reinderien值会不同,比如 (12,13,14,15,16,17) 所以。

答:

0赞 Mohamad Raad 8/23/2023 #1

这将有助于:

sample = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = []
current_sum = 0

for num in sample:
    current_sum += num
    if num % 5 == 0:
        result.append(current_sum)
        current_sum = 0

if current_sum != 0:
    result.append(current_sum)

print(result)

评论

0赞 Mark 8/23/2023
有了这样的列表,就会产生 .这似乎不对。sample = [1, 2, 3, 4, 5, 7, 8, 9, 10][15, 34]
0赞 Mohamad Raad 8/23/2023
不,这将产生[15,40]
0赞 Alain T. 8/23/2023 #2

一种方法是识别可被 5 整除的值的索引,并在它们之间的范围内使用 sum():

sample = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

idx    = [i for i,n in enumerate(sample,1) if n%5 == 0]
result = [sum(sample[s:e]) for s,e in zip([0]+idx,idx)]

print(result)
[15, 40]

评论

1赞 Alain T. 8/23/2023
未知,没有提供其他示例。它确实遵循我所理解的规则。
0赞 Mark 8/23/2023
很公平...重读这个问题,我明白你的意思了。