Factorielle : un premier programme

Voici un embryon non fonctionnel de programme. Il y manque des éléments (à la place des “???”)

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 = 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 :

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

Ce site web utilise des cookies. En utilisant le site Web, vous acceptez le stockage de cookies sur votre ordinateur. Vous reconnaissez également que vous avez lu et compris notre politique de confidentialité. Si vous n'êtes pas d'accord, quittez le site.En savoir plus
  • teaching/progappchim/factorielle-2.txt
  • Dernière modification : 2017/02/24 09:19
  • de villersd