Une page de Le Lab de la taverne

Hero academie techno-magique Python de la .Taverne de l'Invisible

Multiplications et table de Pythagore en Python

Par Darko Stankovski, 29/12/2016 (Mise à jour 27/07/2026) — Débutant

Pour la rentrée, Kid 1.8 doit officiellement voir la table de Pythagore. Officiellement car nous lui avons déjà présenté (sans la nommer) pour son apprentissage des tables de multiplication. Nous lui avions préparé un tableau papier qu'il a rempli lui-même au fur et à mesure qu'il voyait une nouvelle table à l'école.

Nous parlons donc d'un enfant de 8 ans qui n'a pas encore commencé à faire du Scratch. Aujourd'hui, je lui ai montré comment avec un ordinateur et des formules magiques que l'on appelle du code, on peut générer une table de multiplication et la table de Pythagore. Et tout ça en Python, ce qui en fait un joli petit exercice d'illustration et d'apprentissage du code.

Initialement, j'avais écrit cet article comme une illustration sur un cas concret de l'apport de la programmation pour des élèves, même en primaire.

Mais c'est un cas intéressant pour travailler certaines notions de base : calcul, fonctions, formatage de texte et itérations (boucles).

Première étape : une table de multiplication

Commençons par le plus simple : afficher la table de multiplication d'un nombre donné. L’ordinateur doit, pour un nombre de départ (appelé facteur), calculer et afficher tous les produits obtenus en le multipliant par des entiers allant de 1 à 10.

Quel que soit le langage de programmation, la multiplication s'écrit de la même manière : a * b. En Python, l'itération se fait à l'aide de la boucle for et de la fonction range(). Pour l'affichage des résultats, c'est la fonction print() qui s'en charge, en nous permettant de rester sur une seule ligne grâce au paramètre optionnel end.

L'algorithme peut se formuler ainsi : soit facteur le nombre dont on veut la table ; pour chaque valeur i allant de 1 à 10, multiplier facteur par i et afficher le résultat.

Pour pouvoir afficher la table de n'importe quel nombre, nous allons écrire une fonction :

def multiplication(facteur, max=10):
    for i in range(1, max + 1):
        print(facteur * i, end=" ")
    print()

Il y a quelques subtilités, mais voyons d'abord l'usage. Dans un shell interactif, il suffit d'appeler cette fonction en lui passant en argument le nombre souhaité pour voir s'afficher sa table de 1 à 10 :

>>> multiplication(4)
4 8 12 16 20 24 28 32 36 40

Au sujet des subtilités :

  • Le paramètre max : J'ai ajouté un paramètre max à cette fonction, avec une valeur par défaut de 10. Cela permet d'afficher la table standard par défaut, tout en laissant à l'utilisateur la liberté de choisir une autre borne supérieure s'il le souhaite (par exemple jusqu'à 12 ou 20).
  • Le fonctionnement de range() : Bien que la logique soit de répéter une action n fois (de manière classique, 10 fois), nous avons ici besoin de connaître le multiplicateur i à chaque étape. C'est pourquoi nous utilisons range(1, max + 1) : en Python, la borne supérieure de range() est exclue. Pour aller de 1 à 10 inclus, il faut donc s'arrêter à 11 (10 + 1). Pour plus d'explications sur la manière de répéter une action avec le for ou de compter, vous pouvez consulter mon article dédié à l'usage du for.

Deuxième étape : la table de Pythagore

La table de Pythagore regroupe toutes les tables de multiplication dans un seul tableau. Pour trouver un résultat, il suffit d'associer un nombre du haut avec un nombre du côté : à leur point de rencontre, on obtient le produit.

Pour dessiner cette table, nous allons pouvoir réutiliser directement notre fonction multiplication(). La table usuelle présente les valeurs de 1 à 10, mais comme précédemment, l'ajout d'un paramètre optionnel nous permettra de choisir une autre borne supérieure si besoin.

La fonction table_pythagore() devient alors très simple à écrire :

def table_pythagore(max=10):
    for i in range(1, max + 1):
        multiplication(i, max)

Afficher la table standard se fait alors sans paramètres.

>>> table_pythagore()
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100

Il est intéressant de montrer au Kid ce que l’on peut faire avec 7 lignes de code Python. 7 lignes qui génèrent instantanément une table de Pythagore alors que lui a passé quelques temps à l'écrire.

Mais ce résultat est quand même un peu moche et pas très lisible…

Troisième étape : soigner la présentation

Pour l'instant, les colonnes se décalent parce qu'un nombre à deux ou trois chiffres prend plus de place qu'un chiffre seul (comme 4 face à 100). Pour corriger cela et obtenir une belle grille, nous allons aligner les chiffres et tracer des séparateurs.

Pour imposer une largeur fixe à chaque nombre, nous pouvons utiliser le formatage de texte. Bien que ce ne soit pas exactement leur cas d'usage ici, la plus directe consiste à utiliser les f-strings (les chaînes de caractères précédées de la lettre f).

Au sein de la f-string, en écrivant {valeur * i}, nous allons demander à Python d'insérer le produit de valeur par i. Mais en ajoutant {valeur * i : 3}, on demande à Python de réserver systématiquement 3 caractères de large pour afficher le résultat, en ajoutant des espaces au début si le nombre est plus petit.

Modifions notre fonction multiplication() pour aligner les nombres et ajouter des barres verticales | entre les colonnes :

def multiplication(facteur, max=10):
    for i in range(1, max):
        print(f"{facteur * i:3}", end=" | ")
    print(f"{facteur * max:3}")

Remarque : Pour la dernière valeur de la ligne, nous faisons un simple print() sans redéfinir le paramètre end="\n", (ce qui est sa valeur par défaut). Cela évite d'avoir une barre verticale inutile tout à droite de notre tableau.

Voyons ce que donne une seule ligne :

>>> multiplication(4)
  4 |   8 |  12 |  16 |  20 |  24 |  28 |  32 |  36 |  40

C'est déjà beaucoup plus propre ! Il ne nous reste plus qu'à ajouter des lignes horizontales de séparation faites de tirets.

Chaque colonne occupe exactement 6 caractères de large : 3 pour le nombre et 3 pour le séparateur |. Pour une ligne complète, il faut donc répéter ces 6 caractères autant de fois qu'il y a de colonnes (6 * max).

Comme la toute dernière colonne n'a pas de séparateur à sa droite, on retire les 3 derniers tirets. Les chaines de caractères ne sont pas des nombres, nous ne pouvons pas faire de fractions. Nous allons utiliser le slicing de Python : [:-3].

Voici le code final de notre table de Pythagore :

def table_pythagore(max=10):
    print(("------" * max)[:-3])
    for i in range(1, max + 1):
        multiplication(i, max)
        print(("------" * max)[:-3])

Et le résultat final :

>>> table_pythagore()
---------------------------------------------------------
  1 |   2 |   3 |   4 |   5 |   6 |   7 |   8 |   9 |  10
---------------------------------------------------------
  2 |   4 |   6 |   8 |  10 |  12 |  14 |  16 |  18 |  20
---------------------------------------------------------
  3 |   6 |   9 |  12 |  15 |  18 |  21 |  24 |  27 |  30
---------------------------------------------------------
  4 |   8 |  12 |  16 |  20 |  24 |  28 |  32 |  36 |  40
---------------------------------------------------------
  5 |  10 |  15 |  20 |  25 |  30 |  35 |  40 |  45 |  50
---------------------------------------------------------
  6 |  12 |  18 |  24 |  30 |  36 |  42 |  48 |  54 |  60
---------------------------------------------------------
  7 |  14 |  21 |  28 |  35 |  42 |  49 |  56 |  63 |  70
---------------------------------------------------------
  8 |  16 |  24 |  32 |  40 |  48 |  56 |  64 |  72 |  80
---------------------------------------------------------
  9 |  18 |  27 |  36 |  45 |  54 |  63 |  72 |  81 |  90
---------------------------------------------------------
 10 |  20 |  30 |  40 |  50 |  60 |  70 |  80 |  90 | 100
---------------------------------------------------------

Mais au fait... à quoi ça sert ?

En toute franchise pour l'apprentissage des tables de multiplications : à pas grand-chose. Cela ne remplace pas le travail de classe ! Il est indispensable que les enfants complètent eux-mêmes leurs tables sur papier pour les apprendre et les mémoriser.

En revanche, l'exercice devient magique lorsqu'ils réalisent le temps qu'ils ont passé à remplir cette grille à la main... et qu'en comparaison, quelques lignes de code informatique permettent d'accomplir cette tâche répétitive en une fraction de seconde. C'est là toute la puissance de la programmation : confier à la machine le travail pénible pour se concentrer sur la réflexion !

C'est donc avant tout une illustration de l'intérêt de la programmation et les diriger vers Scratch puis Python !

Licence Creative Commons

Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Pas de Modification 4.0 International