Adloun

Écrire taille octets(texte, encodage) qui rend le nombre d'octets…

Application directe du cours · niveau 2 · NSI (première), chapitre 2 — Flottants, booléens et textes · Logique élémentaire, caractères et octets

Énoncé

Écrire taille_octets(texte, encodage) qui rend le nombre d'octets occupés. L'appliquer à "NSI", "café" et "π" en UTF-8, et comparer avec len(texte).

Corrigé


def taille_octets(texte, encodage):
    """Nombre d'octets occupes par texte dans cet encodage.

    Precondition : tous les caracteres de texte sont representables
    dans encodage, faute de quoi une UnicodeEncodeError est levee.
    """
    return len(texte.encode(encodage))

>>> [(m, len(m), taille_octets(m, "utf-8"))
...  for m in ("NSI", "café", "π")]
[('NSI', 3, 3), ('café', 4, 5), ('π', 1, 2)]

Lecture. "NSI" : trois caractères ASCII, trois octets, les deux comptes coïncident. "café" : quatre caractères, mais le é en coûte deux, d'où cinq octets. "π" : un caractère et deux octets — l'écart est maximal.

Contrôle : taille_octets("café", "latin-1") rend . Le même texte, deux encodages, deux tailles : la taille d'un fichier ne dit rien du nombre de caractères qu'il contient tant qu'on ignore son encodage.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.