Aller au contenu

Leçon 8

Python : termes, sommes et factorielle

Vidéo 8 : Python : termes, sommes et factorielle · 3 min 55 s · sous-titres en français

Le cours écrit

Les listes, les boucles et les fonctions ont été revues au chapitre 2. Ici, on les met au service des suites.

8.1 Calculer un terme

Pour une suite arithmétique, on part de u0u_0 et on ajoute nn fois la raison. En langage naturel, on écrit u←u+ru \leftarrow u + r.

def terme_arith(u0, r, n):
    u = u0
    for k in range(n):
        u = u + r
    return u
>>> terme_arith(7, 3, 10)
37

On vérifie avec la formule : u10=7+10×3=37u_{10} = 7 + 10 \times 3 = 37.

Pour une suite géométrique, une seule ligne change : on multiplie au lieu d'ajouter.

def terme_geo(u0, q, n):
    u = u0
    for k in range(n):
        u = q * u
    return u
>>> terme_geo(3, 2, 5)
96
>>> 3 * 2**5
96

En Python, la puissance s'écrit **.

8.2 La liste des termes

>>> [7 + 3*n for n in range(6)]
[7, 10, 13, 16, 19, 22]
>>> [3 * 2**n for n in range(6)]
[3, 6, 12, 24, 48, 96]

8.3 Calculer une somme

Pour une somme, on utilise un accumulateur : une variable qui vaut 00 au départ, et à laquelle on ajoute chaque terme.

def somme_entiers(n):
    s = 0
    for k in range(1, n + 1):
        s = s + k
    return s
>>> somme_entiers(100)
5050
>>> 100 * 101 // 2
5050

Attention. Dans range(1, n + 1), la borne de droite est exclue : kk va de 11 à nn. La division entière // donne un résultat entier.

8.4 Découper en fonctions

Un bon programme se découpe en petites fonctions, chacune chargée d'une seule tâche. C'est la programmation modulaire.

def termes(u0, q, n):
    return [u0 * q**k for k in range(n + 1)]

def somme(L):
    s = 0
    for x in L:
        s = s + x
    return s
>>> somme(termes(2, 3, 5))
728

C'est bien 2×1−361−3=7282 \times \dfrac{1 - 3^6}{1 - 3} = 728. La fonction somme resservira pour n'importe quelle liste.

8.5 La factorielle

Définition. Pour tout entier naturel nn non nul, la factorielle de nn est le produit des entiers de 11 à nn : n!=1×2×…×n.n! = 1 \times 2 \times \ldots \times n. Par convention, 0!=10! = 1.

Exemple 26. 5!=1×2×3×4×5=1205! = 1 \times 2 \times 3 \times 4 \times 5 = 120.

def fact(n):
    p = 1
    for k in range(1, n + 1):
        p = p * k
    return p
>>> fact(5)
120
>>> fact(10)
3628800

Attention. Pour un produit, la variable vaut 11 au départ, et non 00 : sinon, le résultat serait toujours nul.

Lire le cours complet du chapitre

Exercices 15 et 16

  • Exercice 15 : termes d'une suite
  • Exercice 16 : sommes et factorielle

Exercices du chapitre (PDF, 145 Ko)

Corrigés

Cherche d'abord les exercices sur ta feuille, puis compare avec le corrigé détaillé.

Corrigés du chapitre (PDF, 133 Ko)

Tu es hors connexion. Les chapitres téléchargés restent disponibles dans Hors connexion.