
Voici à présent le code permettant de déclarer une fonction, dont les instructions
reprennent en grande partie celles du programme précédent.
# chargement des fonctions seed et randint du module random
from random import seed,randint
# chargement de la fonction time permettant de mesurer le temps
from time import time
def jeu(n) :
"""L’utilisateur propose un entier n, puis doit deviner le
nombre entre 1 et n choisi par l’ordinateur ;
la fonction retournera alors la durée de la partie."""
seed() # initialisation du générateur pseudo-aléatoire
inconnue=randint(1,n)
# On relève l’instant de début de partie
debut=time()
# Début du jeu
b=int(input("Devinez le nombre entre 1 et l’entier que vous
avez proposé \n ")
# Le jeu se poursuit tant que le nombre n’est pas trouvé
while b != inconnue :
if b < inconnue :
b=int(input("Pas de chance ! Le nombre à trouver est
plus grand ...\n Choisissez un nombre plus grand : "))
else :
b=int(input("Pas de chance ! Le nombre à trouver est
plus petit ...\n Choisissez un nombre plus petit : "))
# Lorsque le bon nombre est trouvé, c’est gagné !
print("Bingo ! Le nombre à deviner était bien ",inconnue)
# On relève l’instant de fin de partie
fin=time()
# La fonction retourne alors la durée de la partie
return fin-debut
,→Comment utiliser cette fonction ?
Une fois cette fonction écrite dans le shell d’IDLE, il suffit d’exécuter la
commande jeu(n), où nest un entier que l’on choisira.
Remarques :
1. Si les instructions sont, en grande partie, les mêmes que dans le précédent pro-
gramme, la mise en forme est différente : on propose ici une fonction, qui retourne
un résultat (la durée du jeu).
On remarque que les instructions qui suivent la première ligne – qui permet de
définir la fonction jeu – sont toutes indentées.
2. Comme lors de l’écriture d’un programme, des commentaires peuvent figurer au
niveau de chaque ligne où on l’estime utile.
Ici, la première ligne de commentaire, qui apparaît après la décla-
ration de la fonction def jeu(n) : joue un rôle remarquable. En
effet, le texte qui y figure est écrit à l’utilisateur lorsqu’il demande
l’aide à propos de la fonction jeu,via la commande help(jeu).
2 Quelques petites fonctions autour de la moyenne
1. Ecrire une fonction moyenne1 ayant pour paramètre trois réels x,yet zdonnés,
et retournant la moyenne arithmétique de ces trois réels.
2. Ecrire une fonction moyenne2 ayant pour paramètre une liste Lcontenant des
réels, et retournant la moyenne arithmétique des réels figurant dans cette liste.
Pour cela, on n’oubliera pas que les éléments d’une liste Lde longueur nsont
nommés L[0],L[1], ..., L[n-1].
En outre, la syntaxe for iin range(n) : pourra être utile.
3. On cherche à calculer la moyenne d’une liste de réels, chacun devant être pon-
déré par un coefficient donné. Pour cela, on regroupe les réels dans une liste
Let les coefficients dans une liste C, les listes Let Cayant le même nombre
d’éléments.
Ecrire une fonction moyenne3 ayant pour paramètres deux listes Let Cde même
longueur contenant des réels (ceux de Cétant tous strictement positifs), et re-
tournant la moyenne arithmétique des réels figurant dans la liste Lpondérés par
les coefficients de la liste C, comme indiqué précédemment.
3 Et pour quelques dollars de plus...
1. Modifier le premier programme pour qu’il affiche, en fin de partie, la durée
moyenne d’un coup du joueur.
2. Modifier le premier programme pour qu’il affiche, en fin de partie, la liste des
nombres proposés par le joueur.
On pourra commencer par regarder les effets, sur la variable L, de la succession
d’instructions : L=[],L=L+[3.0],L=L+[-7]...
3. Modifier le programme précédent pour qu’il affiche, en fin de partie, la moyenne
des nombres proposés par le joueur.
Et pour les plus rapides...
Ecrire une fonction ayant pour paramètre un nombre entier entre 1 et 100, pro-
grammant la recherche de ce nombre par l’ordinateur, et retournant le nombre de
coups joués par l’ordinateur pour trouver le nombre.