• Aucun résultat trouvé

Introduction `a l’algorithmique et `a la programmation

N/A
N/A
Protected

Academic year: 2022

Partager "Introduction `a l’algorithmique et `a la programmation"

Copied!
168
0
0

Texte intégral

(1)

Introduction `a l’algorithmique et `a la programmation

SHNU, 2019 – 2020

Anthony Labarre

Anthony.Labarre@u-pem.fr

(2)

– 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 ?

(3)

– Plan d’aujourd’hui –

Les chaˆınes de caract `eres Les tuples

Les listes

Bouclesfor(suite) Les fonctions Les doctests

(4)

Python pas `a pas

Les chaˆınes de caract `eres

(5)

– 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) ;

(6)

– 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) ;

(7)

– 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) ;

(8)

– 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;

(9)

– 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;

(10)

– 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;

(11)

– 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)

(12)

– 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

(13)

– 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

(14)

– 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

(15)

– 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

(16)

– 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]

(17)

– 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:

(18)

– 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

(19)

– 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

(20)

– 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

(21)

– 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

(22)

– 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

(23)

– 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

(24)

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

(25)

Python pas `a pas

Les tuples

(26)

– 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 ;

(27)

– 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 ;

(28)

– 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 ;

(29)

– 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 ;

(30)

– 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 ;

(31)

– 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 ;

(32)

– 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 ;

(33)

– 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 :

(34)

– 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)

(35)

– 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)

(36)

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

(37)

– ´ 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;

(38)

– ´ 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;

(39)

– ´ 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

(40)

Python pas `a pas

Les listes

(41)

– 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 ;

(42)

– 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 ;

(43)

– 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 ;

(44)

– 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 ;

(45)

– 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 ;

(46)

– 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 ;

(47)

– 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']

(48)

– 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]

(49)

– 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]

(50)

– 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]

(51)

– 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]

(52)

– 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]

(53)

– 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]

(54)

– 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]

(55)

– 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]

(56)

– 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]

(57)

– 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")

(58)

– 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']

(59)

– 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']

(60)

– 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']

(61)

– 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']

(62)

– 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

(63)

– 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]'

(64)

– 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]'

(65)

– 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')

(66)

Python pas `a pas

Bouclesfor (suite)

(67)

– 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 ...

(68)

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

(69)

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

(70)

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

(71)

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

Références

Documents relatifs

La problématique est la suivante : Peut-on affirmer, avec un faible risque de se tromper, que la production de pain complet n’est pas conforme aux règles européennes concernant

Lorsque l’on compile une unit´ e ou un programme qui utilise une unit´ e dont la date de compilation (.ppu) est plus ancienne que la date de modification du code source (.pas),

[r]

Quelques problèmes avec les tests tels que vous les avez pratiqués : Vous pensez qu’il n’y a pas de problèmes, alors que vous avez simplement oublié de lancer certains tests ;?. =

De mani`ere g´en´erale, on d´efinit le niveau (ou seuil) d’un test comme P (rejeter H 0 | H 0 vraie), la probabilit´e de rejeter l’hypoth`ese nulle dans le cas o` u elle est

1.2 Diagnostics pour d´ etecter des observations qui ont une influence d´ emesur´ ee sur les r´ esultats de l’estimation (coefficients, valeurs pr´ edites, variance estim´ ee

I D´ efinissons ˆ β (i ) comme le vecteur de param` etres estim´ es apr` es avoir laiss´ e tomber l’observation i de l’´ echantillon, et ˆ Y (i) le vecteur de valeurs pr´

Pour cela 50 plages proches de zones de rejet chimiques, sont obser- vées ; on compte alors le nombre de plages atteintes par l’algue nocive : on constate que 10 plages sont