Introduction `a l’algorithmique et `a la programmation
SHNU, 2019 – 2020
Anthony Labarre
Anthony.Labarre@u-pem.fr
– Rappels du premier cours –
I On a vu :
I les variables et leurs types ;
I les branchements conditionnels (if / elif / else) ;
I les chaˆınes, lesrangeet les bouclesfor;
I l’interpr ´eteur Python ;
I comment installer et configurer Python 3 et Geany ;
I comment structurer un programme Python ;
Des questions ?
– Plan d’aujourd’hui –
Les chaˆınes de caract `eres Les tuples
Les listes
Bouclesfor(suite) Les fonctions Les doctests
Python pas `a pas
Les chaˆınes de caract `eres
– D ´eclaration de chaˆınes de caract `eres –
I On peut d ´eclarer une chaˆıne :
I entre apostrophes : x = 'toto'
I ou entre guillemets : x = "toto"
I Et si la chaˆıne contient des'et des"? On utilise les caract `eres sp ´eciaux\'et\":
s = 'il a dit : "J\'ai faim!"'
I Attention :\'compte pour un seul caract `ere, de m ˆeme que\"(ce sont des caract `eres sp ´eciaux) ;
– D ´eclaration de chaˆınes de caract `eres –
I On peut d ´eclarer une chaˆıne :
I entre apostrophes : x = 'toto'
I ou entre guillemets : x = "toto"
I Et si la chaˆıne contient des'et des"? On utilise les caract `eres sp ´eciaux\'et\":
s = 'il a dit : "J\'ai faim!"'
I Attention :\'compte pour un seul caract `ere, de m ˆeme que\"(ce sont des caract `eres sp ´eciaux) ;
– D ´eclaration de chaˆınes de caract `eres –
I On peut d ´eclarer une chaˆıne :
I entre apostrophes : x = 'toto'
I ou entre guillemets : x = "toto"
I Et si la chaˆıne contient des'et des"? On utilise les caract `eres sp ´eciaux\'et\":
s = 'il a dit : "J\'ai faim!"'
I Attention :\'compte pour un seul caract `ere, de m ˆeme que\"(ce sont des caract `eres sp ´eciaux) ;
– D ´eclaration sur plusieurs lignes –
I On peut d ´eclarer une chaˆıne sur plusieurs lignes en utilisant des triples apostrophes ou triples guillemets comme d ´elimiteurs :
Exemple
s = '''Ceci est une chaˆıne sur
plusieurs lignes.''' t = """Ceci
fonctionne aussi."""
I Les sauts de lignes seront encod ´es par le caract `ere\n;
– D ´eclaration sur plusieurs lignes –
I On peut d ´eclarer une chaˆıne sur plusieurs lignes en utilisant des triples apostrophes ou triples guillemets comme d ´elimiteurs :
Exemple
s = '''Ceci est une chaˆıne sur
plusieurs lignes.''' t = """Ceci
fonctionne aussi."""
I Les sauts de lignes seront encod ´es par le caract `ere\n;
– D ´eclaration sur plusieurs lignes –
I On peut d ´eclarer une chaˆıne sur plusieurs lignes en utilisant des triples apostrophes ou triples guillemets comme d ´elimiteurs :
Exemple
s = '''Ceci est une chaˆıne sur
plusieurs lignes.''' t = """Ceci
fonctionne aussi."""
I Les sauts de lignes seront encod ´es par le caract `ere\n;
– Caract `eres sp ´eciaux –
I Voici quelques caract `eres sp ´eciaux utiles :
\' apostrophe \" guillemet
\n saut de ligne \t tabulation
\\ backslash \b reculer d’un
Utilisation de\b
>>> x = 'toto\ba'
>>> x
'toto\x08a'
>>> print(x)
– Acc `es aux caract `eres –
I Une chaˆıne est un it ´erable de caract `eres :
indices : 0 1 2 3 4 5 6
´el ´ements : b o n j o u r
I Attention, les indices (positions) sont des entiers de 0 `a n−1 pour une chaˆıne dencaract `eres !
I Pour connaˆıtre la longueur des: on appellelen(s);
I Pour acc ´eder `a l’ ´el ´ement num ´eroi: on utilises[i];
Exemple
>>> s = 'bonjour'
>>> s[0]
'b'
>>> s[2]
'n'
>>> s[10]
Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range
– Acc `es aux caract `eres –
I Une chaˆıne est un it ´erable de caract `eres :
indices : 0 1 2 3 4 5 6
´el ´ements : b o n j o u r
I Attention, les indices (positions) sont des entiers de 0 `a n−1 pour une chaˆıne dencaract `eres !
I Pour connaˆıtre la longueur des: on appellelen(s);
I Pour acc ´eder `a l’ ´el ´ement num ´eroi: on utilises[i];
Exemple
>>> s = 'bonjour'
>>> s[0]
'b'
>>> s[2]
'n'
>>> s[10]
Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range
– Acc `es aux caract `eres –
I Une chaˆıne est un it ´erable de caract `eres :
indices : 0 1 2 3 4 5 6
´el ´ements : b o n j o u r
I Attention, les indices (positions) sont des entiers de 0 `a n−1 pour une chaˆıne dencaract `eres !
I Pour connaˆıtre la longueur des: on appellelen(s);
I Pour acc ´eder `a l’ ´el ´ement num ´eroi: on utilises[i];
Exemple
>>> s = 'bonjour'
>>> s[0]
'b'
>>> s[2]
'n'
>>> s[10]
Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range
– Acc `es aux caract `eres –
I Une chaˆıne est un it ´erable de caract `eres :
indices : 0 1 2 3 4 5 6
´el ´ements : b o n j o u r
I Attention, les indices (positions) sont des entiers de 0 `a n−1 pour une chaˆıne dencaract `eres !
I Pour connaˆıtre la longueur des: on appellelen(s);
I Pour acc ´eder `a l’ ´el ´ement num ´eroi: on utilises[i];
Exemple
>>> s = 'bonjour'
>>> s[0]
'b'
>>> s[2]
'n'
>>> s[10]
Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range
– Acc `es aux caract `eres –
I Une chaˆıne est un it ´erable de caract `eres :
indices : 0 1 2 3 4 5 6
´el ´ements : b o n j o u r
I Attention, les indices (positions) sont des entiers de 0 `a n−1 pour une chaˆıne dencaract `eres !
I Pour connaˆıtre la longueur des: on appellelen(s);
I Pour acc ´eder `a l’ ´el ´ement num ´eroi: on utilises[i];
Exemple
>>> s = 'bonjour'
>>> s[0]
'b'
>>> s[2]
'n'
>>> s[10]
– It ´erer sur des chaˆınes –
I On peutit ´erer sur(parcourir) des chaˆınes de deux fac¸ons :
Exemple (it ´erer sur les positions)
>>> texte = "bonjour\n"
>>> for position in range(len(texte)):
... print(texte[position], end='') ...
bonjour
Exemple (it ´erer sur les ´el ´ements)
>>> texte = "bonjour\n"
>>> for lettre in texte:
– Les chaˆınes sont non-modifiables –
Les chaˆınes ne sont pas modifiables !
I Sixcontient une valeur de typestret que vous voulez la changer, il faut faire une nouvelle affectation dex:
Exemple
>>> x = 'toto'
>>> x[0] = 'p'
Traceback (most recent call last): File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>> x = 'poto' # fonctionne
– Les chaˆınes sont non-modifiables –
Les chaˆınes ne sont pas modifiables !
I Sixcontient une valeur de typestret que vous voulez la changer, il faut faire une nouvelle affectation dex:
Exemple
>>> x = 'toto'
>>> x[0] = 'p'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
– L’op ´erateur in –
I Remarque : l’op ´erateurinpermet de faire deux choses :
1. parcourir un it ´erable (avec unfor) ;
2. v ´erifier si un ´el ´ement appartient `a un it ´erable ;
I Dans la seconde utilisation :
x in iterable−→True ⇔ x∈iterable
Exemple
>>> '2' in ('1', '2', '3', '4')
True
>>> 2 in ('1', '2', '3', '4')
False
>>> 2 in 1234 # les entiers ne sont PAS it´erables
Traceback (most recent call last): File "<stdin>", line 1, in <module>
TypeError: argument of type 'int' is not iterable
– L’op ´erateur in –
I Remarque : l’op ´erateurinpermet de faire deux choses : 1. parcourir un it ´erable (avec unfor) ;
2. v ´erifier si un ´el ´ement appartient `a un it ´erable ;
I Dans la seconde utilisation :
x in iterable−→True ⇔ x∈iterable
Exemple
>>> '2' in ('1', '2', '3', '4')
True
>>> 2 in ('1', '2', '3', '4')
False
>>> 2 in 1234 # les entiers ne sont PAS it´erables
Traceback (most recent call last): File "<stdin>", line 1, in <module>
TypeError: argument of type 'int' is not iterable
– L’op ´erateur in –
I Remarque : l’op ´erateurinpermet de faire deux choses : 1. parcourir un it ´erable (avec unfor) ;
2. v ´erifier si un ´el ´ement appartient `a un it ´erable ;
I Dans la seconde utilisation :
x in iterable−→True ⇔ x∈iterable
Exemple
>>> '2' in ('1', '2', '3', '4')
True
>>> 2 in ('1', '2', '3', '4')
False
>>> 2 in 1234 # les entiers ne sont PAS it´erables
Traceback (most recent call last): File "<stdin>", line 1, in <module>
TypeError: argument of type 'int' is not iterable
– L’op ´erateur in –
I Remarque : l’op ´erateurinpermet de faire deux choses : 1. parcourir un it ´erable (avec unfor) ;
2. v ´erifier si un ´el ´ement appartient `a un it ´erable ;
I Dans la seconde utilisation :
x in iterable−→True ⇔ x∈iterable
Exemple
>>> '2' in ('1', '2', '3', '4')
True
>>> 2 in ('1', '2', '3', '4')
False
>>> 2 in 1234 # les entiers ne sont PAS it´erables
Traceback (most recent call last): File "<stdin>", line 1, in <module>
TypeError: argument of type 'int' is not iterable
– L’op ´erateur in –
I Remarque : l’op ´erateurinpermet de faire deux choses : 1. parcourir un it ´erable (avec unfor) ;
2. v ´erifier si un ´el ´ement appartient `a un it ´erable ;
I Dans la seconde utilisation :
x in iterable−→True ⇔ x∈iterable
Exemple
>>> '2' in ('1', '2', '3', '4')
True
>>> 2 in ('1', '2', '3', '4')
False
>>> 2 in 1234 # les entiers ne sont PAS it´erables
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
Python pas `a pas
Les tuples
– Les tuple –
I Les chaˆınes ne nous permettent de stocker que du texte ;
I Lestuplesont des it ´erables comme les chaˆınes, mais pouvant contenir n’importe quel type ;
Exemple (d ´eclaration de tuples)
>>> x = (4, 3, 1) # cr´ee un tuple avec 3 entiers
>>> x = 4, 3, 1 # mˆeme r´esultat
>>> y = (4,) # tuple avec un seul ´el´ement
>>> z = (None, "shnu", 3.14, 42) # m´elange de types
I Pour cr ´eer untupleavecun seul ´el ´ement, il faut utiliser une virgule, sinon on obtient un entier ;
I Comme les chaˆınes :
I x[i]donne l’ ´el ´ement en positioni;
I len(x)donne la longueur du tuple ;
I les tuples sont non modifiables ;
– Les tuple –
I Les chaˆınes ne nous permettent de stocker que du texte ;
I Lestuplesont des it ´erables comme les chaˆınes, mais pouvant contenir n’importe quel type ;
Exemple (d ´eclaration de tuples)
>>> x = (4, 3, 1) # cr´ee un tuple avec 3 entiers
>>> x = 4, 3, 1 # mˆeme r´esultat
>>> y = (4,) # tuple avec un seul ´el´ement
>>> z = (None, "shnu", 3.14, 42) # m´elange de types
I Pour cr ´eer untupleavecun seul ´el ´ement, il faut utiliser une virgule, sinon on obtient un entier ;
I Comme les chaˆınes :
I x[i]donne l’ ´el ´ement en positioni;
I len(x)donne la longueur du tuple ;
I les tuples sont non modifiables ;
– Les tuple –
I Les chaˆınes ne nous permettent de stocker que du texte ;
I Lestuplesont des it ´erables comme les chaˆınes, mais pouvant contenir n’importe quel type ;
Exemple (d ´eclaration de tuples)
>>> x = (4, 3, 1) # cr´ee un tuple avec 3 entiers
>>> x = 4, 3, 1 # mˆeme r´esultat
>>> y = (4,) # tuple avec un seul ´el´ement
>>> z = (None, "shnu", 3.14, 42) # m´elange de types
I Pour cr ´eer untupleavecun seul ´el ´ement, il faut utiliser une virgule, sinon on obtient un entier ;
I Comme les chaˆınes :
I x[i]donne l’ ´el ´ement en positioni;
I len(x)donne la longueur du tuple ;
I les tuples sont non modifiables ;
– Les tuple –
I Les chaˆınes ne nous permettent de stocker que du texte ;
I Lestuplesont des it ´erables comme les chaˆınes, mais pouvant contenir n’importe quel type ;
Exemple (d ´eclaration de tuples)
>>> x = (4, 3, 1) # cr´ee un tuple avec 3 entiers
>>> x = 4, 3, 1 # mˆeme r´esultat
>>> y = (4,) # tuple avec un seul ´el´ement
>>> z = (None, "shnu", 3.14, 42) # m´elange de types
I Pour cr ´eer untupleavecun seul ´el ´ement, il faut utiliser une virgule, sinon on obtient un entier ;
I Comme les chaˆınes :
I x[i]donne l’ ´el ´ement en positioni;
I len(x)donne la longueur du tuple ;
I les tuples sont non modifiables ;
– Les tuple –
I Les chaˆınes ne nous permettent de stocker que du texte ;
I Lestuplesont des it ´erables comme les chaˆınes, mais pouvant contenir n’importe quel type ;
Exemple (d ´eclaration de tuples)
>>> x = (4, 3, 1) # cr´ee un tuple avec 3 entiers
>>> x = 4, 3, 1 # mˆeme r´esultat
>>> y = (4,) # tuple avec un seul ´el´ement
>>> z = (None, "shnu", 3.14, 42) # m´elange de types
I Pour cr ´eer untupleavecun seul ´el ´ement, il faut utiliser une virgule, sinon on obtient un entier ;
I Comme les chaˆınes :
I x[i]donne l’ ´el ´ement en positioni;
I len(x)donne la longueur du tuple ;
I les tuples sont non modifiables ;
– Les tuple –
I Les chaˆınes ne nous permettent de stocker que du texte ;
I Lestuplesont des it ´erables comme les chaˆınes, mais pouvant contenir n’importe quel type ;
Exemple (d ´eclaration de tuples)
>>> x = (4, 3, 1) # cr´ee un tuple avec 3 entiers
>>> x = 4, 3, 1 # mˆeme r´esultat
>>> y = (4,) # tuple avec un seul ´el´ement
>>> z = (None, "shnu", 3.14, 42) # m´elange de types
I Pour cr ´eer untupleavecun seul ´el ´ement, il faut utiliser une virgule, sinon on obtient un entier ;
I Comme les chaˆınes :
I len(x)donne la longueur du tuple ;
I les tuples sont non modifiables ;
– Les tuple –
I Les chaˆınes ne nous permettent de stocker que du texte ;
I Lestuplesont des it ´erables comme les chaˆınes, mais pouvant contenir n’importe quel type ;
Exemple (d ´eclaration de tuples)
>>> x = (4, 3, 1) # cr´ee un tuple avec 3 entiers
>>> x = 4, 3, 1 # mˆeme r´esultat
>>> y = (4,) # tuple avec un seul ´el´ement
>>> z = (None, "shnu", 3.14, 42) # m´elange de types
I Pour cr ´eer untupleavecun seul ´el ´ement, il faut utiliser une virgule, sinon on obtient un entier ;
I Comme les chaˆınes :
I x[i]donne l’ ´el ´ement en positioni;
I les tuples sont non modifiables ;
– Les tuple –
I Les chaˆınes ne nous permettent de stocker que du texte ;
I Lestuplesont des it ´erables comme les chaˆınes, mais pouvant contenir n’importe quel type ;
Exemple (d ´eclaration de tuples)
>>> x = (4, 3, 1) # cr´ee un tuple avec 3 entiers
>>> x = 4, 3, 1 # mˆeme r´esultat
>>> y = (4,) # tuple avec un seul ´el´ement
>>> z = (None, "shnu", 3.14, 42) # m´elange de types
I Pour cr ´eer untupleavecun seul ´el ´ement, il faut utiliser une virgule, sinon on obtient un entier ;
I Comme les chaˆınes :
– Affectations multiples –
I La notation des tuples permet d’affectersimultan ´ement plusieurs variables comme ceci :x, y, z = iterable
I Il faut lem ˆeme nombred’ ´el ´ements `a gauche et `a droite ;
Exemple
>>> x, y, z = [5, 6, 8]
>>> x, y, z = 5, 6, 8 # mˆeme r´esultat
>>> x, y = y, x # ´echange les valeurs de x et y
>>> x, y = 1, 2, 3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
>>> x, y, z = 1, 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 3, got 2)
– Affectations multiples –
I La notation des tuples permet d’affectersimultan ´ement plusieurs variables comme ceci :x, y, z = iterable
I Il faut lem ˆeme nombred’ ´el ´ements `a gauche et `a droite ;
Exemple
>>> x, y, z = [5, 6, 8]
>>> x, y, z = 5, 6, 8 # mˆeme r´esultat
>>> x, y = y, x # ´echange les valeurs de x et y
>>> x, y = 1, 2, 3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
>>> x, y, z = 1, 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 3, got 2)
– Affectations multiples –
I La notation des tuples permet d’affectersimultan ´ement plusieurs variables comme ceci :x, y, z = iterable
I Il faut lem ˆeme nombred’ ´el ´ements `a gauche et `a droite ;
Exemple
>>> x, y, z = [5, 6, 8]
>>> x, y, z = 5, 6, 8 # mˆeme r´esultat
>>> x, y = y, x # ´echange les valeurs de x et y
>>> x, y = 1, 2, 3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
>>> x, y, z = 1, 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
– ´ Ecriture condens ´ee –
I En parlant de raccourcis, Python propose aussi des notations abr ´eg ´ees pour les affectations ;
I Voici quelques exemples avecxentier etschaˆıne de caract `eres :
x += 3 ≡ x = x + 3 x *= 2 ≡ x = x * 2
x //= 4 ≡ x = x // 4
s += 'toto' ≡ s = s + 'toto' s *= 3 ≡ s = s * 3
s //= 4 −→ erreur
I Il n’y a pas de notationi++ou++ien Python;
– ´ Ecriture condens ´ee –
I En parlant de raccourcis, Python propose aussi des notations abr ´eg ´ees pour les affectations ;
I Voici quelques exemples avecxentier etschaˆıne de caract `eres :
x += 3 ≡ x = x + 3 x *= 2 ≡ x = x * 2
x //= 4 ≡ x = x // 4
s += 'toto' ≡ s = s + 'toto' s *= 3 ≡ s = s * 3
s //= 4 −→ erreur
I Il n’y a pas de notationi++ou++ien Python;
– ´ Ecriture condens ´ee –
I En parlant de raccourcis, Python propose aussi des notations abr ´eg ´ees pour les affectations ;
I Voici quelques exemples avecxentier etschaˆıne de caract `eres :
x += 3 ≡ x = x + 3 x *= 2 ≡ x = x * 2
x //= 4 ≡ x = x // 4
s += 'toto' ≡ s = s + 'toto' s *= 3 ≡ s = s * 3
s //= 4 −→ erreur
Python pas `a pas
Les listes
– Pr ´esentation –
I Leslistessont des tuples modifiables : on les cr ´ee comme les tuples, mais avec des crochets au lieu de parenth `eses :
Exemple
>>> lst1 = [3, 'toto', 4.5, False] # liste `a 4 ´el´ements
>>> lst2 = [] # liste vide
>>> lst3 = list() # liste vide
I Comme les chaˆınes et les tuples :
I x[i]donne l’ ´el ´ement en positioni;
I len(x)donne la longueur de la liste ;
I l’op ´erateurinmarche comme avant ;
– Pr ´esentation –
I Leslistessont des tuples modifiables : on les cr ´ee comme les tuples, mais avec des crochets au lieu de parenth `eses :
Exemple
>>> lst1 = [3, 'toto', 4.5, False] # liste `a 4 ´el´ements
>>> lst2 = [] # liste vide
>>> lst3 = list() # liste vide
I Comme les chaˆınes et les tuples :
I x[i]donne l’ ´el ´ement en positioni;
I len(x)donne la longueur de la liste ;
I l’op ´erateurinmarche comme avant ;
– Pr ´esentation –
I Leslistessont des tuples modifiables : on les cr ´ee comme les tuples, mais avec des crochets au lieu de parenth `eses :
Exemple
>>> lst1 = [3, 'toto', 4.5, False] # liste `a 4 ´el´ements
>>> lst2 = [] # liste vide
>>> lst3 = list() # liste vide
I Comme les chaˆınes et les tuples :
I x[i]donne l’ ´el ´ement en positioni;
I len(x)donne la longueur de la liste ;
I l’op ´erateurinmarche comme avant ;
– Pr ´esentation –
I Leslistessont des tuples modifiables : on les cr ´ee comme les tuples, mais avec des crochets au lieu de parenth `eses :
Exemple
>>> lst1 = [3, 'toto', 4.5, False] # liste `a 4 ´el´ements
>>> lst2 = [] # liste vide
>>> lst3 = list() # liste vide
I Comme les chaˆınes et les tuples :
I x[i]donne l’ ´el ´ement en positioni;
I len(x)donne la longueur de la liste ;
I l’op ´erateurinmarche comme avant ;
– Pr ´esentation –
I Leslistessont des tuples modifiables : on les cr ´ee comme les tuples, mais avec des crochets au lieu de parenth `eses :
Exemple
>>> lst1 = [3, 'toto', 4.5, False] # liste `a 4 ´el´ements
>>> lst2 = [] # liste vide
>>> lst3 = list() # liste vide
I Comme les chaˆınes et les tuples :
I x[i]donne l’ ´el ´ement en positioni;
I len(x)donne la longueur de la liste ;
I l’op ´erateurinmarche comme avant ;
– Pr ´esentation –
I Leslistessont des tuples modifiables : on les cr ´ee comme les tuples, mais avec des crochets au lieu de parenth `eses :
Exemple
>>> lst1 = [3, 'toto', 4.5, False] # liste `a 4 ´el´ements
>>> lst2 = [] # liste vide
>>> lst3 = list() # liste vide
I Comme les chaˆınes et les tuples :
I x[i]donne l’ ´el ´ement en positioni;
I len(x)donne la longueur de la liste ;
I l’op ´erateurinmarche comme avant ;
– Affectations et listes –
I On peut modifier une liste `a l’aide des crochets :
Exemple
>>> liste_3 = [1, 2.0, '3']
>>> liste_3
[1, 2.0, '3']
>>> liste_3[0] = -5
>>> liste_3
[-5, 2.0, '3']
– Affectations et objets modifiables –
Il y a des subtilit ´es ici, `a bien travailler.
I Que se passe-t-il quand on ´ecrit l’affectationy = x?
I Sixest non-modifiable : on copie le contenu dexdansy;
I Sixest modifiable :xetyd ´esignentla m ˆeme chose !;
Exemple
>>> lst = [3, 'toto', 4.5, False]
>>> lst2 = lst
>>> lst2[1] = 'titi'
>>> print(lst)
[3, 'titi', 4.5, False]
[Visualisation sur PythonTutor]
I On peut obtenir une “vraie” copie aveclist(); [Visualisation sur PythonTutor]
– Affectations et objets modifiables –
Il y a des subtilit ´es ici, `a bien travailler.
I Que se passe-t-il quand on ´ecrit l’affectationy = x?
I Sixest non-modifiable : on copie le contenu dexdansy;
I Sixest modifiable :xetyd ´esignentla m ˆeme chose !;
Exemple
>>> lst = [3, 'toto', 4.5, False]
>>> lst2 = lst
>>> lst2[1] = 'titi'
>>> print(lst)
[3, 'titi', 4.5, False]
[Visualisation sur PythonTutor]
I On peut obtenir une “vraie” copie aveclist(); [Visualisation sur PythonTutor]
– Affectations et objets modifiables –
Il y a des subtilit ´es ici, `a bien travailler.
I Que se passe-t-il quand on ´ecrit l’affectationy = x?
I Sixest non-modifiable : on copie le contenu dexdansy;
I Sixest modifiable :xetyd ´esignentla m ˆeme chose !;
Exemple
>>> lst = [3, 'toto', 4.5, False]
>>> lst2 = lst
>>> lst2[1] = 'titi'
>>> print(lst)
[3, 'titi', 4.5, False]
[Visualisation sur PythonTutor]
I On peut obtenir une “vraie” copie aveclist(); [Visualisation sur PythonTutor]
– Affectations et objets modifiables –
Il y a des subtilit ´es ici, `a bien travailler.
I Que se passe-t-il quand on ´ecrit l’affectationy = x?
I Sixest non-modifiable : on copie le contenu dexdansy;
I Sixest modifiable :xetyd ´esignentla m ˆeme chose !;
Exemple
>>> lst = [3, 'toto', 4.5, False]
>>> lst2 = lst
>>> lst2[1] = 'titi'
>>> print(lst)
[3, 'titi', 4.5, False]
[Visualisation sur PythonTutor]
I On peut obtenir une “vraie” copie aveclist(); [Visualisation sur PythonTutor]
– Affectations et objets modifiables –
Il y a des subtilit ´es ici, `a bien travailler.
I Que se passe-t-il quand on ´ecrit l’affectationy = x?
I Sixest non-modifiable : on copie le contenu dexdansy;
I Sixest modifiable :xetyd ´esignentla m ˆeme chose !;
Exemple
>>> lst = [3, 'toto', 4.5, False]
>>> lst2 = lst
>>> lst2[1] = 'titi'
>>> print(lst)
[3, 'titi', 4.5, False]
[Visualisation sur PythonTutor]
– Ajouter des ´el ´ements `a des listes –
I Lesm ´ethodessuivantes des listes permettent d’y ajouter des ´el ´ements :
1. lst.append(x): ajoute la valeur dex `a la fin delst; 2. lst.extend(iterable): ajoute tous les ´el ´ements de
iterable `a la fin delst;
3. lst.insert(i, elem): ajouteelemen positioni;
Exemple
>>> lst = list()
>>> lst.append(3)
>>> lst.extend(range(3))
>>> lst.insert(2, "bonjour")
>>> lst
[3, 0, 'bonjour', 1, 2]
– Ajouter des ´el ´ements `a des listes –
I Lesm ´ethodessuivantes des listes permettent d’y ajouter des ´el ´ements :
1. lst.append(x): ajoute la valeur dex `a la fin delst;
2. lst.extend(iterable): ajoute tous les ´el ´ements de iterable `a la fin delst;
3. lst.insert(i, elem): ajouteelemen positioni;
Exemple
>>> lst = list()
>>> lst.append(3)
>>> lst.extend(range(3))
>>> lst.insert(2, "bonjour")
>>> lst
[3, 0, 'bonjour', 1, 2]
– Ajouter des ´el ´ements `a des listes –
I Lesm ´ethodessuivantes des listes permettent d’y ajouter des ´el ´ements :
1. lst.append(x): ajoute la valeur dex `a la fin delst; 2. lst.extend(iterable): ajoute tous les ´el ´ements de
iterable `a la fin delst;
3. lst.insert(i, elem): ajouteelemen positioni;
Exemple
>>> lst = list()
>>> lst.append(3)
>>> lst.extend(range(3))
>>> lst.insert(2, "bonjour")
>>> lst
[3, 0, 'bonjour', 1, 2]
– Ajouter des ´el ´ements `a des listes –
I Lesm ´ethodessuivantes des listes permettent d’y ajouter des ´el ´ements :
1. lst.append(x): ajoute la valeur dex `a la fin delst; 2. lst.extend(iterable): ajoute tous les ´el ´ements de
iterable `a la fin delst;
3. lst.insert(i, elem): ajouteelemen positioni;
Exemple
>>> lst = list()
>>> lst.append(3)
>>> lst.extend(range(3))
>>> lst.insert(2, "bonjour")
>>> lst
[3, 0, 'bonjour', 1, 2]
– Ajouter des ´el ´ements `a des listes –
I Lesm ´ethodessuivantes des listes permettent d’y ajouter des ´el ´ements :
1. lst.append(x): ajoute la valeur dex `a la fin delst; 2. lst.extend(iterable): ajoute tous les ´el ´ements de
iterable `a la fin delst;
3. lst.insert(i, elem): ajouteelemen positioni;
Exemple
>>> lst = list()
>>> lst.append(3)
>>> lst.extend(range(3))
>>> lst.insert(2, "bonjour")
– Supprimer des ´el ´ements d’une liste –
I Les m ´ethodes suivantes des listes permettent de supprimer des ´el ´ements :
1. lst.pop(): supprime le dernier ´el ´ement delstet renvoie sa valeur ;
2. lst.pop(i): supprime lei- `eme ´el ´ement delstet renvoie sa valeur ;
3. lst.remove(x): supprime la premi `ere occurrence dex dans la liste si elle le contient (sinon, provoque une erreur) ;
Exemple
>>> lst = [3, 0, 'bonjour', 'bonjour', 1, 2]
>>> lst.pop()
2
>>> lst.pop(0)
3
>>> lst.remove("bonjour")
>>> lst
[0, 1, 'bonjour']
– Supprimer des ´el ´ements d’une liste –
I Les m ´ethodes suivantes des listes permettent de supprimer des ´el ´ements :
1. lst.pop(): supprime le dernier ´el ´ement delstet renvoie sa valeur ;
2. lst.pop(i): supprime lei- `eme ´el ´ement delstet renvoie sa valeur ;
3. lst.remove(x): supprime la premi `ere occurrence dex dans la liste si elle le contient (sinon, provoque une erreur) ;
Exemple
>>> lst = [3, 0, 'bonjour', 'bonjour', 1, 2]
>>> lst.pop()
2
>>> lst.pop(0)
3
>>> lst.remove("bonjour")
>>> lst
[0, 1, 'bonjour']
– Supprimer des ´el ´ements d’une liste –
I Les m ´ethodes suivantes des listes permettent de supprimer des ´el ´ements :
1. lst.pop(): supprime le dernier ´el ´ement delstet renvoie sa valeur ;
2. lst.pop(i): supprime lei- `eme ´el ´ement delstet renvoie sa valeur ;
3. lst.remove(x): supprime la premi `ere occurrence dex dans la liste si elle le contient (sinon, provoque une erreur) ;
Exemple
>>> lst = [3, 0, 'bonjour', 'bonjour', 1, 2]
>>> lst.pop()
2
>>> lst.pop(0)
3
>>> lst.remove("bonjour")
>>> lst
[0, 1, 'bonjour']
– Supprimer des ´el ´ements d’une liste –
I Les m ´ethodes suivantes des listes permettent de supprimer des ´el ´ements :
1. lst.pop(): supprime le dernier ´el ´ement delstet renvoie sa valeur ;
2. lst.pop(i): supprime lei- `eme ´el ´ement delstet renvoie sa valeur ;
3. lst.remove(x): supprime la premi `ere occurrence dex dans la liste si elle le contient (sinon, provoque une erreur) ;
Exemple
>>> lst = [3, 0, 'bonjour', 'bonjour', 1, 2]
>>> lst.pop()
2
>>> lst.pop(0)
3
>>> lst.remove("bonjour")
>>> lst
[0, 1, 'bonjour']
– Supprimer des ´el ´ements d’une liste –
I Les m ´ethodes suivantes des listes permettent de supprimer des ´el ´ements :
1. lst.pop(): supprime le dernier ´el ´ement delstet renvoie sa valeur ;
2. lst.pop(i): supprime lei- `eme ´el ´ement delstet renvoie sa valeur ;
3. lst.remove(x): supprime la premi `ere occurrence dex dans la liste si elle le contient (sinon, provoque une erreur) ;
Exemple
>>> lst = [3, 0, 'bonjour', 'bonjour', 1, 2]
>>> lst.pop()
2
>>> lst.pop(0)
3
– Transtypage entre it ´erables –
I Comme pour les entiers, r ´eels, ..., on peut transformer un it ´erable en un autre it ´erable ;
I On utilise pour cela les fonctions correspondantes (list, str,tuple) ;
Exemple
>>> list((1, 2, 3))
[1, 2, 3]
>>> tuple([4, 5, 6])
(4, 5, 6)
>>> list('abc')
['a', 'b', 'c']
>>> tuple('def')
('d', 'e', 'f')
>>> str([7, 8, 9])
'[7, 8, 9]'
– Transtypage entre it ´erables –
I Comme pour les entiers, r ´eels, ..., on peut transformer un it ´erable en un autre it ´erable ;
I On utilise pour cela les fonctions correspondantes (list, str,tuple) ;
Exemple
>>> list((1, 2, 3))
[1, 2, 3]
>>> tuple([4, 5, 6])
(4, 5, 6)
>>> list('abc')
['a', 'b', 'c']
>>> tuple('def')
('d', 'e', 'f')
>>> str([7, 8, 9])
'[7, 8, 9]'
– Transtypage entre it ´erables –
I Comme pour les entiers, r ´eels, ..., on peut transformer un it ´erable en un autre it ´erable ;
I On utilise pour cela les fonctions correspondantes (list, str,tuple) ;
Exemple
>>> list((1, 2, 3))
[1, 2, 3]
>>> tuple([4, 5, 6])
(4, 5, 6)
>>> list('abc')
['a', 'b', 'c']
>>> tuple('def')
Python pas `a pas
Bouclesfor (suite)
– Affectations dans un for –
Unfor ne peut pas modifier une liste sans utiliser les indices.
Exemple
>>> liste = [1, 2, 3]
>>> for element in liste:
... element += 1 ...
>>> liste
[1, 2, 3]
>>> for i in range(len(liste)):
... liste[i] += 1 ...
– break et continue –
I Il existe deux moyens pour interrompre une boucle :
I breakarr ˆete la boucle et reprend donc l’ex ´ecution du programme apr `es la boucle ;
I continuearr ˆete l’it ´eration en cours (on “continue” `a l’it ´eration suivante de la boucle) ;
for ...: break
suite du programme
for ...: continue
suite du programme
– break et continue –
I Il existe deux moyens pour interrompre une boucle :
I breakarr ˆete la boucle et reprend donc l’ex ´ecution du programme apr `es la boucle ;
I continuearr ˆete l’it ´eration en cours (on “continue” `a l’it ´eration suivante de la boucle) ;
for ...: break
suite du programme
for ...: continue
suite du programme
– break et continue –
I Il existe deux moyens pour interrompre une boucle :
I breakarr ˆete la boucle et reprend donc l’ex ´ecution du programme apr `es la boucle ;
I continuearr ˆete l’it ´eration en cours (on “continue” `a l’it ´eration suivante de la boucle) ;
for ...: break
suite du programme
for ...: continue
suite du programme
– break et continue –
I Il existe deux moyens pour interrompre une boucle :
I breakarr ˆete la boucle et reprend donc l’ex ´ecution du programme apr `es la boucle ;
I continuearr ˆete l’it ´eration en cours (on “continue” `a l’it ´eration suivante de la boucle) ;
for ...:
break
for ...:
continue