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 :

Afficher des zéros non significatifs.


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Client Solution Developer
    Inscrit en
    Janvier 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Client Solution Developer

    Informations forums :
    Inscription : Janvier 2011
    Messages : 23
    Par défaut Afficher des zéros non significatifs.
    Bonsoir,

    mon problème est dans le titre! En effet, j'aimerais afficher des zéros non significatifs pour un nombre donné. Voici le résumé de mon code dont le but est de créer un code hexadécimal d'une couleur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    bleu, vert, rouge = 255, 0, 0
     
    coulHexa = hex (int(bleu) + int(vert)*256\
                        + int(rouge)*256**2).replace('0x', '#')
     
    print coulHexa
    Le résultat affiché est #ff alors que j'aimerais qu'il soit #0000ff (soit "00" pour vert et "00" pour rouge).
    J'ai bien essayé à l'aide du marqueur "%d" mais il ne permet apparemment pas d'afficher les zéros non significatifs.

    Merci de votre aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    str.zfill()

  3. #3
    Membre averti
    Profil pro
    Client Solution Developer
    Inscrit en
    Janvier 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Client Solution Developer

    Informations forums :
    Inscription : Janvier 2011
    Messages : 23
    Par défaut
    Merci!

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Ce qui donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    R, G, B = 0, 0, 255
     
    coulHexa = '#' + str(hex(R))[2:].zfill(2) + str(hex(G))[2:].zfill(2) + str(hex(B))[2:].zfill(2)
     
    print coulHexa
     
    #0000ff
    Tyrtamos

  5. #5
    Membre très actif
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Par défaut
    Bonsoir,
    Comme l'a dit Josmiley, il faudrait vous servir de "str.zfill(nb_zeros)".
    Par contre, votre méthode de calcul ne permet d'obtenir "#XXXXXXff" (X!=0). En prenant la saturation de chacune des couleurs, on obtiendrais: "#300".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def test(*cols):
        res = '#'
        for col in cols:
            res += hex(col).replace('0x','').zfill(2)
        return res
    @+ et bon code .
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  6. #6
    Membre averti
    Profil pro
    Client Solution Developer
    Inscrit en
    Janvier 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Client Solution Developer

    Informations forums :
    Inscription : Janvier 2011
    Messages : 23
    Par défaut
    Merci pour vos réponses, c'est là que je m'aperçois qu'il y a souvent un code plus concis que le sien, et plus efficace!

    afranck64, à la ligne
    je vois que tu utilises *cols comme argument. Je n'avais jamais vu cette écriture...
    "*" permet à l'utilisateur d'entrer le nombre de paramètres qu'il souhaite et l'rgument "cols" sera un tuple, c'est bien cela?

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    ou encore ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    r,g,b = 0,0,255
    print '#'+hex(r<<16|g<<8|b)[2:].zfill(6)

  8. #8
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Salut josmiley,
    peux-tu expliquer rapidement ton dernier code ?

  9. #9
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    Citation Envoyé par pieral85 Voir le message
    J'ai bien essayé à l'aide du marqueur "%d" mais il ne permet apparemment pas d'afficher les zéros non significatifs.
    Ben si, sauf qu'ici c'est plutôt "%x" qu'il faut utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    r,g,b = 0,0,255
    print "#%06x" % (r<<16 | g<<8 | b)
    print "#%02x%02x%02x" % (r,g,b)   # autre possibilité

  10. #10
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Salut,

    Citation Envoyé par dividee Voir le message
    ici c'est plutôt "%x" qu'il faut utiliser
    Je plussoie. C'est la première idée qui vient à l'esprit quand on vient du C. Ça vient en fait du printf qui signifie print formatted.

    A+

    Pfeuh

  11. #11
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    Citation Envoyé par dividee Voir le message
    Ben si, sauf qu'ici c'est plutôt "%x" qu'il faut utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    r,g,b = 0,0,255
    print "#%06x" % (r<<16 | g<<8 | b)
    print "#%02x%02x%02x" % (r,g,b)   # autre possibilité
    cool ce truc ... faut que je me documente

  12. #12
    Membre très actif
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

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

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

    @pieral85. C est exact. Voici une discussion qui traite du sujet.
    http://www.developpez.net/forums/d10...g/#post5806350

    @Josmiley. Une fois de plus tu as fait fort. Mais la Dividee a carrement cassee la barrack. Je ne savait meme qu on pouvait egalement utiliser le "x"
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  13. #13
    Membre averti
    Profil pro
    Client Solution Developer
    Inscrit en
    Janvier 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Client Solution Developer

    Informations forums :
    Inscription : Janvier 2011
    Messages : 23
    Par défaut
    @ afranck64: merci, je vais lire ça de suite!

    Quelqu'un sait où on peut trouver la liste des marqueurs "%..."? J'ai bien essayé dans la bibliothèque de Python mais mes connaissances d'anglais me limitent assez.

    Merci d'avance.

  14. #14
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    La doc des '%x' est là: http://docs.python.org/library/string.html.

    Tyrtamos

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Enlever les zéros non significatifs
    Par Keke des Iles dans le forum Delphi
    Réponses: 9
    Dernier message: 17/03/2017, 00h02
  2. Réponses: 1
    Dernier message: 03/01/2009, 19h30
  3. Eliminer des zéros non significatifs
    Par maubeuge59 dans le forum Cobol
    Réponses: 16
    Dernier message: 15/01/2008, 23h25
  4. Réponses: 3
    Dernier message: 11/05/2007, 14h13
  5. Réponses: 3
    Dernier message: 12/09/2006, 12h53

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