Somme maximale de k termes consécutifs⚓︎
Écrire une fonction telle que somme_maxi(valeurs, k)
renvoie la somme maximale de k
termes consécutifs dans une liste de valeurs
.
On garantit que
valeurs
est de taille au moins égale àk
et quek > 0
.
Example
🐍 Console Python
>>> somme_maxi([0, 1, 2, 3, 2, 1, 0], 3)
7
>>> somme_maxi([0, 1, 2, 3, 2, 1, 0], 1)
3
###
# testsbksl-nlbksl-nlassert sommepy-undmaxi([0, 1, 2, 3, 2, 1, 0], 3) == 7bksl-nlassert sommepy-undmaxi([0, 1, 2, 3, 2, 1, 0], 1) == 3bksl-nlbksl-nlbksl-nl# autres testsbksl-nlbksl-nlvaleurs = [-42] py-str 1000bksl-nlassert sommepy-undmaxi(valeurs, 100) == -42 py-str 100, "Erreur avec tableau constant"bksl-nlbksl-nlassert sommepy-undmaxi(list(range(1000)), 100) == sum(range(900, 1000))bksl-nlassert sommepy-undmaxi(list(range(-1000, 0)), 100) == -sum(range(101))bksl-nlassert sommepy-undmaxi(list(range(1000, 0, -1)), 100) == sum(range(901, 1001))bksl-nlassert sommepy-undmaxi(list(range(0, -1000, -1)), 100) == -sum(range(100))bksl-nlbksl-nl ∞/∞ def sommepy-undmaxi(valeurs, k):bksl-nl ...bksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert sommepy-undmaxi([0, 1, 2, 3, 2, 1, 0], 3) == 7bksl-nlassert sommepy-undmaxi([0, 1, 2, 3, 2, 1, 0], 1) == 3bksl-nlbksl-nlNone
A
Z
Indice 1
On pourra commencer par faire le cumul des k
premières valeurs pour initialiser une variable maxi
.
On pourra ensuite faire une boucle qui ajoute la valeur suivante et retranche la première valeur.
Indice 2
On pourra s'aider du code à trou
🐍 Script Python
def somme_maxi(valeurs, k):
k_somme = ...
for i in range(k):
k_somme += ...
maxi = k_somme
for i in range(..., ...):
k_somme += valeurs[...] - valeurs[...]
if k_somme > maxi:
maxi = ...
return ...