Dans ce chapitre, Nous abordons trois structures de données servant dans des contextes différents mais dont la syntaxe est très proche en Python.
x = (4, 8, 19, 32), en Python c'est le type tuplex = [4, 8, 17, 32], en Python c'est le type listx = "ay$2", en Python c'est le type str
Dans les trois cas, on parle d'une variable x qui contient plusieurs données. Les deux premiers contiennent les entiers 4, 8, 19 et 32 ; la chaîne contient les caractères 'a', 'y', '$' et '2'.
Défintion du Larousse : item = Tout élément d'un ensemble considéré en tant que terme particulier.
Dans les 3 cas, on parle d'une séquence d'items qui sont placés dans un certain ordre et chaque item a donc un numéro d'ordre, c'est à dire un rang ou indice – index en anglais.
Le rang du premier item est 0.
x = "ay$2", l'item de rang 0 est 'a', l'item de rang 2 est '$'.x = [4, 8, 17, 32], l'item de rang 0 est 4, l'item de rang 2 est 17.Quand vous manipulerez une séquence dans un programme, vous devrez toujours bien réfléchir : telle variable que vous utilisez représente-t-elle un item ou le rang d'un item ?
On peut facilement accéder à un item dont on connaît le rang.
>>> x = "ay$2" >>> x[1] 'y'
En ligne 1, x[1] signifie que l'on veut l'item de rang 1 dans la chaîne x.
>>> x = "ay$2" >>> x[5] IndexError: string index out of range
Il n'y a pas d'item de rang 5, on a donc une IndexError → Erreur de rang.
>>> x = 152 >>> x[1] TypeError: 'int' object is not subscriptable
Dans ce cas, x est un entier, pas une séquence. En écrivant x[1], on essaie d'atteindre l'item de rang 1 dans x, mais cela n'a aucun sens pour un entier.
Le message d'erreur signifie que l'on ne peut pas utiliser l'écriture [] pour un entier.
Soyez attentif à ces messages d'erreur. Il est fréquent que l'on se trompe en écrivant [] au lieu de (). Si on comprend le sens des messages d'erreurs, on sait tout de suite quoi corriger.
Retenez bien : En Python, la syntaxe nom_de_variable[indice] sert à atteindre un item dans une séquence, que la séquence soit str, tuple ou list – ou autre chose…
On peut avoir besoin de connaître le nombre d'éléments de la séquence. On parle de longueur, en anglais length. On utilise la fonction len.
>>> x = "ay$2" >>> len(x) 4
Python est un langage très expressif : Les lignes de programmes Python sont très proches d'un énoncé très rigoureux comme un énoncé mathématique. Cela est rendu possible par certains mots clés du langage comme le in.
>>> x = "ay$2" >>> '$' in x True >>> 'z' in x False
Le mot clé inproduit une expression logique : item in sequence est vrai si et seulement si item est contenu au moins une fois dans sequence.
Le mot clé in va également servir dans le cadre d'une énumération, avec une boucle POUR.
for item in sequence:
# la boucle se répète pour chaque item
# contenu de la séquence, dans l'ordre
print(item)
# par exemple on affiche l'item
Comparez le pseudo-code et le Python, vous pouvez voir que c'est presque du mot à mot :
FONCTION contient_voyelle(texte)
ENTRÉE: texte, une chaîne de caractère
SORTIE: vrai si texte contient une voyelle
DÉBUT
POUR CHAQUE lettre parmi a, e, i, o, u, y RÉPÉTER
SI lettre dans texte ALORS
RENVOYER vrai
FIN
FIN
RENVOYER faux
FIN
def contient_voyelle(texte:str) -> bool:
"""
texte: chaîne de caractère
renvoie True si texte contient une voyelle
"""
for lettre in "aeiouy":
if lettre in texte:
return True
return False
Le mot clé in peut être inversé par not. Par exemple :
if 'e' not in texte:
print("la lettre e n'est pas présente dans texte.")