Informatique Générale 1 TD no 2 Objectif(s) Exercice 1 – Un peu de

Transcription

Informatique Générale 1 TD no 2 Objectif(s) Exercice 1 – Un peu de
Université Pierre et Marie Curie
2011-2012
Informatique Générale 1
Travaux Dirigés
TD no 2
Objectif(s)
M Introduction aux propositions conditionnelles
M Utilisation des exceptions
M Introduction à EasyGUI
PARTIE CORRIG ÉE
Exercice 1 – Un peu de calcul mental
Le but de cet exercice est d’écrire un programme calc.py qui demande à l’utilisateur deux entiers, les affiches
et ensuite demande le résultat de la multiplication de ces deux entiers. N’oubliez pas de mettre l’en tête et des
commentaires.
1. Dans un premier temps, il n’est pas demandé de vérifier que le résultat de la multiplication est correct. Écrivez
ce programme et testez-le.
2. Quelles erreurs/exceptions pourraient se produire durant l’exécution de ce programme ?
3. Modifiez ce programme pour qu’il affiche un message d’erreur au lieu de planter.
4. Maintenant on souhaite vérifier que l’utilisateur a répondu le bon résultat et lui afficher un message de félicitation
dans ce cas sinon lui dire qu’il s’est trompé et qu’il peut relancer le programme pour recommencer. Complétez le
programme en ce sens.
Exercice 2 – Un peu de ... de quoi d’abord ?
Ouvrez un terminal et tapez la commande python. Tapez ensuite :
>>>import ramdom
>>>random.randint(1,100)
1. Qu’observez-vous ? Entrez à nouveau la dernière ligne plusieurs fois, que fait cette fonction ?
2. De la même manière que font, à votre avis les commandes random.randint(100,1000), random.randint(1,10).
Vous vérifierez votre intuition à l’aide d’un nombre conséquent de tests.
Exercice 3 – De la chance ?
Créer un programme luck.py qui choisit un nombre entre 1 et 10 aléatoirement et qui demande à l’utilisateur
d’essayer d’en deviner la valeur en un essai, qui affiche ”Bravo vous avez gagne” en cas de réussite et un message
”vous avez perdu, relancez le programme pour tenter votre chance à nouveau” en cas d’échec.
1. Assurez-vous du bon fonctionnement de votre programme.
InfoGen1 - 2012/2013 - TD no 2
2. Quelles erreurs peuvent se produire dans ce programme? Modifiez le pour qu’il affiche un message d’erreur et
quitte au lieu de planter.
3. Modifiez le programme pour dire à l’utilisateur quand il a échoué, si le nombre qu’il cherchait était plus petit ou
plus grand que celui qu’il avait entré.
4. Comment modifier le programme à l’aide de if else pour donner maintenant deux essais à l’utilisateur ?
Exercice 4 – EasyGUI : une interface homme/machine
Ouvrez un terminal et tapez la commande python.
Taper dans la console
>>>import easygui as eg
>>>eg.msgbox("Hello")
>>>reply=eg.buttonbox[("Restez-vous a Paris ce week end ?", choices=["oui","non","je
n’ai pas encore decide"])
>>>print(reply)
>>>reply=eg.ccbox("Voulez vous poursuivre cette operation ?")
>>>print(reply)
>>>reply=eg.choicebox["Quelles serait vos vacances ideales ?",choices=["Soleil et
plages","Ski","Randonnee","Decouverte de capitales europeenne"]]
>>>print(reply)
1. Que contient la variable reply ?
2. Recopiez votre programme luck.py dans un programme luck-easy.py. Remplacez les messages à
l’utilisateur par des messages box de EasyGUI et le choix du nombre par l’utilisateur par une choicebox.
3. Les erreurs qui pouvaient se produire dans la précédente version peuvent-elles encore se produire ? Modifier le
programme en fonction de votre réponse.
PARTIE À RENDRE
Exercice 1 – Billeterie
Le but de cet exercice est d’écrire un programme billeterie.py qui simule un système de billetterie.
1. Dans un premier temps, le programme demande à l’utilisateur combien de billets il désire en tout. Vous traiterez
les erreurs de saisie potentielles et vous quitterez le programme si jamais le nombre de billets est inférieur ou
égal à zéro.
2. Le programme doit ensuite demander combien de billets à demi-tarif l’utilisateur désire, parmi les billets demandés à l’étape précédente. En plus de traiter les erreurs de saisie, vous quitterez le programme si jamais le
nombre de billets demi-tarif n’est pas valide.
3. Compléter votre programme pour afficher un résumé de la commande effectuée. Par exemple, si l’utilisateur a
pris 5 billets dont 3 demi-tarif, le programme devra afficher :
Votre commande :
- 2 billets plein tarif
- 3 billets demi-tarif
La ligne indiquant le nombre de billets demi-tarif ne doit apparaı̂tre que si au moins un billet demi-tarif est
demandé.
4. Pour finir, vous calculerez et afficherez le coût total de la commande, sachant qu’un billet plein tarif coûte 1.8
euros.
c
2011/2012
Polytech’Paris
page 2 sur 3
InfoGen1 - 2012/2013 - TD no 2
Exercice 2 – L’animal mystère
Le but de cet exercice est d’écrire un programme animal.py qui devine l’animal choisi par l’utilisateur en lui
posant des questions auxquelles il doit répondre par oui ou par non. On limitera à la liste suivante les animaux que
l’utilisateur peut choisir : homme, singe, dauphin, poisson et serpent. Les questions qui pourront être posées sont
les suivantes :
• Est ce un mammifère ?
• Est ce qu’il vit dans l’eau ?
• Est ce qu’il peut écrire des programmes informatiques ?
1. Dans un premier temps, proposer à l’utilisateur de choisir un animal à l’aide d’EasyGUI. L’animal choisi doit se
trouver dans la variable animalChoisi.
2. Dans un second temps, demander à l’utilisateur de répondre aux questions proposées jusqu’à ce qu’un seul
animal corresponde à cette description. Pour cela, imbriquer les questions de façon à en poser le moins possible.
Une même question ne doit pas être posée plus d’une fois. A l’issue de cette étape, le nom de l’animal deviné
doit être stocké dans la variable animalDevine.
3. Comparer l’animal choisi par l’utilisateur à celui deviné par le programme et afficher un message comme quoi
l’animal a été deviné correctement par le programme ou bien que l’utilisateur s’est trompé en répondant aux
questions, suivant le cas de figure.
4. Modifier votre code pour afficher le nombre de questions posées, par exemple :
Vous avez pose 2 question(s).
5. Si nécessaire, modifiez votre code afin de deviner l’animal en posant le moins de questions possible. Combien
faut-il poser de questions dans le pire des cas ?
Exercice 3 – QCM
Dans cet exercice, on souhaite écrire un programme qcm.py proposant à l’utilisateur de tester ses connaissances en
Python. Le QCM est constitué des 3 questions suivantes :
• Q1) Combien de bits dans 4 octets ? (Réponses possibles : 16, 32, 64)
• Q2) Comment écrit on A modulo B en Python ? (Réponses possibles : A // B, A mod B, A % B)
• Q3) assert permet de récupérer une exception. (Réponses possibles : Vrai, Faux)
L’utilisateur gagne 2 points pour chaque bonne réponse et perd 1 point pour chaque mauvaise. La note finale ne
pourra pas être plus basse que 0.
1. A l’aide d’EasyGUI, écrivez le programme qcm.py. La note de l’utilisateur sera affichée à la fin.
2. On veut maintenant rajouter la possibilité de ne pas répondre à une question pour ne pas perdre de points.
Ajoutez pour cela une option ”Je ne sais pas” comme réponse possible pour chacune des questions.
3. Suivant la note obtenue par l’utilisateur, affichez une appréciation : ”Bravo !” si la note est de 6, ”Bien.” si elle
est comprise entre 3 et 5 et ”Peut mieux faire” si elle est inférieure à 3.
c
2011/2012
Polytech’Paris
page 3 sur 3