Compter le nombre de zéro à la fin d'un nombre
Résolu
Bonjour,
Je dois calculer le nombre de zéro à a fin d'une valeur issue de la fonction factorielle. Cependant j'ai une erreur pour certaine valeur, ce que je n'arrive pas à comprendre. Par exemple, pour 23!, il compte 1 zéro alors qu'il y en a 4.
Voici le programme en question:
Merci d'avance.
Je dois calculer le nombre de zéro à a fin d'une valeur issue de la fonction factorielle. Cependant j'ai une erreur pour certaine valeur, ce que je n'arrive pas à comprendre. Par exemple, pour 23!, il compte 1 zéro alors qu'il y en a 4.
Voici le programme en question:
def facto(n): if n==0: return 1 else: return n*facto(n-1) def zero(n): nbre=facto(n) zero=0 while nbre!=0: if nbre%10==0: zero=zero+1 nbre=nbre/10 return(zero)
Merci d'avance.
Configuration: Windows / Chrome 89.0.4389.114
A voir également:
- Factorielle de zero
- Remettre a zero un pc - Guide
- Comment remettre un iphone à zéro - Guide
- Remettre un pc a zero sans mot de passe - Guide
- Remise a zero chromecast - Guide
- Comment mettre un zero devant un chiffre sur excel - Guide
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
1) utilise les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
2) ajoute des print() dans ton code, afin de comprendre ce qu'il fait.
1) utilise les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
2) ajoute des print() dans ton code, afin de comprendre ce qu'il fait.
Bonjour,
Comme le dit yg_be, l'opérateur
Note que la fonction factorielle est disponible de base en python :
Une approche peu élégante mais qui marche consiste à transformer le résultat de
Bonne chance
Comme le dit yg_be, l'opérateur
/ne calcule pas une division entière en python3 (contrairement à python2), donc je suppose que tu voulais utiliser l'opérateur
//.
Note que la fonction factorielle est disponible de base en python :
from math import factorial print(factorial(23))
Une approche peu élégante mais qui marche consiste à transformer le résultat de
facto(n)sous forme de chaine, de récupérer sa longueur, puis de supprimer tous les 0 à droite de cette chaîne (e.g. avec la méthode
rstrip)
s = str(facto(23)) print(len(s) - len(s.rstrip("0")))
Bonne chance