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

publicité
Université Bordeaux 2
Licence 1er semestre (2007/2008)
Algorithmes et structures de données : TD 8 (sur machine)
corrigé
Entrée de l’utilisateur - chaı̂nes de caractères - listes - nombres aléatoires
Pour utiliser des nombres aléatoires, vous devez importer la bibliothèque random une
fois, en tout début du programme !
import random
#...
a = random.randint(1,6) # un nombre aléatoirea entre 1 et 6
Exercice 8.1 Répertoires de travail
1. Ouvrir un Explorateur Windows (soit par combinaison touche <Windows> - e, ou bien
Démarrer - Programmes - Accessoires - Explorateur Windows.
2. Sélectionner le lecteur logique Z. Dans ce lecteur, créer un répertoire (dossier) s’appelant
ASD. Choisisser le répertoire ASD comme répertoire courant, et dans ce répertoire, créer un
autre répertoire s’appelant TD8.
Exercice 8.2 Entrée du clavier
1. Ecrire un programme en python qui demande à l’utilisateur son prénom, et qui affiche un
texte de bienvenu personnalisé (par exemple, Bonjour Anna).
2. Afficher à l’écran le nombre de caractères dans le prénom renseigné.
print "Entrez votre prénom : ",
prenom = raw_input();
print "Bonjour ",prenom
print
nombre = len(prenom)
print "Votre prénom a ", nombre, " caractères."
Exercice 8.3 Listes et nombre aléatoires I
1. Ecrire un programme en python qui génère un nombre entier aléatoire entre 0 et 6.
import random
aleatoire = random.randint(0,6)
print "Le nombre aléatoire est ",aleatoire
2. Ecrire un programme en python qui génère un jour de semaine aléatoire (lundi, mardi, ..).
import random
aleatoire = random.randint(0,6)
print "Le nombre aléatoire est ",aleatoire
jourDeLaSemaine = ["lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche"]
jourAleatoire = jourDeLaSemaine[aleatoire]
print "Un jour de semaine aléatoire :",jourAleatoire
Exercice 8.4 Listes et nombre aléatoires II
1.
de
2.
3.
Ecrire un programme en python qui simule une lancée d’un jeu de 5 dés (donc une liste
5 éléments de nombres aléatoires entre 1 et 6).
Afficher la lancée des 5 dés
Déterminer le dé 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ée 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é numéro ",plusGrandDe," porte la plus grande valeur : ",plusGrandeValeur
2
Exercice 8.5 Jeu de nombres aléatoires
Dans cet exercice, utiliser input au lieu de raw input pour les entrées d’utilisateur, car
il s’agit de nombre entiers.
1. Ecrire un programme en python qui génère deux nombres entiers aléatoires entre 1 et 100,
un pour l’ordinateur, stocké dans la variable ordinateur, et un pour le joueur, stocké dans
la variable joueur. Afficher les nombres aléatoires pour l’ordinateur, et pour le joueur. Le
gagnant du jeu est celui avec le plus grand nombre. Déterminer 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 gagné !"
elif (nombreOrdinateur < nombreJoueur):
print "Le joueur a gagné !"
else:
print "Egalité !"
2. A la fin du jeu, demander à 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 gagné !"
elif (nombreOrdinateur < nombreJoueur):
print "Le joueur a gagné !"
else:
print "Egalité !"
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ées d’utilisateur, car
il s’agit de nombre entiers.
3
1. Ecrire un programme en python qui génère un nombre entier aléatoire entre 1 et 20, et
stocker le dans la variable solution. Demander à l’utilisateur de deviner le nombre aléatoire
jusqu’à il le trouve. Compter le nombre d’essais que l’utilisateur a eu besoin. A la fin du
programme, afficher le texte ”Félicitations”, 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élicitations ! Vous avez trouvé le nombre en ",essai," essais"
2. Modifier le devinette de l’exercice précédent pour qu’après chaque essai mauvais du joueur,
le programme renseigne le joueur si le nombre à trouver est plus grand (”le nombre est plus
grand”), ou si le nombre à trouver est plus petit (”le nombre est plus petit”). Comme dans
l’exercice précédent, afficher le texte ”Félicitations”, 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élicitations ! Vous avez trouvé le nombre en ",essai," essais"
3. Laquelle des exercice précédent permet à l’utilisateur de trouver le nombre en moins
d’essais ?
La deuxième, bien sûr
4. Combien d’essai faut-il au pire dans l’execice 1 et dans l’exercice 2, respectivement, en
appliquant une bonne stratégie.
5. Pour un nombre entier aléatoire entre 1 et n, quel est l’espérance pour le nombre d’essais
dans l’exercice 1 ? Quel est l’espérance pour l’exercice 2 en appliquant une bonne stratégie ?
Exercice 8.7 TD précédents
4
1. Pour un contrôle de connaissances, traduire les algorithmes de tous les séances TD précédentes
en python !
5
Téléchargement