Aide Python : fonction factorielle qui retourne None
Résolu/Fermé
Rica
-
Modifié le 4 mai 2021 à 23:43
mamiemando Messages postés 33357 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 novembre 2024 - 5 mai 2021 à 00:11
mamiemando Messages postés 33357 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 novembre 2024 - 5 mai 2021 à 00:11
A voir également:
- Aide Python : fonction factorielle qui retourne None
- Citizen code python - Accueil - Outils
- Trouver la position d'un élément dans une liste python ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- [PyCharm] Pas d'interpréteur python ✓ - Forum Python
1 réponse
mamiemando
Messages postés
33357
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
14 novembre 2024
7 799
Modifié le 4 mai 2021 à 23:46
Modifié le 4 mai 2021 à 23:46
Bonjour,
Si ton programme ne rentre pas dans la boucle
Donc dans l'esprit ton code devrait plutôt ressembler à :
Après, tu peux l'écrire plus simplement :
Personnellement, j'écrirais tout simplement :
D'autres version sont envisageables, par exemple
... sous forme récursive :
... en
... ou plus alambiqué, en map/reduce :
Bonne chance
Si ton programme ne rentre pas dans la boucle
while(ce qui est le cas pour toute valeur de
nsupérieure ou égale à 1) de la fonction
factorielle, alors l'instruction
return Wn'est jamais atteinte et par défaut, python quitte la fonction factorielle en retournant
None.
Donc dans l'esprit ton code devrait plutôt ressembler à :
#!/usr/bin/env python3 def factorielle(n): produit = 1 i = 1 while i <= n: produit *= i # ou : produit = produit * i i += 1 # ou : i = i + 1 return produit n = int(input("Entrez un nombre N : ")) print(f"Votre nombre {n} factorielle est {factorielle(n)}.")
Après, tu peux l'écrire plus simplement :
#!/usr/bin/env python3 def factorielle(n): produit = 1 for i in range(1, n + 1): produit *= i return produit n = int(input("Entrez un nombre N : ")) print(f"Votre nombre {n} factorielle est {factorielle(n)}.")
Personnellement, j'écrirais tout simplement :
#!/usr/bin/env python3 import math n = int(input("Entrez un nombre N : ")) f = math.factorial(n) print(f"Votre nombre {n} factorielle est {f}.")
D'autres version sont envisageables, par exemple
... sous forme récursive :
#!/usr/bin/env python3 from functools import reduce def factorielle(n): assert n > 0 return ( 1 if n == 0 or n == 1 else n * factorielle(n - 1) ) n = int(input("Entrez un nombre N : ")) f = factorielle(n) print(f"Votre nombre {n} factorielle est {f}.")
... en
numpy:
#!/usr/bin/env python3 import numpy as np n = int(input("Entrez un nombre N : ")) f = np.prod([i for i in range(1, n + 1)]) print(f"Votre nombre {n} factorielle est {f}.")
... ou plus alambiqué, en map/reduce :
#!/usr/bin/env python3 from functools import reduce n = int(input("Entrez un nombre N : ")) f = reduce( lambda x, y: x * y, (i for i in range(1, n + 1)) ) print(f"Votre nombre {n} factorielle est {f}.")
Bonne chance
Modifié le 5 mai 2021 à 00:04
5 mai 2021 à 00:11