SQL

Lorsque tu écris un programme en Python, sans t’en rendre compte parfois, tu manipules différents types natifs. Aujourd’hui, on va étudier dans le détail cette notion qui semble de prime abord obscure, mais qui est en réalité simple et fondamentale. Ainsi, dans cet article, tu verras tout ce qu’il faut savoir sur les chaînes de caractères, les entiers, les nombres décimaux et les booléens en Python !

À quoi correspondent les types natifs en Python ?

Sur Python, on dénombre quatre types natifs, qui permettent chacun de traiter des données : les chaînes de caractères, les entiers, les décimaux et les booléens.

Les chaînes de caractères

Ces dernières correspondent à une succession de caractères compris entre deux guillemets identiques (\(\color{red}{“}\)ou \(\color{red}{‘}\)), qu’on appelle string en anglais. Elles permettent notamment d’insérer et surtout d’afficher du texte dans des programmes. Ainsi, le programme ci-dessous correspond à une chaîne de caractères :

Toutefois, si la chaîne de caractères tient sur plusieurs lignes, alors il faut tripler les guillemets au début et à la fin.

De plus, si jamais il y a des apostrophes dans la chaîne de caractères, comme avec l’exemple ci-dessous, Python renverra un message d’erreur :

 

Pour contrer ce problème, il y a deux solutions :

  1. Utiliser des au début et à la fin de la chaîne de caractères, comme dans la ligne 3 (cela ne fonctionne que s’il n’y a qu’une seule apostrophe au plus).
  2. Utiliser des \ avant les apostrophes au sein de la chaîne de caractères, comme dans la ligne 5 ; Python lira le code sans en tenir compte.

 

Il faut également noter que l’on peut accéder directement à un élément particulier d’une chaîne de caractères, à l’instar des listes.

Par exemple, le programme ci-dessus renvoie la première lettre (Python compte à partir de 0) de la chaîne de caractères MP, c’est-à-dire B.

Enfin, une chaîne de caractères est immuable, c’est-à-dire qu’on ne peut pas la modifier directement.

Les entiers

Les entiers, comme leur nom l’indique, correspondent à l’ensemble des entiers relatifs, comme 1, 4, -7, etc.

Ces derniers, en Python, se nomment les integers, qu’on appelle également int.

Depuis la version 3.6 sur Python, on peut mettre des espaces entre les chiffres sans pour autant modifier le nombre, comme lorsqu’on met un espace entre les centaines et les milliers. Ainsi, en Python, 5_000_000 et 5000000 sont égaux.

Les décimaux

Comme en mathématique, les nombres décimaux correspondent aux nombres qui possèdent une virgule (un . en Python) : 5.25 ; 10.99 ; 455665775.1 sont des décimaux pour Python. On les appelle également les flottants, venant de float en anglais sur Python.

Toutefois, il faut noter que tous les nombres avec une virgule sont des décimaux pour Python, même 1.0 ou 5.0.

Par conséquent, pour Python, 1.0 et 1 sont deux objets différents, bien qu’ils soient mathématiquement égaux.

Les booléens

Les booléens sont des types natifs en Python qui ne prennent que deux valeurs possibles : True et False. On les appelle booleans sur Python, avec comme nom raccourci bool.

De plus, les booléens correspondent à un sous-ensemble des entiers. En effet, le booléen True vaut 1 et le booléen False vaut 0. À ce titre, ils peuvent donc être additionnés avec des nombres !

Il est également à noter que tous les objets ont une valeur en booléen.

Ainsi, tous les objets présents dans l’image ci-dessus valent False ; il suffit d’utiliser la commande bool et d’afficher la valeur avec print pour s’en rendre compte, comme dans la ligne 7.

Tous les autres objets, comme les chaînes de caractères contenant au moins un signe, renvoient True.

Convertir les types natifs

On a vu que les types natifs de différentes natures donnent des objets différents. Ainsi, 1 et 1.0 sont deux objets différents, tout comme 10 et “10”.

Or, quand on veut concaténer plusieurs objets, la nature de ces derniers importe : on peut additionner des nombres (entiers ou décimaux), des booléens avec des entiers, mais on ne peut pas additionner des nombres avec des chaînes de caractères. Par conséquent, la commande ci-dessous donnera une erreur en Python.

Mais alors, que faire pour éviter que ce programme affiche une erreur ?

Il suffit d’utiliser ces commandes aperçues précédemment :

Ainsi, la commande ci-dessous transforme 100 (un entier) en “100” (une chaîne de caractères) :

Et ça marche dans l’autre sens ! On peut aussi transformer 4.0 (un nombre décimal) en 4 (un entier).

On peut donc corriger notre programme vu précédemment de cette manière :

Cette fois-ci, le programme affiche bien 10 (soit 5 + 5) !

Toutefois, certains types natifs ne peuvent pas être convertis en d’autres types natifs ; par exemple, on ne peut pas transformer une chaîne de caractères avec des lettres en un entier, comme dans le programme ci-dessous :

Globalement, il suffit d’utiliser son « bon sens » pour savoir ce qu’il est possible de convertir ou non.

Erreurs à éviter

Après avoir vu ce qu’il y avait à savoir en général sur les types natifs, il est temps de s’attaquer aux erreurs qu’on retrouve fréquemment lorsqu’on les utilise.

Tout d’abord, il faut bien faire attention à l’orthographe : True est un booléen et true n’en est pas un !

Ensuite, quand on demande à un utilisateur de rentrer un nombre avec une commande input, il faut prendre en compte le fait que le nombre entré sera considéré comme une chaîne de caractères ; il est donc nécessaire de le convertir en entier ou en flottant si on souhaite ensuite l’utiliser dans des calculs.

Enfin, concernant les chaînes de caractères, il faut bien utiliser les guillemets ” ou ‘ ; les autres (comme « ») ne fonctionnent pas !

Conclusion

Voilà, les types natifs n’ont plus de secret pour toi ! Cela devrait te permettre à l’avenir d’éviter un grand nombre d’erreurs en ce qui concerne la nature des objets utilisés en Python. Ainsi, tu connais maintenant les différences entre “1”, 1, 1.0 et True !

Tu peux retrouver ici le méga-répertoire qui contient toutes les annales de concours et les corrigés. Tu peux également accéder ici à toutes nos autres ressources sur Python !