Algorithmes et structures de données : TD 8 (sur machine) corrigé

Universit´e Bordeaux 2 Licence 1er semestre (2007/2008)
Algorithmes et structures de donn´ees : TD 8 (sur machine)
corrig´e
Entr´ee de l’utilisateur - chaˆınes de caract`eres - listes - nombres al´eatoires
Pour utiliser des nombres al´eatoires, vous devez importer la biblioth`eque random une
fois, en tout d´ebut du programme !
import random
#...
a = random.randint(1,6) # un nombre al´eatoirea entre 1 et 6
Exercice 8.1 R´epertoires de travail
1. Ouvrir un Explorateur Windows (soit par combinaison touche <Windows>- e, ou bien
D´emarrer - Programmes - Accessoires - Explorateur Windows.
2. electionner le lecteur logique Z. Dans ce lecteur, cr´eer un r´epertoire (dossier) s’appelant
ASD. Choisisser le epertoire ASD comme r´epertoire courant, et dans ce r´epertoire, cr´eer un
autre r´epertoire s’appelant TD8.
Exercice 8.2 Entr´ee du clavier
1. Ecrire un programme en python qui demande `a l’utilisateur son pr´enom, et qui affiche un
texte de bienvenu personnalis´e (par exemple, Bonjour Anna).
2. Afficher `a l’´ecran le nombre de caract`eres dans le pr´enom renseign´e.
print "Entrez votre pr´enom : ",
prenom = raw_input();
print "Bonjour ",prenom
print
nombre = len(prenom)
print "Votre pr´enom a ", nombre, " caract`eres."
Exercice 8.3 Listes et nombre al´eatoires I
1. Ecrire un programme en python qui g´en`ere un nombre entier al´eatoire entre 0 et 6.
import random
aleatoire = random.randint(0,6)
print "Le nombre al´eatoire est ",aleatoire
2. Ecrire un programme en python qui g´en`ere un jour de semaine al´eatoire (lundi, mardi, ..).
import random
aleatoire = random.randint(0,6)
print "Le nombre al´eatoire est ",aleatoire
jourDeLaSemaine = ["lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche"]
jourAleatoire = jourDeLaSemaine[aleatoire]
print "Un jour de semaine al´eatoire :",jourAleatoire
Exercice 8.4 Listes et nombre al´eatoires II
1. Ecrire un programme en python qui simule une lanc´ee d’un jeu de 5 d´es (donc une liste
de 5 ´el´ements de nombres al´eatoires entre 1 et 6).
2. Afficher la lanc´ee des 5 d´es
3. D´eterminer le d´e avec la plus grand valeur.
import random
lancee = [0,0,0,0,0]
i = 0
while (i<5):
des = random.randint(1,6)
lancee[i] = des
i = i + 1
print "La lanc´ee est ", lancee
plusGrandeValeur = 0
plusGrandDe = 0
i = 0
while (i<5):
if lancee[i] > plusGrandeValeur:
plusGrandeValeur = lancee[i]
plusGrandDe = i
i = i + 1
print "Le d´e num´ero ",plusGrandDe," porte la plus grande valeur : ",plusGrandeValeur
2
Exercice 8.5 Jeu de nombres al´eatoires
Dans cet exercice, utiliser input au lieu de raw input pour les entr´ees d’utilisateur, car
il s’agit de nombre entiers.
1. Ecrire un programme en python qui g´en`ere deux nombres entiers al´eatoires entre 1 et 100,
un pour l’ordinateur, stock´e dans la variable ordinateur, et un pour le joueur, stock´e dans
la variable joueur. Afficher les nombres al´eatoires pour l’ordinateur, et pour le joueur. Le
gagnant du jeu est celui avec le plus grand nombre. eterminer et afficher le gagnant !
nombreOrdinateur = random.randint(1,100)
nombreJoueur = random.randint(1,100)
print "le nombre de l’ordinateur :",nombreOrdinateur
print "le nombre du joueur :",nombreJoueur
if (nombreOrdinateur > nombreJoueur):
print "L’ordinateur a gage !"
elif (nombreOrdinateur < nombreJoueur):
print "Le joueur a gagn´e !"
else:
print "Egalit´e !"
2. A la fin du jeu, demander `a l’utilisateur s’il veut rejouer (Utiliser une boucle qui imbrique
le jeu entier !).
import random
rejouer = "o"
while rejouer == "o":
nombreOrdinateur = random.randint(1,100)
nombreJoueur = random.randint(1,100)
print "le nombre de l’ordinateur :",nombreOrdinateur
print "le nombre du joueur :",nombreJoueur
if (nombreOrdinateur > nombreJoueur):
print "L’ordinateur a gage !"
elif (nombreOrdinateur < nombreJoueur):
print "Le joueur a gagn´e !"
else:
print "Egalit´e !"
print "Voulez-vous rejouer (o/n) ?"
rejouer = raw_input()
print "au revoir!"
Exercice 8.6 Devinette
Dans cet exercice, utiliser input au lieu de raw input pour les entr´ees d’utilisateur, car
il s’agit de nombre entiers.
3
1. Ecrire un programme en python qui en`ere un nombre entier al´eatoire entre 1 et 20, et
stocker le dans la variable solution. Demander `a l’utilisateur de deviner le nombre al´eatoire
jusqu’`a il le trouve. Compter le nombre d’essais que l’utilisateur a eu besoin. A la fin du
programme, afficher le texte ”F´elicitations”, suivi par le nombre d’essais.
import random
essai = 0
deviner = 0
nombre = random.randint(1,20)
while deviner != nombre:
print "Entrer un nombre :"
deviner = input()
essai = essai + 1
print "F´elicitations ! Vous avez troue le nombre en ",essai," essais"
2. Modifier le devinette de l’exercice pr´ec´edent pour qu’apr`es chaque essai mauvais du joueur,
le programme renseigne le joueur si le nombre `a trouver est plus grand (”le nombre est plus
grand”), ou si le nombre `a trouver est plus petit (”le nombre est plus petit”). Comme dans
l’exercice pr´ec´edent, afficher le texte ”F´elicitations”, suivi par le nombre d’essais.
import random
essai = 0
deviner = 0
nombre = random.randint(1,20)
while deviner != nombre:
print "Entrer un nombre :"
deviner = input()
if (deviner > nombre):
print "le nombre est plus petit"
elif (deviner < nombre):
print "le nombre est plus grand"
essai = essai + 1
print "F´elicitations ! Vous avez troue le nombre en ",essai," essais"
3. Laquelle des exercice pr´ec´edent permet `a l’utilisateur de trouver le nombre en moins
d’essais ?
La deuxi`eme, bien sˆur
4. Combien d’essai faut-il au pire dans l’execice 1 et dans l’exercice 2, respectivement, en
appliquant une bonne strat´egie.
5. Pour un nombre entier al´eatoire entre 1 et n, quel est l’esp´erance pour le nombre d’essais
dans l’exercice 1 ? Quel est l’esp´erance pour l’exercice 2 en appliquant une bonne strat´egie ?
Exercice 8.7 TD pr´ec´edents
4
1. Pour un contrˆole de connaissances, traduire les algorithmes de tous les eances TD pr´ec´edentes
en python !
5
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !