# coding: latin-1 # question 1 def somme_partielle (li, i, j) : r = 0 for a in range (i,j) : r += li [a] return r # question 2 def plus_grande_sous_liste (li) : meilleur = min(li) # ligne A im,jm = -1,-1 for i in range (0,len(li)) : for j in range (i+1, len(li)+1) : # ne pas oublier +1 car sinon # le dernier élément n'est jamais pris en compte s = somme_partielle(li, i,j) if s > meilleur : meilleur = s im,jm = i,j return li [im:jm] # si li ne contient que des valeurs positives, la solution est évidemment la liste entière # c'est pourquoi il faut tester cette fonction avec des valeurs négatives li = [ 4,-6,7,-1,8,-50,3] m = plus_grande_sous_liste(li) print m # affiche [7, -1, 8] li = [1,2,3,4,5,-98,78,9,7,7] m = plus_grande_sous_liste(li) print m # affiche [79, 9, 7, 7] # autre version plus courte def plus_grande_sous_liste (li) : solution = [ (somme_partielle(li,i,j), i, j) \ for i in range (0,len(li)) \ for j in range (i+1, len(li)+1) ] m = max(solution) return li [m[1]:m[2]]