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