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 :

Décimal vers Héxadécimal python


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    eleve
    Inscrit en
    Novembre 2020
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : eleve

    Informations forums :
    Inscription : Novembre 2020
    Messages : 31
    Par défaut Décimal vers Héxadécimal python
    Bonjour ! Aujourd'hui je devais dans un certain contexte codé un programme permettant de traduire un nombre décimal en hexadécimal, j'étais parti sur quelque chose de ce genre, vous en pensez quoi ? (le but est de le faire sans fonctions externes)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def hexa(decimal):
      decimal = int(input("Enter un nombre au dessous de 256: "))
      hex1 = decimal // 16
     
      if hex1 >= 10:
          hex1 = hex(decimal)
     
      hex2 = decimal % 16
      if hex2 >= 10:
          hex2 = hex(hex2)

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 050
    Par défaut
    Bonjour,


    • La ligne 2 ne sert à rien
    • La fonction ne retourne pas de résultat
    • La fonction n'est pas utilisée
    • L'algorithme n'est pas correcte
    • hex est une fonction externe


    Le code n'est pas testable !

  3. #3
    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,

    C'est dommage d'utiliser la fonction hex pour faire ce calcul puisqu'il s'agit d'une fonction interdite dans ton cas. Il vaut mieux faire ça:
    ch = "0123456789ABCDEF"
    Ainsi, on pourra convertir un nombre n<16 comme: ch[n]. Par exemple si n=15, alors ch[n] donnera "F"

    Si tu crées une fonction avec def, il ne faut pas mettre le "input" dedans, mais transmettre son résultat comme argument de la fonction. Et retourner le résultat du calcul à la fin de la fonction par "return".

    Enfin, il ne faut pas utiliser comme nom de variable des mots déjà utilisés dans Python: "decimal" est un nom de module.

    Voilà un petit code qui n'est valable que pour un nombre < 256, mais qui fait apparaître la logique du calcul et qui pourra facilement être étendue à des nombres >= 256 en ajoutant une boucle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    def dec2hex(d):
        """conversion nombre entier => nombre hexadécimal pour d<256
        """
     
        ch = "0123456789ABCDEF"
     
        h = ""
     
        r = d % 16 # r (reste): sera toujours < 16 
        h = ch[r] + h
     
        q = d // 16 # q (quotient): sera <16 si d<256
        h = ch[q] + h 
     
        return h
     
    d = int(input("Enter un nombre au dessous de 256: "))
    print(dec2hex(d))

  4. #4
    Membre averti
    Homme Profil pro
    eleve
    Inscrit en
    Novembre 2020
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : eleve

    Informations forums :
    Inscription : Novembre 2020
    Messages : 31
    Par défaut
    Bonjour,

    Merci de m'avoir aidé, l'input je le mets à l'intérieur car je voudrai créer une fonction qui appellerai toutes les autres fonctions de conversion alors je dois entrer une valeur que lorsque la variable est appelée, aussi j'aimerait savoir comment se présenterait l'inverse de ce programme, d'hexadécimal à décimal, merci d'avance pour votre réponse !

Discussions similaires

  1. conversion décimal vers flottant
    Par ben83 dans le forum Programmation système
    Réponses: 0
    Dernier message: 29/12/2011, 18h11
  2. vecteur C vers liste Python
    Par jyjeanphi dans le forum Interfaçage autre langage
    Réponses: 4
    Dernier message: 30/03/2009, 05h01
  3. Réponses: 3
    Dernier message: 08/03/2009, 10h50
  4. [Conversion] Décimal vers caractère (Ascii)
    Par Hokage dans le forum Débuter
    Réponses: 2
    Dernier message: 01/10/2007, 11h39

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