Programme de conversion en Python

Dinette123 Messages postés 4 Statut Membre -  
ElementW Messages postés 5690 Statut Contributeur -
Bonjour,

J'aimerais écrire un programme en python dans le quel nous entrons un nombre entier positif (décimal ou binaire ou hexadécimal) et qui sera convertis en décimal/binaire/hexadécimal.

Soit
entrer un décimal, le convertir en binaire et en hexadécimal
ou
entrer un binaire, le convertir en décimal et en hexadécimal
ou
entrer un hexadécimal, le convertir en décimal et binaire.

Je suis débutante en programmation, et je dois avouer que ce programme me prend vraiment la tête et donc que j'ai envie de trouver la solution.

Merci à ceux qui prendront le temps de m'aider

1 réponse

  1. ElementW Messages postés 5690 Statut Contributeur 1 293
     
    Salut, je vais pas faire l'exo à ta place mais te donner quelques pistes:
    En premier lieu il faut que l'utilisateur précise la base du chiffre (10, 2 ou 16):
    1101001 est un nombre binaire mais aussi décimal et hexadécimal, et on ne peut pas détecter tout seul de quelle base il s'agit.

    À partir d'un string, on peut avoir un int selon une base:
    nombre = int(string, base)
    où, dans ce cas, base vaudra 10, 2 ou 16 selon le choix de l'utilisateur.
    Et dans l'autre sens,
    format(nombre, format)
    peut te convertir les nombres selon format:
    - 'b', binaire
    - 'o', octal
    - 'd', décimal
    - 'h', hexadecimal
    5
    1. Dinette123 Messages postés 4 Statut Membre
       
      Je comprends ce que tu me dis.

      J'aimerais faire une base téléphonique, si on veut ça, on tape ça. Forcément, j'ai une idée en français, mais la traduction est très compliquée.

      Entrer un nombre, donner la base de ce nombre, puis demander à ce qu'il soit convertis dans les deux autres bases. Mais j'ai vraiment pas le début, est ce que je devrais utiliser une fonction? Ou peut être que c'est inutile ? Je commence par définir mes bases ? Quelle est l'utilité d'un string ? (la programmation est nouvelle depuis quelques semaines, c'est un choix que je regrette au jour d'aujourd'hui car les débuts sont vraiment difficiles...)
      J'espère que tu accepteras de m'aider encore un peu. En tout cas, merci !
      0
    2. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      "est ce que je devrais utiliser une fonction": pour l'entrée utilisateur? Sur Python 2.x il faut se servir de
      raw_input
      et sur 3.x,
      input
      .
      "définir mes bases": c'est pas obligatoire, ça peut s'écrire directement dans le code, mais comme Python aime le joli code, on peut utiliser un dictionnaire pour
      format
      :
      bases = {2: 'b', 10: 'd', 16: 'h'}
      , peut-être que tu t'en serviras (ou pas, ça dépend comment tu implémentes ton programme)
      "utilité d'un string": string veut dire chaîne, en l'occurence c'est une chaîne de caractères, comme ça par exemple:
      "Bonjour je suis une chaîne"
      0
    3. Dinette123 Messages postés 4 Statut Membre
       
      Merci beaucoup

      OK pour input et string, un peu de mal à remettre chaque utilité.

      Est ce que tu pourrais m'aider pour le point de départ, s'il te plait ? Car je ne pas vraiment où aller.

      d=imput("décimal")
      b=input("binaire")
      h=input("hexadécimale")

      n=input("entrer un nb entier à convertir")
      input("donner la base de ce nombre entier")
      input('convertir ce nb",d,b,h)

      Est ce que je peux utiliser les fonctions bin et hex ? (je n'ai pas trouvé pour décimal)

      Je suis consciente qu'il me manque beaucoup de choses mais je n'arrive pas a mettre les choses dans l'ordre...
      0
    4. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      Pour le début, demande plûtot la base sous la forme suivante:
      caractere_base = input("Quelle base? b: binaire, d: decimale, h: hexadecimale")
      , puis vérifie ce qui a été entré par
      if caractere_base == 'b':
      , puis pour 'd' et 'h', et associe
      nombre_base
      à la base, en vrai chiffres (un int).
      A partir de là, sers-toi de ces deux variables pour convertir dans un sens et dans l'autre.
      0
    5. Dinette123 Messages postés 4 Statut Membre
       
      Encore une fois, merci !

      ah oui, j'ai oublié cette étape car tout s'est effacé la première fois :

      if caractere_base == "b":
      return d
      return h

      même chose pour les 2 autres solutions

      est ce que ça peut aller de cette facon? (je n'ai pas python sur cet ordinateur, je ne peux pas tester sur le moment du coup)
      0