Produit des entiers successifs
Exercice
Compléter la fonction factorielle
répondant à la spécification donnée dans la chaîne de documentation.
def factorielle(n):
"""Signature factorielle(n:int)->int
Précondition : n >= 0
Postcondition :
renvoie 1 si n == 0 ou le produit
des entiers successifs entre 1 et n
"""
#précondition
assert n >= 0
#à compléter
def factorielle(n): bksl-nl """Signature factorielle(n:int)->intbksl-nl Précondition : n >= 0bksl-nl Postcondition : bksl-nl renvoie 1 si n == 0 ou le produit bksl-nl des entiers successifs entre 1 et n bksl-nl """ bksl-nl #préconditionbksl-nl assert n >= 0bksl-nl #à compléterbksl-nlbksl-nl# Solution 1bksl-nlbksl-nldef factorielle(n): bksl-nl """Signature factorielle(n:int)->intbksl-nl Précondition : n >= 0bksl-nl Postcondition : bksl-nl renvoie 1 si n == 0 ou le produit bksl-nl des entiers successifs entre 1 et n bksl-nl """ bksl-nl #préconditionbksl-nl assert n >= 0bksl-nl p = 1bksl-nl for k in range(2, n + 1):bksl-nl p = p py-str kbksl-nl return pbksl-nlbksl-nl# Solution 2 (Paradigme fonctionnel niveau terminale)bksl-nlfrom functools import reduce bksl-nlbksl-nldef produit(x, y):bksl-nl return x py-str ybksl-nlbksl-nldef factorielle2(n):bksl-nl assert n >= 0bksl-nl return reduce(produit, range(1, n + 1), 1)bksl-nlbksl-nlbksl-nl
A
Z