TP⚓︎
Exercice 1 : Échauffement : tirage de pièce
On veut écrire un programme permettant de tirer à pile ou face.
-
Recopier et executer le code suivant:
from random import randint nombre = randint(1, 6) print(nombre)
Au début du programme, la ligne
from random import randint
permet d'utiliser dans la suite la fonctionrandint(a, b)
, qui renvoie un nombre entier aléatoire compris entrea
etb
. -
Ecrire la fonction
tirer_piece
qui tire aléatoirement un nombre compris entre 0 et 1 et renvoie'pile'
si le nombre est 1,'face'
sinon.La tester avec plusieurs appels:
print(tirer_piece()) print(tirer_piece()) print(tirer_piece())
Exercice 2 : Jeu de division
On souhaite écrire un petit programme d'entraînement mathématique demandant à l'utilisateur si un certain nombre à trois chiffres est divisible par un entier compris entre 2 et 9. Le programme doit poser des questions du type :
Le nombre 345 est-il divisible par 3 ? [o/n]
L'utilisateur doit ensuite taper o
ou n
, le programme vérifie sa réponse et affiche un message (Bravo !
ou Perdu !
par exemple).
-
Créer un fonction
valeurs_question
qui n'a aucun paramètre et qui renvoie:- un nombre à trois chiffres au hasard (il sera le dividende)
- un nombre au hasard compris entre 2 et 9 (il sera le diviseur)
On utilisera pour cela la fonction
randint
, comme dans l'exercice précédent.Exemple:
>>> valeurs_question() (100, 5) >>> valeurs_question() (121, 2)
-
Créer un fonction
reponse(dividende, diviseur)
qui prend un paramètre deux entiers et qui renvoieTrue
sidiviseur
divisedividende
,False
sinon.Exemple:
>>> reponse(100, 5) True >>> reponse(100, 6) False
-
Créer la fonction
analyse(reponse, bonne_reponse)
qui prend en paramètres deux entiers et qui renvoient:Bravo
sireponse
est 'o' et quebonne_reponse
est True ou quereponse
est 'n' et quebonne_reponse
est False .Perdu
dans les cas contraires.
Exemple:
>>> analyse('o', True) 'Bravo' >>> reponse('o', False) 'Perdu'
-
Réaliser le programme qui réalisera les actions suivantes:
- tirer un dividende et un diviseur au hasard
- calculer la bonne reponse
- demander sa réponse à l'utilisateur
- analyser la réponse
- afficher le message
Bravo !
,Perdu !
Exercice 3 : Rectangles
On souhaite réaliser un programme graphique qui permet à un utilisateur de dessiner deux rectangles (dont les bords sont parallèles au cadre de la fenêtre), et de déterminer si ces rectangles sont disjoints, inclus l'un dans l'autre ou se recouvrent partiellement.

-
Récupérer les fichiers
rectangles.py
etdavistk.py
et les placer dans votre répertoire de travail. Vous ne travaillerez que sur le fichierrectangles.py
. L’autre fichier fournit la bibliothèque graphiquedavistk.py
rectangles.py
à l’aide de la ligne :from davistk import *
Ouvrir le fichier
rectangles.py
dans votre éditeur, l'exécuter et cliquer plusieurs fois sur la fenêtre graphique qui s'ouvre, puis fermer la fenêtre. -
Dans la fenêtre graphique (contrairement à un repère cartésien habituel), le point de coordonnées \((0, 0)\) est tout en haut et à gauche, et le point de coordonnées \((599, 599)\) tout en bas à droite.
Pour faciliter la suite du travail, modifier les variables
x1
ety1
afin qu'elles représentent les coordonnées du coin en haut à gauche du rectangle bleu, etx2
ety2
afin qu'elles représentent les coordonnées du coin en bas à droite du rectangle bleu.Procéder de même pour le rectangle rouge et les variables
x3
,y3
,x4
ety4
. -
Écrire une expression booléenne permettant de déterminer si les deux rectangles sont (strictement) disjoints, c'est à dire n'ont aucun point en commun, et la tester dans l'interpréteur.
-
Écrire une expression booléenne permettant de déterminer si le rectangle rouge est entièrement inclus dans le rectangle bleu, et la tester dans l'interpréteur.
-
Écrire une expression booléenne permettant de déterminer si le rectangle bleu est entièrement inclus dans le rectangle rouge, et la tester dans l'interpréteur.
-
Combiner l'ensemble afin d'afficher sur la fenêtre l'un des messages suivants :
Disjoints
si les deux rectangles n'ont aucun point en commun ;Recouvrement total
si l'un des deux rectangles est entièrement inclus dans l'autre ;Recouvrement partiel
dans les autres cas.
On utilisera la fonction
texte
, dont un exemple d'appel est donné dans le programme fourni.