Mini-stage NSI seconde 🐍

Le jeu des allumettes

Principe du jeu

Le jeu des allumettes se joue à deux. Il y a au départ 13 allumettes. Chacun à son tour, les joueurs retirent entre une et trois allumettes. Celui qui retire la dernière allumette a perdu.

1. Thonny

Le logiciel que nous allons utiliser s'appelle Thonny. image du logiciel Thoony Il est disponible à l'adresse : https://thonny.org/

Thonny est essentiellement constitué de deux blocs : l'éditeur de texte et la console de l'interpréteur.

L'éditeur de texte

L'éditeur de texte est la zone où l'on écrit le programme. En effet, les programmes sont tapés dans des fichiers textes, que l'on peut sauvegarder, modifier et distribuer à loisir.

Dans Thonny, on peut exécuter le programme contenu dans le fichier texte à l'aide du bouton d'exécution.

La console de l'interpréteur :

La console est la zone où l'on interagit avec le pro- gramme. Elle se repère aux trois chevrons (>>>) qu'elle contient.

On se sert de cette zone essentiellement pour visua- liser le résultat de l'exécution de nos programmes, et pour les saisies. Cependant, on peut aussi se servir de la console pour tester l'effet d'une commande.

2. Variables

Définition

Une variable correspond à un emplacement dans la mémoire de l'ordinateur auquel on donne :

  • un nom : qui doit commencer par une lettre et ne contenir que des lettres non accentuées, des caractères _ et des chiffres,
  • une valeur : qui est modifiable.
  • 2.1 Affectation

    Définition

    L'affectation est une opération permettant de définir la valeur initiale d'une variable (on parle alors d'initialisation), puis de modifer la valeur de cette variable.

    En Python, on note :

    Exemple.

    2.2 Affichage

    Pour affcher la valeur d'une variable, une valeur ou du texte dans la console, on utilise en Python :

    Exemple.

    	
    	

    2.3 Activité

    Exercice 1.

    Écrire un programme Python qui réalise les opérations suivantes :

  • créer une variable dont le nom est a et la valeur est 42,
  • créer une variable dont le nom est b et la valeur est 314,
  • créer une variable dont le nom est c et la valeur est égale à la valeur de a plus la valeur de b,
  • afficher les valeurs de a, b et c,
  • augmenter la valeur de c de 2,
  • diminuer la valeur de b de 3,
  • afficher les valeurs de a, b et c
  •  📋

    
    	
    	
    	

    3 Saisie

    3.1 Définition

    À savoir

    Pour rendre un programme interactif, on peut, pendant l'exécution de celui-ci, demander à l'utilisateur de saisir un texte ou une valeur grâce à une instruction de saisie.
    Lorsqu'arrive une instruction de saisie, le programme se met en pause. L'utilisateur doit alors saisir quelque chose dans la console et appuyer sur la touche "entrée" pour valider. Pour expliciter ce qu'il faut saisir, une instruction de saisie est en général accompagnée par l'affichage d'un message explicatif. La valeur saisie doit par ailleurs être stockée dans une variable de manière à pouvoir être réutilisée dans la suite du programme.

    Pour demander de saisir une valeur et la stocker dans une variable nommée a, on utilise les instructions suivantes :

    En python :

  • Pour saisir un texte :
  • pour saisir un nombre entier :
  • Exemple.

     📋

    3.2 Activité

    Exercice 2.

    Écrire en Python un programme qui :

  • demande de saisir un nombre d'allumettes de départ,
  • demande de saisir un nombre d'allumettes à enlever,
  • affiche le nombre d'allumettes restantes.
  • Résultat attendu :

    >>> %Run -c $EDITOR_CONTENT
     saisir le nombre d'allumettes de départ : 7
     saisir le nombre d'allumettes à enlever : 2
     nombre d'allumettes restantes : 5
    >>>

    Exercice 3.

    Une épicerie vend de la farine à 2 euros le kilo, et des tablettes de chocolat à 3 euros.

    Écrire en Python un programme qui :

  • demande de saisir un nombre de kilos de farine,
  • demande de saisir un nombre de tablettes de chocolat,
  • affiche le prix à payer au total pour la farine et le chocolat.
  • Résultat attendu :

    >>> %Run -c $EDITOR_CONTENT
     saisir le nombre de kilos de farine : 5
     saisir un nombre de tablettes de chocolat : 3
      le prix à payer au total pour la farine et le chocolat est de 19 euros
    >>>

    4 Boucles

    Définition

    Une boucle (ou structure itérative), est une structure permettant de répéter plusieurs fois l'exécution d'un bloc d'instructions. Il en existe deux en Python : la boucle "Tant que" et la boucle "Pour".

    4.1 Boucle Tant Que

    La boucle "tant que" permet de répéter un bloc d'instructions tant qu'une condition est vérifiée. Lorsque la condition n'est plus vérifiée, on sort de la boucle. Une telle structure se formalise de la façon suivante :

    En Python :

    Exemple.

    	
    	

    Remarques.

  • Un oubli du symbole ":" provoque une erreur de syntaxe.
  • Le décalage en début de ligne s'appelle une indentation. L'indentation est obligatoire et permet d'indiquer quelles instructions sont dans la boucle. On peut imbriquer plusieurs structures, à condition d'indenter autant de fois que nécessaire. Elle se fait grâce à la touche Tab du clavier.
  • 4.2 Formulation des conditions

    Les conditions qui apparaissent dans les boucles Tant Que sont exprimées à l'aide d'opérateurs de comparaison. Il y a six opérateurs de comparaison :

    En mathématiques= < >
    En Python == ! = < <= > >=

    Exemple.

    a <= 8 est vraie si la variable a est inférieure ou égale à 8.

    >>> a=1
    >>> a<=8
    True
    >>> a=9
    >>> a<=8
    False
    >>>

    4.3 Activité

    Exercice 4.

    Écrire en Python un programme qui :

  • crée une variable nb_allumettes de valeur 13,
  • répète tant qu'il reste des allumettes les opérations suivantes :
    • afficher le nombre d'allumettes restantes,
    • demander de saisir un nombre, entre 1 et 3, d'allumettes à enlever,
    • modifier la valeur de la variable nb_allumettes en conséquence.
  • affiche un message disant qu'il ne reste plus d'allumettes.
  • Résultat attendu :

    >>> %Run -c $EDITOR_CONTENT
     il reste 21 allumettes
     saisir un nombre, entre 1 et 3, d'allumettes à enlever : 3
     il reste 17 allumettes
     saisir un nombre, entre 1 et 3, d'allumettes à enlever : 3
     il reste 14 allumettes
     saisir un nombre, entre 1 et 3, d'allumettes à enlever : 2
     il reste 12 allumettes
     saisir un nombre, entre 1 et 3, d'allumettes à enlever : 3
     il reste 9 allumettes
     saisir un nombre, entre 1 et 3, d'allumettes à enlever : 3
     il reste 6 allumettes
     saisir un nombre, entre 1 et 3, d'allumettes à enlever : 1
     il reste 5 allumettes
     saisir un nombre, entre 1 et 3, d'allumettes à enlever : 3
     il reste 2 allumettes
     saisir un nombre, entre 1 et 3, d'allumettes à enlever : 2
     il reste plus d'allumettes
    >>>

    Exercice 5.

    Pour simuler un lancer de dé, on tire un nombre aléatoire entre 1 et 6. Pour cela, on utilise les instructions Python suivantes :

    	
    	

    Écrire en Python un programme qui simule les tirages successifs d'un dé, en affichant les valeurs au fur et à mesure, jusqu'à ce qu'un 2 apparaisse.

    >>> %Run -c $EDITOR_CONTENT
     5
     1
     4
     1
     4
     6
     2
    >>>

    5 Structure conditionnelle

    5.1 Définition

    Les structures conditionnelles permettent de faire varier le comportement de l'algorithme en fonction d'une ou plusieurs conditions. Une structure conditionnelle simple est construite de la façon suivante :

    En Python :

    Dans cette structure, le else et les instructions qui l'accompagnent sont facultatifs.

    Exemple.

     📋


    >>> %Run -c $EDITOR_CONTENT
     3 * 8 = ? 
      Saisir le résultat du calcul : 24
      Bravo !
    >>>
    
    >>> %Run -c $EDITOR_CONTENT
     10 * 4 = ? 
      Saisir le résultat du calcul : 50
      Raté !
    >>>

    5.2 Activité

    Exercice 6.

    Écrire en Python un programme qui :

  • demande de saisir un âge,
  • affiche un message disant si l'âge correspond à une personne majeure ou mineure.
  • Résultat attendu :

    >>> %Run -c $EDITOR_CONTENT
     Saisir votre âge : 16
     Vous êtes mineur
    >>>
    
    >>> %Run -c $EDITOR_CONTENT
     Saisir votre âge : 18
     Vous êtes majeur
    >>>

    6 Programmation du jeu des allumettes

    6.1 Adversaire aléatoire

    Exercice7.

    Dans cet exercice, deux joueurs s'affrontent : l'utilisateur et l'ordinateur. L'ordinateur jouera au hasard (grâce à la fonction randint, voir exercice 5). On utilisera une variable, nommée joueur pour représenter le joueur dont c'est le tour : cette variable vaudra 0 si c'est au tour de l'ordinateur et 1 si c'est au tour de l'utilisateur.

    Écrire le programme du jeu des allumettes qui :

  • initialise une variable nb_allumettes à 13,
  • demande de saisir 0 ou 1 pour indiquer qui, de l'ordinateur ou de l'utilisateur, commence, et stocke le résultat de la saisie dans une variable joueur,
  • répète tant qu'il reste des allumettes :
    • afficher le nombre d'allumettes restantes,
    • déterminer le nombre d'allumettes à enlever grâce à une saisie ou un tirage d'entier aléatoire en fonction du joueur dont c'est le tour,
    • modifier la valeur de la variable nb_allumettes en conséquence,
    • modifier le joueur dont c'est le tour en modifiant la valeur de la variable joueur,
  • affiche le gagnant.
  • >>> %Run -c $EDITOR_CONTENT
     saisir 0 si l'ordinateur commence sinon 1 : 0
     L'ordinateur commence
     il reste 21 allumettes
     L'ordinateur prends 1 allummettes
     il reste 20 allumettes
     combien d'allumettes enlèves-tu ? 3
     il reste 17 allumettes
     L'ordinateur prends 2 allummettes
     il reste 15 allumettes
     combien d'allumettes enlèves-tu ? 2
     il reste 13 allumettes
     L'ordinateur prends 3 allummettes
     il reste 10 allumettes
     combien d'allumettes enlèves-tu ? 1
     il reste 9 allumettes
     L'ordinateur prends 3 allummettes
     il reste 6 allumettes
     combien d'allumettes enlèves-tu ? 1
     il reste 5 allumettes
     L'ordinateur prends 1 allummettes
     il reste 4 allumettes
     combien d'allumettes enlèves-tu ? 3
     il reste 1 allumettes
     L'ordinateur prends 1 allummettes
     Tu gagnes, 👏,👏 !
    >>>
    
    >>> %Run -c $EDITOR_CONTENT
     saisir 0 si l'ordinateur commence sinon 1 : 1
     Tu commences
     il reste 21 allumettes
     combien d'allumettes enlèves-tu ? 1
     il reste 20 allumettes
     L'ordinateur prends 3 allummettes
     il reste 17 allumettes
     combien d'allumettes enlèves-tu ? 1
     il reste 16 allumettes
     L'ordinateur prends 1 allummettes
     il reste 15 allumettes
     combien d'allumettes enlèves-tu ? 2
     il reste 13 allumettes
     L'ordinateur prends 1 allummettes
     il reste 12 allumettes
     combien d'allumettes enlèves-tu ? 3
     il reste 9 allumettes
     L'ordinateur prends 3 allummettes
     il reste 6 allumettes
     combien d'allumettes enlèves-tu ? 3
     il reste 3 allumettes
     L'ordinateur prends 2 allummettes
     il reste 1 allumettes
     combien d'allumettes enlèves-tu ? 1
     L'ordinateur gagne
    >>>

    6.2 Stratégie gagnante

    Exercice 8.

    Dans le jeu des allumettes, il existe une stratégie gagnante : l'un des joueur (en fonction du nombre d'allumettes au départ) est assuré de gagner si il joue bien.

    1) Déterminer la stratégie gagnante.

    2) Faire dans la console les calculs suivants 14%10, 15%10, 17%10, 14%5, 15%5 et 16%5.Que fait l’opération % ?

    3) Dans l'exercice précédent, faire en sorte que l'ordinateur, au lieu de jouer aléatoirement, joue selon la stratégie gagnante.

    6.3 Pour aller plus loin

  • Le programme pourra vérifier que les nombres saisis par l'utilisateur soient en accord avec les règles du jeu, et pourra demander de ressaisir un nombre tant que ce n'est pas le cas.
  • Le programme pourra proposer à l'utilisateur de choisir son niveau : niveau 1 pour les débutants, et niveau 2 pour les experts. On pourra afficher un message d'erreur si le niveau choisi par le joueur n'est ni 1 ni 2.
  • Le programme pourra proposer de choisir entre une partie "ordinateur contre joueur" et une partie "joueur 1 contre joueur 2".
  • On pourra programmer une variante du jeu. Voir à l'adresse : https://fr.wikipedia.org/wiki/Jeu_de_Marienbad