Lycée Gustave Eiffel TS – ISN ISN ISN – Informatique et Sciences du Numérique TP5 PYTHON : NOMBRES ALEATOIRE ET DICTIONNAIRE 1 – NOMBRES ALEATOIRES Python dispose du module « random » qui contient de nombreuses fonctions en relation avec les nombres aléatoires notamment la fonction « randint » qui permet de délivrer un nombre entier (pseudo-)alétoire dans un certain intervalle de valeurs. Pour utiliser la fonction « randint » il est nécessaire de charger le module « random ». Exemple N = random.randint(1,10) # Nombre aléatoire compris entre 1 et 10 Exercice 1 1. Editer un script permettant de simuler le lancer d’un dé tant que l’utilisateur le veut. 2. Enregistrer et tester le script. 2 – DICTIONNAIRES Un dictionnaire est un structure de liste un peu particulière qui permet de stocker des données sous la forme (clé ; valeur). L’accès aux éléments du dictionnaire ne se fait plus à l’aide d’un index mais à l’aide de la clé. Celle-ci est unique et n'est pas nécessairement un entier. TP5 Python : Nombres aléatoires et dictionnaires Page n°1/3 Lycée Gustave Eiffel TS – ISN Exercice 2 3. Taper dans l’interpréteur les lignes suivantes. Justifier les résultats obtenus. >>>moyenne = {'Math':14,'Anglais':12.5,'Français':13} >>>print(moyenne) >>>print(moyenne['Math']) >>>moyenne['Anglais'] = 16 >>>print(moyenne) 3 – LABYRINTHE La nouvelle version du jeu du labyrinthe est réalisée par le script jeu_lab2.py et le module module_lab2.py. Il faut ajouter des trésors dans le jeu. Ces trésors sont répartis en 3 catégories et seront représentés dans les fichiers des labyrinthes par les caractères « 1 », « 2 », et « 3 ». Cependant dans le labyrinthe affiché pendant le jeu, les trésors seront représenté par le même caractère « # ». Chaque fois que le personnage atteindra un trésor, il gagnera un certain nombre de pièces d’or selon le type de trésor atteint. Le nombre exact de pièces d’or gagnée par le personnage sera tiré au hasard dans l’intervalle correspond au type de trésor. Lorsque le personnage s’est déplacé dans une case trésor, il faudra supprimer ce trésor. Trésor « 1 » Trésor « 2 » Trésor « 3 » 1 à 5 pièces d’or 5 à 10 pièces d’or 0 à 25 pièces d’or Le nombre de pièces d’or (po) sera contenu dans le dictionnaire « data » qui contiendra également le niveau courant du labyrinthe : data = {"po" : 20,"niveau" : 2}. Le dictionnaire « data » sera initialisé dans le programme principal avec les valeurs suivantes : data = {"po" : 0,"niveau" : None}. 3.1 – Fonction compte_tresor La fonction compte_tresor permet d’incrémenter le nombre de pièces d’or en fonction du type de trésor. Cette fonction est lancée par la fonction verification_deplacement si le personnage passe par une case trésor. Elle fournit à la fonction compte_tresor la catégorie de trésor trouvé. TP5 Python : Nombres aléatoires et dictionnaires Page n°2/3 Lycée Gustave Eiffel TS – ISN Exercice 3 : Labyrinthe – Fonction compte_tresor 4. Compléter, dans le fichier module_lab2.py, les lignes 61 à 66 permettant d’incrémenter le nombre de pièces d’or en fonction du type de trésor. 3.2 – Fonction verification_deplacement La fonction verification_deplacement doit permettre de détecter le passage du personnage par une case trésor et dans ce cas lancer la fonction compte_tresor. La fonction verification_deplacement doit ensuite effacer le trésor. Pour cela il faut utiliser la ligne suivante : lab[pos_ligne] = lab[pos_ligne][:pos_col] + " " + lab[pos_ligne][pos_col + 1 :] Exercice 4 : Labyrinthe – Fonction verification_deplacement 5. Compléter, dans le fichier module_lab2.py, les lignes 84 et 85 permettant de tester si la case contient un trésor et dans ce cas d’appeler la fonction compte_tresor. 6. Expliquer le fonctionnement de la ligne 86. 3.3 – Fonction affiche_labyrinthe La fonction « affiche_labyrinthe » doit balayer toutes les lignes du labyrinthe et remplacer les caractères « 1 », « 2 » et « 3 » rencontrés par le caractère « # ». Pour cela il faut utiliser une boucle « for » avec la variable de comptage de boucle comprise entre 1 et 3. Pour remplacer un caractère, dans ligne, il est possible d’utiliser la fonction « replace » : Syntaxe # Remplace dans la ligne tous les caractere1 par le caractere2 ligne = ligne.replace(caractere1,caractere2) Le caractère « # » qui permet d’afficher l’emplacement d’un trésor est défini dans le programme principal par la variable tresor. Exercice 5 : Labyrinthe – Fonction affiche_labyrinthe 7. Compléter, dans le fichier module_lab2.py, la ligne 44 afin de remplacer les caractères « 1 », « 2 » et « 3 » représentant les trésors par caractère unique « # ». 3.4 – Fonction barre_score La fonction barre_score doit permettre d’afficher le dictionnaire « data » des données de jeu : data = {"po" : 0,"niveau" : None}. Exercice 6 : Labyrinthe – Fonction barre_score 8. Compléter, dans le fichier module_lab2.py, la ligne 29 permettant d’afficher les données de jeu. 9. Tester le fonctionnement du programme. TP5 Python : Nombres aléatoires et dictionnaires Page n°3/3