====== Factorielle : un premier programme ======
Voici un embryon non fonctionnel de programme. Il y manque des éléments (à la place des "???")
#! /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 = 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)
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 :
#! /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 = 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)
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 [[http://www.pythontutor.com/visualize.html#code=n%3D5%0Areponse%3D1%0Ai%3D1%0Awhile+i+%3C%3D+n%3A%0A++++reponse+%3D+reponse*i%0A++++i%3Di%2B1%0A%0Aprint+%22La+factorielle+de+%22,n,%22+vaut+%22,reponse%0A&mode=display&origin=opt-frontend.js&cumulative=false&heapPrimitives=false&textReferences=false&py=2&rawInputLstJSON=%5B%5D&curInstr=0|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 [[factorielle-3|à la page suivante !]]