TP – parcourir une liste et conversions binaires

Correction : algorithme de conversion de décimal vers base quatre

def decimal_vers_base4(nombre):

    """ conversion de base 10 vers base quatre
    nombre est un entier naturel non nul"""

    # initialisation
    liste = []

    # tant que le nombre ne fait pas zéro, je continue
    while nombre > 0 :
        # je note le reste
        liste.append(nombre % 4)

        # je remplace le nombre par le quotient
        nombre = nombre // 4

    # On lit dans l'autre sens les chiffres
    liste.reverse()

    return liste

Exemples :

>>> decimal_vers_base4(16)
[1, 0, 0]
>>> decimal_vers_base4(4252)
[1, 0, 0, 2, 1, 3, 0]
>>>

Et en binaire ?

def binaire_vers_decimal(liste):

    """ conversion de binaire (liste) vers base 10"""

    # initialisation
    decimal = 0

    # pour tous les chiffres je fais *2 plus le chiffre
    for chiffre in liste :
        decimal *= 2
        decimal += chiffre

    return decimal

def decimal_vers_binaire(nombre):

    """ conversion de base 10 (int) vers binaire (liste)
    nombre est un entier naturel non nul"""

    # initialisation
    liste = []

    # tant que le nombre ne fait pas zéro, je continue
    while nombre > 0 :
        # je note le reste
        liste.append(nombre % 2)

        # je remplace le nombre par le quotient
        nombre = nombre // 2

    # On lit dans l'autre sens les chiffres
    liste.reverse()

    return liste

Exemples :

>>> binaire_vers_decimal([1, 0, 1, 0, 1, 0, ])
42
>>> decimal_vers_binaire(200)
[1, 1, 0, 0, 1, 0, 0, 0]
>>>

Et on a bien 1 \times 2^7 + 1 \times 2^6 + 1 \times 2^3 = 128 + 64 + 8 = 200.

On établit ces codes ensemble, mais chaque élève les refait à son rythme.

Fini ? On commence un « convertisseur intelligent » :

>>> convertisseur(101010)
Lu en binaire, 101010 donne 42 en décimal.
Lu en décimal, 101010 donne 11000101010010010 en binaire.
>>> convertisseur(200)
200 ne peut pas être lu en binaire.
Lu en décimal, 200 donne 11001000 en binaire.
>>>

Pour lundi, dans la collecte de MBN, déposer un fichier python avec les cinq fonctions du découpage fonctionnel ci-dessous. Elles devront être au moins documentées par un docstring bien clair et si possible faire ce qu’elles doivent faire !

cm 2019-11-20 NSI convertisseur intelligent - découpage fonctionnel


Suite du TP – parcourir une liste

On continue ce TP mais on commence par corriger la fonction est_present() en dessinant des armoires :

cm 2019-11-20 NSI TP parcourir une liste - fonction est_present

Pour lundi, continuer ce TP et implémenter au moins la fonction maximum(liste).

Démo de résultat :

[42, 13, 28, 84, 2, 52]

Le maximum est 84 atteint à l'indice 3
Le minimum est 2 atteint à l'indice 4
Pas de doublons dans cette liste

[5, 6, 7, 42, 13, 28, 12, 84, 2, 6, 42, 52, 6, 52]

Le maximum est 84 atteint à l'indice 7
Le minimum est 2 atteint à l'indice 8
Il y a 3 fois le nombre 6
Il y a 2 fois le nombre 42
Il y a 2 fois le nombre 52
>>> 

Pour les plus courageux, reste le sapin !

6 réflexions au sujet de « TP – parcourir une liste et conversions binaires »

  1. Bonjooooour

    J’avais déjà fini de programmer mon convertisseur intelligent avant que vous n’expliquiez le découpage des fonction et des variables. J’ai donc des noms de fonctions et de variables différents (comme « liste_decimal » au lieu de « liste » ou « test_binaire » au lieu de « est_binaire »).

    Dois-je modifier tout cela pour faire comme le modèle ?

    Merci de votre réponse ^^

  2. Rebonjooooour

    J’ai (presque) fini le sapin (enfin il est fini mais je dois encore ajouter les docstring et les commentaires).

    Que dois-je en faire ? Rien ? Vous l’envoyer par mail ? Dans une collecte ?

    (oui beaucoup trop de questions)
    (et oui beaucoup trop de parenthèses aussi)

    Merci de votre réponse ^^

N'hésitez-pas à poser une question, ou faire avancer le schmilblick

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.