Aide exercice nsi

J'ai un dm pour nsi qui contient 4 questions, voilà l'une d'entre elles, je ne les comprend pas.

 

def dec_to_bin(decimal):
    binaire=""
    quotient = decimal // 2
    reste = decimal % 2
    binaire = reste + binaire
    while quotient!=0 :
        decimal = quotient
        reste = decimal % 2
        binaire = reste + binaire
        quotient = decimal//2

    
    # au final, tant que le binaire n'a pas une taille de 4
    while binaire != 4:
        # on ajoute des "0" à gauche
        binaire = binaire+0
        
    return binaire


# Les lignes ci-dessous testent votre code... n'y touchez pas !
# Si une AssertionError apparaît... c'est que votre code n'est pas bon...
assert dec_to_bin(10) == '1010'
assert dec_to_bin(15) == '1111'
assert dec_to_bin(0) == '0000'

5 réponses

  1. Modérateur

    Salut,

    A l’exécution il y a une erreur, claire

        binaire = reste + binaire
    TypeError: unsupported operand type(s) for +: 'int' and 'str'
    

    la concaténation fonctionne avec 2 chaines, reste étant un entier il faut le convertir


    1. de plus n'ayant pas la leçon je n'y comprends pas grand chose

      1. Contributeur

        Comment te retrouves-tu à faire un DM sans avoir eu la leçon?

      2. @yg_be

        pas là pendant 3 semaines

    2. non je ne crois pas 

      1. Contributeur

        as-tu exécuté ton programme?  quel résultat as-tu obtenu?

      2. @yg_be

        je pense que jai reussi mais apres il y a une "AssertionError" et le site crash

      3. Contributeur
        @SalaNsi

        Tu as exécuté le programme que tu montres?  Pas de message d'erreur avant l'assertion?


      • On concatene reste à gauche de binaire (Attention, reste doit être au format chaine de caracteres!!)

      1. Contributeur

        SI tu exécutes ton programme, n'est-ce pas clair?