====== 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 !]]