\documentclass[11pt,a4paper]{../../template/template_cours} \usepackage{minted} \title{Introduction à Python — Le jeu « Plus ou moins »} \author{Adrian Amaglio} \def\thesequence{Programmation} \begin{document} Durée : 1h\\ % --- \section{Les règles du jeu} Le jeu « Plus ou moins » a des règles assez simples. Voici comment le jeu se joue sur ordinateur : \begin{itemize} \item Le programme choisit un nombre entier au hasard entre 0 et 100 (par exemple 42). Le joueur doit le deviner. \item Le joueur propose un nombre (par exemple 55). \item Le programme répond « plus grand, si la proposition est inférieure au nombre à deviner, « plus petit » si la proposition est supérieur et « Gagné » si la proposition est égale. (Dans notre exemple, l’ordinateur répondra « plus petit ». \item Le joueur propose un nouveau nombre, jusqu’à ce qu’il ait le bon. \end{itemize} % --- \section{Un nombre aléatoire} En python, pour générer un nombre aléatoire entre 0 et 100 on a besoin des deux lignes suivantes. \begin{minted}{python} from random import randint secret = randint(0,100) \end{minted} La variable $secret$ a maintenant pour valeur un nombre entier aléatoire ! \begin{exercice} Pour vérifier l’effet de la fonction d’aléatoire, exécutez ce programme Python et vérifiez qu’il affiche bien un nombre différent à chaque exécution. \begin{minted}{python} from random import randint secret = randint(0,100) # Python choisit un nombre aléatoire print(secret) # Python va afficher le contenu de la variable "secret" \end{minted} \end{exercice} % --- \section{Les propositions du joueur} Pour que le joueur propose un nombre, nous allons devoir dire à notre programme d’attendre une saisie de sa part.\\ On utilise pour cela la fonction $input$. \begin{example} \begin{minted}{python} essai = int(input('Essai :')) print(essai) \end{minted} \end{example} \begin{exercice} Exécutez un programme contenant les deux lignes de l’exemple précédent.\\ Lorsqu’il vous demandera d’entrer votre essai, entrez le chiffre 9, appuyez sur la touche « entrer » et vérifier que votre chiffre s’affiche bien une seconde fois à l’écran. \end{exercice} % --- \section{Afficher des messages personnalisés} Nous allons ajouter des \textbf{conditions}. Une condition permet d’exécuter des instructions python uniquement dans certains cas. \begin{example} Par exemple, le programme suivant sert à tester si une personne est majeure : \begin{minted}{python} age = 17 if age < 18: print('Vous êtes mineur') elif age == 18: print('Vous êtes tout juste majeur') else: print('Vous êtes majeur') \end{minted} \end{example} \begin{exercice} Exécutez le programme de l’exemple précédent. Et changez l’âge pour voir dans quels cas chaque message est affiché. \end{exercice} % --- \section{Version à un essai} \begin{exercice} À partir des deux exemples précédents, écrivez un programme qui : \begin{itemize} \item Tire un nombre aléatoire et le stock dans la variable $secret$. \item Demande à l’utilisateur d’entrer un essai. \item Affiche le nombre secret, pour que le joueur puisse voir s’il correspond à son essai. \end{itemize} \textbf{Faites vérifier par le professeur} \end{exercice} % --- \section{Version à un essai, avec un message personnalisé} \begin{exercice} Complétez votre programme pour qu’il affiche un message, comme définit dans les règles, en fonction de l’essai du joueur. \end{exercice} % --- \section{Version avec trop d’essais !} Pour que l’utilisateur puisse entrer plusieurs essais, il faudrait répéter certaines étapes du programme.\\ Pour répéter indéfiniment des instructions, on utilise une boucle infinie ! \begin{example} \begin{minted}{python} while True: print('Bonjour') \end{minted} Le programme ci-dessus, affichera « bonjour » en continu, tant que l’on ne l’arrête pas. \end{example} \begin{exercice} Modifiez votre programme python pour que l’utilisateur puisse faire plusieurs propositions. \end{exercice} % On espère que les élèves arriveront là au moins % --- \section{Version avec tout juste ce qu’il faut d’essais} On a maintenant un problème, le programme précédent ne s’arrête pas, même lorsque le nombre a été deviné ! La boucle infinie, est réellement infinie…\\ Il existe cependant un moyen de la stopper. Il suffit d’ajouter l’instruction « break » dans le programme. Lorsque python exécute l’instruction « break », il arrête immédiatement la boucle ! \begin{exercice} Placez l’instruction « break » dans votre programme pour qu’il s’arrête en cas de victoire du joueur.\\ Testez plusieurs fois votre programme. \end{exercice} % --- \section{Afficher le nombre d’essais} \begin{example} En python, on peut utiliser un compteur. C’est une variable qui contient un entier.\\ On l’initialise à 0, c’est à dire qu’on lui donne cette valeur au début du programme, puis on augmente sa valeur de 1 dès que l’on veut compter. \begin{minted}{python} compteur = 0 print(compteur) # <- affiche 0 compteur = compteur + 1 print(compteur) # <- affiche 1 \end{minted} \end{example} \begin{exercice} Modifiez votre programme pour qu’il affiche le nombre de tentatives faites par le joueur pour deviner le nombre secret. \end{exercice} % --- \section{Proposer de rejouer} \begin{exercice} Modifiez votre programme pour qu’il propose de rejouer à la fin de la partie. \end{exercice} % --- \section{Nombre d’essai maximal} \begin{exercice} Modifiez votre programme pour qu’il fixe un nombre d’essai maximal au joueur et qu’il termine la partie lorsque celui-ci est atteint.\\ Il peut être agréable pour le joueur que le nombre d’essais restants soit affiché à chaque tour. \end{exercice} % --- \section{Difficulté réglable} \begin{exercice} Modifiez votre programme pour qu’il permette au joueur de changer la valeur maximale du nombre secret et le nombre d’essais possibles. \end{exercice} \end{document}