Outils pour utilisateurs

Outils du site


nsi:premiere:caracteres

Ceci est une ancienne révision du document !



Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Chaînes des caractères

Encodage

Les transistors, les circuits mémoires… stockent des entités binaires, des 0 et des 1. On a vu que l'on pouvait regrouper ses bits pour former des mots – 1 octet est un mot de 8 bits.

Comment va-t-on stocker des caractères ?

 Table ASCII

American Standard Code for Information Interchange

128 caractères, pas de caractères accentués, beaucoup de caractères de contrôle liés à la technologie de l'époque – années 60.

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1x DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2x SP ! # $ % & ' ( ) * + , - . /
3x 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4x @ A B C D E F G H I J K L M N O
5x P Q R S T U V W X Y Z [ \ ] ^ _
6x ` a b c d e f g h i j k l m n o
7x p q r s t u v w x y z { | } ~ DEL

Unicode

Codage international contenant environ 140 000 caractères pour tous les alphabets.

  • Les 128 premiers correspondent à ASCII
  • Les 256 premiers correspondent à ISO 8859-1 = Latin-1 – lui-même compatible avec ASCII

Un caractère est Unicode codé sur 4 octets.

Le plus souvent, pour améliorer les performances, Unicode n'est pas utilisé directement. Pour les textes on utilise des adaptation, notamment UTF-8, permettant d'occuper moins de 4 octets par caractère. On verra plus tard.

Unicode et Python

En Python, on utilise directement Unicode ce qui permet d'écrire à peu près n'importe quel caractère.

>>> ord('c')    # renvoie le code Unicode du caractère
99
>>> ord('и')
1080
>>> chr(99)     # opération inverse : code -> caractère
'c'
>>> chr(1080)
'и'

Manipulations

On crée une chaîne de caractères en utilisant " ou ' indifféremment.

texte = "bonjour"
autre_texte = 'au revoir'

Le type d'une chaîne est str. Nous avons déjà rencontré la syntaxe de la manipulation d'une chaîne, elle est identique à celle des p-uplets. Juste un exemple pour mémoire :

>>> texte = "bonjour"
>>> texte[2]
'n'
>>> texte[-1]
'r'

En Python les chaînes de caractères sont immutables. On on essaie de modifier le contenu d'un str, on aura donc une erreur :

>>> texte = "bonjour"
>>> texte[2] = 'a'
TypeError: 'str' object does not support item assignment

Toutes les fonctions qui modifient une chaîne créent une copie de la chaîne d'origine avec la modification faite.

Quelques fonctions spécifiques

Les fonctions pouvant être utilisées sur les chaînes de caractères sont très nombreuses et on ne va pas toutes les apprendre. Dites vous que pour toutes les manipulations ordinaires auxquelles vous pourriez penser, il existe probablement une fonction déjà faite.

>>> texte = "  Bonjour  "
>>> texte.upper()
'  BONJOUR  '
>>> texte.lower()
'  bonjour  '
>>> texte".lstrip()
'Bonjour  '
>>> "ananas".replace('a', 'x')
'xnxnxs'
>>> "452".isnumeric()
True

```

Vous noterez la syntaxe particulière : on veut agir sur la chaîne texte et au lieu d'écrire quelque chose comme upper(texte), on écrit texte.upper(). Ce serait trop long de l'expliquer ici. Le type str est une classe – au sens donné à ce mot en programmation – et vous l'étudierez si vous poursuivre en Terminale.

La commande help(str) affiche les nombreuses fonctions disponibles. Bien sûr, internet est aussi une source précieuse d'information.

Le formatage

Il est fréquent que l'on ait besoin d'écrire un résultat et que l'on souhaite respecter un certain affichage.

Exemple : On dispose du nombre a et on voudrait afficher un message disant “La valeur de a est ” suivi de la valeur de a.

Il existe diverses méthodes mais la meilleur consiste à utiliser un formatage.

Méthode 1, en utilisant print

On peut écrire print(“La valeur de a est”,a) ce qui fait ce que l'on demande. Mais cette méthode est très limitée : On ne pourra pas régler finement l'affichage – voire les cas suivants.

Méthode 2, avec une concaténation

Disons le tout de suite, c'est une mauvaise méthode. L'idée est de construire la chaîne de caractères en concaténant le début du message avec la valeur de a convertie en str.

“La valeur de a est ” + str(a)

Méthode 3, format

Les chaînes de caractères disposent d'une méthode format permettant de contrôler finement l'affichage.

>>> a = 1/7
>>> "La valeur de a est {}".format(a)
'La valeur de a est 0.14285714285714285'
>>> "La valeur de a est {:0.4f}".format(a)
'La valeur de a est 0.1429'

Voici le principe :

  • on prévoit des “trous” dans la chaîne de texte, marqués par {},
  • l'ajout de .format(a) indique par quoi il faudra compléter les trous,
  • on peut ajouter des informations de formatage comme :0.4f qui permet d'indiquer que l'on souhaite un affichage à 4 chiffres après la virgule.

Les options d'affichage sont très nombreuses. Par exemple un affichage direct en hexadécimal :

>>> n = 218
>>> "{} en hexadécimal s'écrit {:03X}".format(n,n)
'0DA'

:03X indique que l'on veut un affichage à 3 chiffres, complété à gauche par des 0 si besoin, en hexadécimal, en majuscules.

Méthode 4, à partir de Python 3.6

À partir de Python 3.6 on dispose des fstrings – formated strings.

Le principe est le même qu'avec format mais avec une notation plus légère et plus lisible.

>>> n = 218
>>> f"{n} en hexadécimal s'écrit {n:03X}"
'0DA'

Vous pouvez noter le f en tête de la chaîne et les variables qui sont placées directement dans les { }.

nsi/premiere/caracteres.1631739419.txt.gz · Dernière modification : de goupillwiki