NSI (première) · Chapitre 2 · Application directe du cours
Écrire taille octets(texte, encodage) qui rend le nombre d'octets…
Flottants, booléens et textes · Logique élémentaire, caractères et octets · niveau 2
É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.
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 16 autres exercices corrigés dans ce chapitre, et 20 à chercher avec le tuteur
- Le podcast et la vidéo du chapitre et la correction filmée du TD : 2 minutes sans compte
Sans compte : le cours, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.