Ceci est une ancienne révision du document !
Factorielle : un premier programme
Voici un embryon non fonctionnel de programme. Il y manque des éléments (à la place des “???”) <sxh python; title : factorielle02-sur_la_piste.py> #! /usr/bin/env python # -*- coding: utf-8 -*- “”“ Calcul de la factorielle d'un nombre Référence : http://fr.wikipedia.org/wiki/Factorielle ”“” # on demande le nombre : print “Calcul de la factorielle de n” chainelue=raw_input(“Que vaut n ? ”) n= int(chainelue) print n
# structure de répétition pour appliquer la définition de la factorielle reponse=1 # la réponse sera dans la variable reponse i=1 # on va commencer par 1 while ??? ⇐ n: # répétition “while” avec une condition à préciser
reponse = ???? #actualisation de reponse i= #incrémenter i
# on affiche la réponse print “La factorielle vaut ”,reponse </sxh>
Un peu de réflexion pour se rendre compte qu'il faut comparer i à n, qu'il faut multiplier reponse par i pour obtenir une nouvelle valeur de reponse, et augmenter i de 1 par l'instruction “i = i + 1”. On propose donc ceci :
<sxh python; title : factorielle03-fonctionnel.py> #! /usr/bin/env python # -*- coding: utf-8 -*- “”“ Calcul de la factorielle d'un nombre Référence : http://fr.wikipedia.org/wiki/Factorielle ”“” # on demande le nombre : print “Calcul de la factorielle de n” chainelue=raw_input(“Que vaut n ? ”) n= int(chainelue) print n
# structure de répétition pour appliquer la définition de la factorielle reponse=1 # la réponse sera dans la variable reponse i=1 # on va commencer par 1 while i ⇐ n: # répétition “while” avec une condition à préciser
reponse = reponse*i #actualisation de reponse i=i+1 #incrémenter i
# on affiche la réponse print “La factorielle vaut ”,reponse </sxh>
Le test du programme indique qu'il fonctionne comme attendu pour toutes les valeurs strictement positives de n, et même pour n=0. Avez-vous compris pourquoi ? Pour bien comprendre le fonctionnement du programme, vous pouvez examiner le fonctionnement d'une version simplifiée à l'aide de pythontutor (vous y préciser n plutôt que de le demander).
Mais avons-nous terminé ? Ce programme a-t-il toutes les caractéristiques d'un code Python utile ?
Non, car il ne fait que la sortie d'une factorielle et nécessite une interaction avec l'utilisateur ! Il faudrait créer une fonction qui renvoie la factorielle d'un nombre passé en argument. De cette manière, la fonction factorielle pourrait être utilisés dans n'importe quelle condition.
Réfléchissez à une solution, et pour vérifier votre travail, allez à la page suivante !