cours-snt/python/tp_plus_moins/sujet.tex

168 lines
6.1 KiB
TeX
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\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, lordinateur répondra « plus petit ».
\item Le joueur propose un nouveau nombre, jusquà ce quil 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 leffet de la fonction daléatoire, exécutez ce programme Python et vérifiez quil 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 dattendre 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 lexemple précédent.\\
Lorsquil vous demandera dentrer votre essai, entrez le chiffre 9, appuyez sur la touche « entrer » et vérifier que votre chiffre saffiche bien une seconde fois à lécran.
\end{exercice}
% ---
\section{Afficher des messages personnalisés}
Nous allons ajouter des \textbf{conditions}.
Une condition permet dexé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 lexemple 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 à lutilisateur dentrer un essai.
\item Affiche le nombre secret, pour que le joueur puisse voir sil 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 quil affiche un message, comme définit dans les règles, en fonction de lessai du joueur.
\end{exercice}
% ---
\section{Version avec trop dessais !}
Pour que lutilisateur 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 lon ne larrête pas.
\end{example}
\begin{exercice}
Modifiez votre programme python pour que lutilisateur puisse faire plusieurs propositions.
\end{exercice}
% On espère que les élèves arriveront là au moins
% ---
\section{Version avec tout juste ce quil faut dessais}
On a maintenant un problème, le programme précédent ne sarrê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 dajouter linstruction « break » dans le programme.
Lorsque python exécute linstruction « break », il arrête immédiatement la boucle !
\begin{exercice}
Placez linstruction « break » dans votre programme pour quil sarrête en cas de victoire du joueur.\\
Testez plusieurs fois votre programme.
\end{exercice}
% ---
\section{Afficher le nombre dessais}
\begin{example}
En python, on peut utiliser un compteur. Cest une variable qui contient un entier.\\
On linitialise à 0, cest à dire quon lui donne cette valeur au début du programme, puis on augmente sa valeur de 1 dès que lon 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 quil 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 quil propose de rejouer à la fin de la partie.
\end{exercice}
% ---
\section{Nombre dessai maximal}
\begin{exercice}
Modifiez votre programme pour quil fixe un nombre dessai maximal au joueur et quil termine la partie lorsque celui-ci est atteint.\\
Il peut être agréable pour le joueur que le nombre dessais restants soit affiché à chaque tour.
\end{exercice}
% ---
\section{Difficulté réglable}
\begin{exercice}
Modifiez votre programme pour quil permette au joueur de changer la valeur maximale du nombre secret et le nombre dessais possibles.
\end{exercice}
\end{document}