cours-snt/nsi_python/tp_noté_python/sujet.tex
2022-10-25 14:41:44 +02:00

123 lines
4.8 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{TP noté sur Python}
\author{Adrian Amaglio}
\def\thelevel{NSI}
\def\thesequence{Programmation}
\begin{document}
Durée : 1h
% ---
\section{Dessiner des pyramides}
Lobjectif de cette partie est de concevoir un programme python capable dafficher des pyramides de texte. Voici par exemple une pyramide détoiles de 4 étages :
\begin{verbatim}
*
* *
* * *
* * * *
\end{verbatim}
Nous allons pour cela créer une fonction affichant une ligne de longueur donnée et dun symbole donné puis une fonction, utilisant la précédente, capable dafficher une pyramide de hauteur donnée.
Cette partie sera à faire dans un fichier nommé \textit{pyramide.py}.
\begin{exercice}
Créer une fonction appelée \textit{ligne}, prenant en paramètre un symbole (type texte ou \textit{str} en python) et une taille de ligne.\\
Cette fonction affichera le symbole autant de fois que demandé dans le paramètre taille.\\
\textit{Aide :} Pour afficher du texte sans retour à la ligne on ajoute un paramètre \textit{end} à print :\\
\begin{minted}{python}
print('Bonsoir !', end='')
\end{minted}
Tester la fonction ligne avec plusieurs valeurs pour vérifier son bon fonctionnement. Voici des exemples de test :
\begin{minted}{python}
ligne('*', 10)
ligne('.', 1)
ligne('o', 5)
\end{minted}
\end{exercice}
\begin{exercice}
Créer une fonction \textit{pyramide}, qui prend en paramètre une hauteur et un symbole et qui dessine la pyramide correspondante en utilisant la fonction \textit{ligne}.
\end{exercice}
\begin{exercice}
Dessinez trois pyramides avec des symboles et des hauteurs différentes.
\end{exercice}
% ---
\section{Jeu de morpion}
Lobjectif de cette partie est de concevoir un jeu de morpion (ou tic-tac-toe).
Cette partie sera à faire dans un fichier nommé \textit{morpion.py}.\\
Le plateau de jeu sera représenté par une liste contenant trois liste (une pour chaque ligne du plateau).
Chaque ligne sera représentée par une liste de trois textes (str) qui peuvent avoir trois valeurs distinctes :
\begin{description}
\item[' '] Si la case est vide
\item['x'] Si la case contient une croix
\item['o'] Si la case contient un rond
\end{description}
\begin{exercice}
En haut de votre fichier \textit{morpion.py}, collez la ligne de python suivante :
\begin{minted}{python}
plateau = [ [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '] ]
\end{minted}
Vérifiez que votre fichier sexécute bien et naffiche rien.
\end{exercice}
\begin{exercice}
Créer une fonction nommée \textit{afficher} qui affiche en texte le plateau de jeu. Elle prendra le plateau de jeu en paramètre.\\
\end{exercice}
\begin{exercice}
Créer une fonction nommée \textit{jouer} qui prend quatre paramètres :
\begin{itemize}
\item Le plateau de jeu
\item Le symbole à jouer (x ou o)
\item La ligne où on souhaite jouer
\item La colonne où on souhaite jouer
\end{itemize}
Cette fonction modifiera le plateau pour mettre le symbole à lemplacement voulu.
Aucune vérification nest faite à cette étape du programme, les coups de triche sont possibles.
\end{exercice}
\begin{exercice}
Testez vos deux fonctions précédentes en les appelant avec des valeurs choisies.
Voici un exemple de test à modifier et enrichir :
\begin{minted}{python}
afficher(plateau)
jouer(plateau, 'x', 0, 0)
afficher(plateau)
\end{minted}
\end{exercice}
\begin{exercice}
Modifier la fonction \textit{jouer} pour quelle vérifie de le coup demandé est valide.
La fonction doit maintenant retourner True si le coup a été joué et False si il est invalide.\\
Tester à nouveau la fonction.
\end{exercice}
\begin{exercice}
Créer une fonction \textit{partie} qui prend le plateau en paramètre et qui déroule une partie. Voici le principe de base.
\begin{itemize}
\item Demander au premier joueur où il souhaite jouer
\item Appeler la fonction jouer avec les paramètres correspondants
\item Demander au second joueur où il souhaite jouer
\item Appeler la fonction jouer avec les paramètres correspondants
\end{itemize}
Vérifiez que votre fonction :
\begin{itemize}
\item Gère correctement les cas où le coup est invalide
\item Utilise bien le symbole 'x' pour un joueur et 'o' pour lautre
\end{itemize}
\end{exercice}
\begin{exercice}
Créer une fonction \textit{victoire} qui prend le plateau en paramètre et retourne le symbole 'x' si trois x sont alignés, 'o' si trois o sont alignés ou ' ' si aucun joueur na gagné.
Utilisez cette fonction dans votre fonction \textit{partie}
\end{exercice}
\end{document}