Conversion décimale en binaire.

a marqué ce sujet comme résolu.

Bonjour, j’ai écris un code et je ne comprends pas mon erreur. Voici la consigne : Écrire une fonction conversion_binaire qui prend en paramètre un entier positif n et renvoie une liste bits d’entiers égaux à 0 ou 1, la représentation en binaire de n.

def decimal_binaire(n):
    Liste = []
    while(n != 0):
        Liste.append(n%2)
        n = n//2
    return Liste[::-1]

Et voici mon erreur :

PythonError: Traceback (most recent call last):
  File "/lib/python3.10/site-packages/_pyodide/_base.py", line 429, in eval_code
    .run(globals, locals)
  File "/lib/python3.10/site-packages/_pyodide/_base.py", line 300, in run
    coroutine = eval(self.code, globals, locals)
  File "<exec>", line 15, in <module>
ValueError: invalid literal for int() with base 10: 'recherche(1, [2, 3, 4]) '
+0 -0

Salut,

Le message d’erreur serait beaucoup plus lisible dans un bloc de code également…

Celui que tu obtiens nous dis notamment :

  File "<exec>", line 15, in <module>
ValueError: invalid literal for int() with base 10: 'recherche(1, [2, 3, 4]) '

Comme ton exemple fait 6 lignes et n’appelle pas la fonction int sur une chaine (qui vaudrait 'recherche(1, [2, 3, 4]) '), on peut en conclure qu’elle concerne une autre partie du code que celle que tu nous montres… :-°

+2 -0

Pourquoi pas un truc simplement récursif (sauf si cette notion n’a pas encore été abordée)

def decimal_binaire(n):
    if n >= 1:
        decimal_binaire(n // 2)
    print(n % 2, end = '')

Sinon, y a la fonction intégrée bin() qu’on peut mettre à profit aussi

def decimal_binaire(n):
    return bin(n).replace("0b", "")

On peut simplement faire appel aussi au formatage

def decimal_binaire(n):
    return "{0:b}".format(int(n))

Sinon, effectivement, l’erreur n’a aucun lien avec la fonction présentée.

En dehors des points énoncés au-dessus, je me demandais pourquoi ta fonction s’appelait decimal_binaire.
Ton énoncé dit bien «  une fonction conversion_binaire qui prend en paramètre un entier positif n et renvoie une liste bits », quel rapport alors avec la représentation décimale ?

Comme « entier positif » sans précision de base sous-entend la base décimale… je pense que Weshhhhh a voulu rendre le nom de sa fonction encore plus explicite que l’énoncé ? (par contre oui, un petit commentaire pour la personne qui fera la correction, ou la fonction bien nommée qui encapsule la sienne, n’est pas un luxe.)

Comme « entier positif » sans précision de base sous-entend la base décimale… je pense que Weshhhhh a voulu rendre le nom de sa fonction encore plus explicite que l’énoncé

Sauf que… La fonction prend un int, pas sa représentation décimale.

un petit commentaire pour la personne qui fera la correction, ou la fonction bien nommée qui encapsule la sienne, n’est pas un luxe

Pas sûr de comprendre, on ne fournit pas de "correction" sur ce forum, on guide vers la solution et/ou on explique ce que les gens ne comprennent pas, mais on ne donne certainement pas de solution toute prête.

+2 -0

Comme « entier positif » sans précision de base sous-entend la base décimale… je pense que Weshhhhh a voulu rendre le nom de sa fonction encore plus explicite que l’énoncé ? (par contre oui, un petit commentaire pour la personne qui fera la correction, ou la fonction bien nommée qui encapsule la sienne, n’est pas un luxe.)

Gil Cot

Ce n’est pas très explicite alors, je m’attendrais d’une telle fonction qu’elle prenne une chaîne de caractères en argument. Là elle prend un int, donc pas de base sous-entendue puisqu’il s’agit directement d’un nombre manipulable comme tel et non d’une représentation.

Pas sûr de comprendre, on ne fournit pas de "correction" sur ce forum, on guide vers la solution et/ou on explique ce que les gens ne comprennent pas, mais on ne donne certainement pas de solution toute prête.

adri1

Je crois qu’il parle de la personne qui corrigera son exercice une fois qu’il l’aura rendu, comme le nom de la fonction ne correspond pas à celui attendu.

Possible, je n’ai pas tout le contexte… et je partais du principe qu’on va prendre une entrée utilisateur (par exemple 17 donc) et sortir le binaire correspondant (soit 10001 dans cet exemple)
Autrement, il s’agit plutôt d’afficher la représentation binaire que de convertir en binaire…

Pour la seconde partie, je ne parlais pas de ce forum mais de la correction du TD. Quand on se donne la peine de lire, c’est souvent en diagonale en recherchant des mots clefs puis en s’arrêtant sur certaines portions. Là le commentaire peut être intéressant pour que le travail ne soit pas classé en HS par automatisme. Souvent on se donne pas la peine de lire (tout) le source et on exécute juste une batterie de cas qui doivent renvoyer des résultats attendus.

Édition : Cela a été mieux formulé entre temps ; j’avais une petite pensée pour la personne qui allait corriger l’exercice. Par contre vous êtes deux à avoir compris qu’il y a directement un int en entrée héhé.

+1 -1
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte