Outils pour utilisateurs

Outils du site


nsi:langages:python:sequences

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

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

Séquences, bases

P-uplets, tableaux et chaînes de caractères

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.

  • Les p-uplets. Exemple : x = (4, 8, 19, 32), en Python c'est le type tuple
  • Les tableaux. Exemple : x = [4, 8, 17, 32], en Python c'est le type list
  • Les chaînes de caractères. Exemple : x = "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'.

  • Les chaînes servent pour contenir du texte,
  • p-uplets et tableaux servent pour contenir n'importe quoi.
    L'unique différence est qu'on ne peut pas modifier le contenu du p-uplet une fois qu'il est créé. Cela peut sembler contraignant mais c'est c'est souvent utile.

Notion de rang

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 indiceindex en anglais.

Le rang du premier item est 0.

  • Dans x = "ay$2", l'item de rang 0 est 'a', l'item de rang 2 est '$'.
  • Dans 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 ?

Accès à un item de rang connu

On peut facilement accéder à un item dont on connaît le rang.

>>> x = "ay$2"
>>> x[1]
'y'

IndexError

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.

not subscriptable

>>> 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…

Longueur de la séquence

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

Appartenance et énumération

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.")
nsi/langages/python/sequences.txt · Dernière modification : de goupillwiki