IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Comment convertir un entier en naturel?


Sujet :

Python

  1. #1
    Membre actif Avatar de bj303931
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 75
    Par défaut Comment convertir un entier en naturel?
    Bonjour, voici une fonction qui convertit un entier en naturel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def int2Nat(value):
    	lst = []
    	while value != 0:	
    		num = int(value / 10) # Pourquoi diviser par 10 ?
    		res = value % 10	#?? Suite de mon interrogement
    		lst.append(res)
    		value = num
    	return lst
    Je ne comprend pas le res, le num...

    Merci, pour vos futurs réponses.

  2. #2
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Bonjour

    un "naturel" en python ... kezako ?

    Et d'ailleurs, à l'évidence, ta fonction retourne une liste ! A l'usage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> int2Nat(123)
    [3, 2, 1]
    >>> int2Nat(123456789)
    [9, 8, 7, 6, 5, 4, 3, 2, 1]
    c'est évident et ça donne même une petite idée de ce que fait cette fonction (très mal nommée ...)

    Faire int(value/10) c'est obtenir le nombre de dizaines de value (le "cast" en int est ici inutile (Python 2 et non python 3)).

    Le modulo value % 10 fournit les unités (le nombre d'unités)

    En mode plus pythonique, ta fonction peut s'écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    >>> int2Nat = lambda value: [int(c) for c in reversed(str(value))]
    >>> 
    >>> int2Nat(123)
    [3, 2, 1]
    >>> int2Nat(123456789)
    [9, 8, 7, 6, 5, 4, 3, 2, 1]
    Bref, cette fonction te renvoie la liste des unités, des dizaines, des centaines, des milliers, des ... (je m'arrête) de l'entier passé en paramètre

    [EDIT] par contre, avec un entier négatif en entrée ... je n'ai pas pensé à regarder. C'est prise de tête (effets de bord autour de zéro, etc ...) !

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Salut,

    Citation Envoyé par bj303931 Voir le message
    Je ne comprend pas le res, le num...

    Merci, pour vos futurs réponses.
    Le système décimal (dit aussi à base 10) et la décomposition d'un nombre en puissance de 10 est quelque chose qui s'apprend dès le CM2...
    Le code Python que vous montrez "automatise" les opérations que vous faisiez alors "à la main".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre actif Avatar de bj303931
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 75
    Par défaut
    Merci, pour vos réponses.

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Tu as divmod qui te retourne les deux nombres directement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    >>> def int2nat(val):
    ...     l = []
    ...     while val > 0:
    ...             val, r = divmod(val, 10)
    ...             l.append(r)
    ...     return l
    ... 
    >>> int2nat(25498)
    [8, 9, 4, 5, 2]
    >>> int2nat(3652365)
    [5, 6, 3, 2, 5, 6, 3]

Discussions similaires

  1. Réponses: 7
    Dernier message: 26/06/2007, 10h36
  2. [C#] Comment convertir un entier en couleur ?
    Par Invité dans le forum C#
    Réponses: 3
    Dernier message: 08/01/2006, 20h52
  3. Réponses: 3
    Dernier message: 28/09/2003, 10h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo