Exemple_P

Un exercice « Programmer »

Exercice (calculs dans une séquence)
Dans cet exercice, L désigne une liste de nombres entiers ou flottants (ou même complexes).

  1. Écrire somme(L et produit(L) renvoyant la somme (resp. le produit) des éléments de L.
    Si L est vide, on convient que la somme vaut 0 et que son produit vaut 1.
  2. Écrire cumuls(L) qui renvoie la liste des cumuls successifs des éléments de L.
    Par exemple cumuls([2,4,3,5]) doit renvoyer la liste [2,6,9,14]).

    Écrire decumuls(L) qui renvoie la list L’ dont L est la somme des cumuls.
    Par exemple decumuls([2,6,9,14]) doit renvoyer la liste 2,4,3,5].

  3. Réécrire les fonctions cumuls2 et decumuls2 pour qu’elles réalisent les calculs sur place (donc la liste placée en argument est modifiée) et qu’elles ne revoient rien (qu’elles renvoient None).
Cliquer ici pour voir/cacher le corrigé
  1. Voici la fonction somme et un exemple d’utilisation:

    def somme(L):
        s=0
        for x in L: s += x
        return s
    
    >>> somme([3,1,7,2,9,8,1,3])
    34
    

    Voici la fonction produit et un exemple d’utilisation:

    def produit(L):
        p=1
        for x in L: p *= x
        return p
    
    >>> produit([3,1,7,2,9,8,1,3])
    9072
    
  2. Voici la fonction cumuls et un exemple d’utilisation:

    def cumuls(L):
        c = 0; lc = []
        for x in L:
            c += x; lc.append(c)
        return lc
    
    >>> cumuls([3,2,6,4,1,7])
    [3,5,11,15,16,23]
    

    Voici la fonction decumuls et un exemple d’utilisation:

    def decumuls(L):
        c = 0; ld = []
        for x in L:
            ld.append(x-c); c = x
        return ld
    
    >>> decumuls(_)
    [3,2,6,4,1,7]
    
  3. Voici la fonction cumuls2, et un exemple d’utilisation :

    def cumuls2(l):
        for k in range(1,len(l)):
            l[k] += l[k-1]
    
    >>> L = [1,3,2,4,1,1,6,2]
    >>> cumuls2(L)
    >>> L
    [1,4,6,10,11,12,18,20]
    

    Voici la fonction decumuls2, et un exemple d’utilisation :

    def decumuls2(l):
        for k in range(len(l)-1,0,-1):
            l[k] -= l[k-1]
    
    >>> L = [1,4,6,10,11,12,18,20]
    >>> decumuls2(L)
    >>> L
    [1,3,2,4,1,1,6,2]