Nombres et chiffres
Jean-PierreBoudine
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
Jean-PierreBoudine Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Jean-PierreBoudine Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite, en partant d'un nombre entier N, faire le produit de ses chiffres, et recommencer tant que le résultat comporte plus d'un chiffre (le nombre d'étapes est la "persistance" de l'entier). Je commence par écrire N sous la forme de la liste de ses chiffres et j'ai facilement le produit
li=[9,9,9]
def prod(li) :
p=1
for k in li:
p*=k
return p
print prod(li)
Mais maintenant, j'ai un nombre, pas la liste dont j'ai besoin pour itérer.
D'où ma question : y a-t-il un code pour passer du nombre abcd à la liste [a,b,c,d] ?
Merci d'avance. JP
Je souhaite, en partant d'un nombre entier N, faire le produit de ses chiffres, et recommencer tant que le résultat comporte plus d'un chiffre (le nombre d'étapes est la "persistance" de l'entier). Je commence par écrire N sous la forme de la liste de ses chiffres et j'ai facilement le produit
li=[9,9,9]
def prod(li) :
p=1
for k in li:
p*=k
return p
print prod(li)
Mais maintenant, j'ai un nombre, pas la liste dont j'ai besoin pour itérer.
D'où ma question : y a-t-il un code pour passer du nombre abcd à la liste [a,b,c,d] ?
Merci d'avance. JP
A voir également:
- Nombre de chiffres d'un entier python
- Citizen code python avis - Accueil - Outils
- Nombre de jours entre deux dates excel - Guide
- Nombre facile - Télécharger - Outils professionnels
- Tous les code possible de 0 à 9 (4 chiffres ) liste - Forum Jeux vidéo
- Nombre de combinaison possible avec 3 chiffres ✓ - Forum Loisirs / Divertissements
1 réponse
Bonjour.
Oui, tu peux transformer ton nombre en liste de chiffres.
Il faut d'abord convertir le nombre en chaîne de caractères.
Ensuite appliquer list dessus.
On obtient alors une liste de chaînes de caractères.
Comme tu travailles sur des entiers, il faut retransformer les éléments en entier, il est inutile de convertir la chaîne en liste, car les chaînes sont itérables.
En python, il y a les compréhensions de listes qui permettent de faire cela en une ligne.
Il n'est pas nécessaire de convertir le générateur en liste, puisque l'usage est unique, et il y a seulement besoin de le parcourir.
Ce qui pourrait donner dans ton cas avec de la récursivité.
PS :
Lorsque tu postes du code sur le forum, il faut utiliser les balises codes, bouton <>.
Oui, tu peux transformer ton nombre en liste de chiffres.
Il faut d'abord convertir le nombre en chaîne de caractères.
p = str(p)
Ensuite appliquer list dessus.
liste = list(str(p))
On obtient alors une liste de chaînes de caractères.
Comme tu travailles sur des entiers, il faut retransformer les éléments en entier, il est inutile de convertir la chaîne en liste, car les chaînes sont itérables.
liste = [] for i in str(p): liste.append(int(i))
En python, il y a les compréhensions de listes qui permettent de faire cela en une ligne.
liste = list(int(i) for i in str(p))
Il n'est pas nécessaire de convertir le générateur en liste, puisque l'usage est unique, et il y a seulement besoin de le parcourir.
genp = (int(i) for i in str(p))
Ce qui pourrait donner dans ton cas avec de la récursivité.
def prod(iterable): p = 1 for k in iterable: p *= k if p > 9: l = (int(n) for n in str(p)) return prod(l) return p li = [9, 9, 9] print(prod(li))
PS :
Lorsque tu postes du code sur le forum, il faut utiliser les balises codes, bouton <>.
prod(999) = 729, prod(729)=126 prod(126) = 12 et pro(12)=2.
999 est de persistance 4.
Bonne nuit !
JP