Exercice en Python : Tirage du Lotto

Vous pouvez copier-coller la solution proposée directement dans votre éditeur de programmes Python. Veillez toutefois à retaper vous-même certains programmes afin de vous exercer pour quand vous devrez taper vos programmes personnels.

Ce programme va simuler le tirage du Lotto belge (c'est pour cela qu'il y a deux " t ") mais vous pouvez l'adapter à votre pays, ce sera même un excellent exercice.

En Belgique, nous utilisons un tambour dans lequel se trouvent 50 boules numérotées de 1 à 50. Parmi ces 50 boules, 6 seront tirées et constitueront les numéros principaux du tirage. En fin de tirage, ces 6 numéros seront classés dans l'ordre croissant. Une septième boule est tirée et constituera le numéro complémentaire.

Voyez comment vous pourriez réaliser cet exercice. Faites, naturellement, une analyse préalable pour déterminer votre stratégie d'action et voir les variables dont vous aurez besoin.

Voir une analyse

Vous aurez compris qu'il s'agit d'un tirage SANS remise. Une même boule ne peut donc être tirée deux fois. Un système devra donc prévoir que, si le tirage au hasard fournit le numéro d'une boule absente du tambour, il faudra recommencer, en quelque sorte "patiner" jusqu'à ce que le numéro d'une boule présente dans le tambour soit tiré. On peut facilement faire cela avec une boucle TANT QUE.

Cette opération de tirage d'une boule valide (il faut distinguer le nombre de boules valides, qui sera toujours de 6, du nombre de tirages au hasard du fait que des boules absentes peuvent être tirées à plusieurs reprises) sera effectuée 6 fois et les boules tirées seront gardées à part du septième tirage qui représente le numéro complémentaire.

Au niveau des variables, on pourra choisir les options suivantes :

  1. Une liste représentera le tambour et sera initialisée avec les 50 numéros allant de 1 à 50;
  2. Une liste vide constituera le résultat du Lotto et accueillera les 6 boules principales tirées;
  3. Une variable numero servira à tirer les numéros au hasard, le numéro complémentaire subsistera dans cette variable après son tirage.
  4. Chaque fois qu'une boule valide (présente) sera trouvée dans le tambour, elle sera enlevée du tambour et placée dans la liste Lotto.

Essayez maintenant de concevoir l'architecture générale de votre programme avant de commencer à coder en Python.

Cacher cette analyse

Essayez maintenant de concevoir l'architecture générale de votre programme avant de commencer à coder en Python.

Voir une architecture

Le programme va commencer par déclarer et initialiser les listes.

  • Déclaration de la liste Lotto vide;
  • Initialisation de la liste tambour contenant tous les numéros de 1 à 50.

Le programme va alors se lancer dans la boucle POUR qui effectuera les 6 tirages principaux. Pour chaque tour de la boucle :

  • Une nouvelle boucle va "patiner" jusqu'à trouver un numéro qui existe dans le tambour;
  • Quand un numéro valide est trouvé :
    • Ce numéro est enlevé du tambour
    • Ce numéro est ajouté à la liste Lotto.

Le numéro complémentaire est tiré, toujours avec le "patinage" pour qu'il existe dans le tambour.

Les numéros sont affichés dans l'ordre du tirage.

Les numéros principaux, les 6, sont classés par ordre croissant.

Le tirage est affiché dans sa présentation finale.

Cacher cette architecture

Il vous reste maintenant à réaliser votre programme en Python... et puis à le vérifier :

  • → Six numéro tirés + le complémentaire;
  • → Pas deux fois le même numéro tiré;
  • → Tous les numéros dans la plage de 1 à 50;
  • → Le complémentaire est bien gardé à part et n'est pas trié avec les 6 numéros de base;
  • → Le classement final est correct.

Voir une solution

# Exercice : le tirage du Lotto belge (6 numéros parmi 50 + 1 numéro complémentaire)
# Importation de la bibliothèque pour le tirage au sort
from random import randint
# Création d'une liste avec tous les numéros du Lotto belge
tambour = list(range (1, 51)) # Hé oui, ceci fournira la liste de 1 à 50 compris...
# Création de la liste Lotto qui contiendra les numéros tirés mais actuellement vide
Lotto = [ ]
# Tirage des 6 boules de Lotto
numero = 0 # On initialise à un nombre ne faisant pas partie des boules de tambour pour entrer d'office dans le while deux lignes plus bas
for i in range (6): # Boucle pour qui tournera 6 fois, de 0 à 5
     while numero not in tambour: # Quand des boules manqueront, on risque de tirer le numéro d'une boule absente
          numero = randint (1, 50) # Tirage au hasard d’un numéro de 1 à 50 compris
     Lotto.append (numero) # On ajoute la boule à la liste Lotto
     tambour.remove (numero) # On supprime la boule de la liste tambour
# A chaque tour du for, numéro a été éliminé de tambour, le programme rentrera d'office dans while suivant
# Tirage du numéro complémentaire
while numero not in tambour: # Il ne faut pas tirer une boule manquante, on « patine » si nécessaire
     numero = randint (1, 50)
# Affichage du tirage complet du Lotto dans l'ordre de tirage
print ("******* Résultat du Lotto *******")
print (Lotto, "Numéro complémentaire :", numero)
# Affichage dans l'ordre arithmétique
Lotto.sort() # Les numéros contenus dans Lotto sont triés par ordre croissant
print() # Pour passer une ligne vide
print ("******* et par ordre arithmétique *******")
print (Lotto, "Numéro complémentaire :", numero)
input() # Pour voir l’écran si exécution directe en Python
# Fin du programme

Cacher cette solution

Prêt·e pour de nouvelles aventures ??? :O)

Retour