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 :

Besoin d'aide programme décimal -> binaire


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 7
    Par défaut Besoin d'aide programme décimal -> binaire
    Bonjour, j'ai dans l'optique de faire un programme capable de passer d'un nombre décimal en binaire ou de binaire en décimal. J'ai commencé par la conversion décimal --> binaire j'ai donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    print('Veuillez saisir si a est un nbr binaire ou décimal')
    a = str(input())
    if a == 'décimal':
        print('Veuillez saisir un nombre')
        nbr = int(input())
        while nbr > 0:
            print(nbr%2)
            nbr = nbr // 2
    Si je rentre comme nbr = 50 il me renvois 010011 et j'aimerais qu'il me renvois 110010 qui est donc 010011 mais à l'envers mais je ne sais pas comment faire, si quelqu'un pourrais m'aider merci d'avance.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Par défaut
    Effectivement, avec cet algorithme, tu auras toujours les puissance les plus faibles de 2 en premier.
    Je te suggère donc, au lieu d'afficher les chiffres binaires un par un, que tu les concatènes dans une chaîne
    de caractères et, ensuite, afficher cette chaîne à l'envers. Une simple utilisation du slicing.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print resultat[::-1]

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 37
    Par défaut
    Stocke dans une liste le résultat de chaque nbr % 2, et à la sortie de la boucle inverse la liste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    invers = [0, 1, 0, 0, 1, 1]
    print invers[::-1]
    # 110010
    EDIT:
    Ça m'étonne toujours ces posts simultanés

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Zertyr Voir le message
    Bonjour, j'ai dans l'optique de faire un programme capable de passer d'un nombre décimal en binaire ou de binaire en décimal. J'ai commencé par la conversion décimal --> binaire j'ai donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    print('Veuillez saisir si a est un nbr binaire ou décimal')
    a = str(input())
    if a == 'décimal':
        print('Veuillez saisir un nombre')
        nbr = int(input())
        while nbr > 0:
            print(nbr%2)
            nbr = nbr // 2
    Si je rentre comme nbr = 50 il me renvois 010011 et j'aimerais qu'il me renvois 110010 qui est donc 010011 mais à l'envers mais je ne sais pas comment faire, si quelqu'un pourrais m'aider merci d'avance.
    Bonjour,

    le langage Python avait déjà prévu le coup.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
     
    x = input("veuillez entrer un nombre : ")
     
    binaire = bin(int(x))[2:] # pour enlever les 2 premiers caractères '0b'
     
    print("valeur binaire :", binaire)
     
    print("valeur inversée :", binaire[::-1])
    voir ici : https://docs.python.org/3/library/functions.html#bin

    et plus généralement là : https://docs.python.org/3/library/functions.html

    @+.

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 7
    Par défaut
    Merci pour vos réponses, je suis donc passé par une liste ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    print('Veuillez saisir si a est un nbr binaire ou décimal')
    a = str(input())
    if a == 'décimal':
        print('Veuillez saisir un nombre')
        nbr = int(input())
        L = []
        while nbr > 0:
            L.append(nbr%2)
            nbr = nbr // 2
        print(L)
    Mais j'ai pas compris le code pour inverser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    invers = [0, 1, 0, 0, 1, 1] //Dans mon cas ce ne serait pas plutôt invers = L[] ???
    print invers[::-1] //Et ça sa affiche invers mais [::-1] c'est quoi ? 
    # 110010
    on peux m'expliquer s'il vous plaît ?

    PS: j'avais pas vue qu'on m'avais répondu pendant que j'écrivais mon message :/

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 13
    Par défaut
    Bonjour,

    Sinon tu peux stocké tes 0 et tes 1 dans une chaine, et tu concatènes ta chaîne à l'envers, j'ai réalisé ceci pour toi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def decimal_to_binary(decimal):
        binary = ''
        while decimal > 0:
            binary = str(decimal%2) + binary
            decimal = decimal // 2
        print(binary)
    C'est à toi de choisir la méthode que tu trouves la plus correcte pour toi, même si elle est très proche de celles qu'on proposés les autres au dessus.

    P.S.: Pour ton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print('Veuillez saisir si a est un nbr binaire ou décimal')
    a = str(input())
    Tu peux l'écrire en une seule ligne comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a = input('Veuillez saisir si a est un nbr binaire ou décimal ')
    Bonne journée!

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 7
    Par défaut
    Merci beaucoup pour vos réponses, tarball69 j'aime bien le code que tu as mis il est simple à faire et à comprendre c'est quand même bien fait python .


    PS: vue qu'il y a une fonction pour passer du décimal en binaire est-ce qu'il y en a une pour passer du binaire au décimal ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Zertyr Voir le message
    Merci pour vos réponses, je suis donc passé par une liste ce qui donne :
    Mais j'ai pas compris le code pour inverser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    invers = [0, 1, 0, 0, 1, 1] //Dans mon cas ce ne serait pas plutôt invers = L[] ???
    print invers[::-1] //Et ça sa affiche invers mais [::-1] c'est quoi ? 
    # 110010
    on peux m'expliquer s'il vous plaît ?

    PS: j'avais pas vue qu'on m'avais répondu pendant que j'écrivais mon message :/
    Le code pour inverser : une chaîne de caractères str() ou un objet list() (itérables indiçables) peuvent extraire des portions d'eux-mêmes selon la syntaxe variable[start:end:step]

    start est l'indice de départ de la séquence à extraire et commence à 0
    end est l'indice de fin de la séquence à extraire
    step est le "pas" d'incrémentation (ou de décrémentation) avec lequel on parcourt la séquence start:end

    dans votre exemple, nous avons simplement dit : binaire[::-1] ce qui signifie start (omis) = 0, end (omis) = len(binaire)-1 et step = -1 (à reculons) donc on prend la totalité de la chaîne de caractères binaire mais on l'extrait à reculons, à l'envers, d'où le step = -1.

    @+.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Zertyr Voir le message
    Merci beaucoup pour vos réponses, tarball69 j'aime bien le code que tu as mis il est simple à faire et à comprendre c'est quand même bien fait python .


    PS: vue qu'il y a une fonction pour passer du décimal en binaire est-ce qu'il y en a une pour passer du binaire au décimal ?
    Python accepte nativement la notation binaire, il suffit pour cela de faire précéder la séquence binaire par '0b', exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print(0b110010) # donnera la valeur 50
    En revanche, il n'existe pas à proprement parler de fonction bin2dec() pour traduire une séquence binaire en nombre.

    Le truc, c'est de traiter la séquence binaire comme une chaîne de caractères dont l'expression évaluée par Python donnera un nombre.

    voici un petit script pour illustrer cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
     
    x = input("veuillez entrer un nombre : ")
     
    binaire = bin(int(x))[2:] # pour enlever les 2 premiers caractères '0b'
     
    print("valeur binaire :", binaire)
     
    print("valeur inversée :", binaire[::-1])
     
    b = input("veuillez entrer un nombre binaire : ")
     
    print("valeur décimale :", eval("0b" + b)) # on évalue l'expression 0b10111010...
    @+.

  10. #10
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 7
    Par défaut
    Ah je pense avoir compris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval("0b" + b) //ici on rajoute 0b au nombre binaire afin que la fonction eval nous renvoie la valeur de l'expression c'est ça ?
    Le 0b c'est comme une clé liée au binaire non ?

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Zertyr Voir le message
    Ah je pense avoir compris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval("0b" + b) # ici on rajoute 0b au nombre binaire afin que la fonction eval nous renvoie la valeur de l'expression c'est ça ?
    Oui, eval() fait appel à l'interpréteur Python pour évaluer une expression, conformément aux règles du langage.

    Le 0b c'est comme une clé liée au binaire non ?
    Non, c'est une notation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    x = 10        # nombre entier noté en décimal
    x = 0x0A      # nombre entier noté en hexadécimal
    x = 0b1010    # nombre entier noté en binaire
    x = eval("0b1010")
    x = eval("0b" + "1010")
    b = "1010"
    x = eval("0b" + b)
    vu comment ça marche ?

  12. #12
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 7
    Par défaut
    Oui je vois, merci beaucoup tarball69 de m'avoir aidé

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

Discussions similaires

  1. Besoin d'aide programmation vraisemblance
    Par fire007 dans le forum R
    Réponses: 3
    Dernier message: 04/07/2011, 13h44
  2. besoin d'aide pour les fichier binaires
    Par momo31 dans le forum C++
    Réponses: 1
    Dernier message: 06/04/2010, 08h19
  3. Besoin d'aide "Programmation graphique"
    Par magic-moad dans le forum C++
    Réponses: 3
    Dernier message: 22/11/2009, 15h38
  4. Besoin d'aide - programmation basique
    Par Mr_Trickster dans le forum Langage
    Réponses: 3
    Dernier message: 10/11/2008, 08h41
  5. Réponses: 2
    Dernier message: 13/06/2007, 11h03

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