(initiation à la) programmation (et à l'algorithmique ...€¦ · 4 une solution def...
TRANSCRIPT
![Page 1: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/1.jpg)
1
(Initiation à la) programmation(et à l'algorithmique)
Semaine 8
Université Paul Valéry Montpellier 3
Licence AES parcours Misahs
cours 2011-2012
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 2: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/2.jpg)
2
Partie 1 : correction des
exercices à faire pour
aujourd'hui
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 3: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/3.jpg)
3
Exercice
Écrire une fonction qui, étant données deux années, calcule lenombre de jours entre le premier janvier de la première année et le31 décembre de l'année précédent la deuxième année donnée.
Rappel : nous avons déjà écrit une fonction dont l'en-tête est
def est_annee_bissextile( annee ):
# retourne True si annee désigne une année bissextile,
# retourne False sinon.
Analyse du problème : données, résultats, ...
Ecriture de l'en-tête.
Ré�exion sur comment résoudre le problème : analyse d'unexemple (entre 2004 et 2011).
Ecriture d'un exemple.
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 4: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/4.jpg)
3
Exercice
Écrire une fonction qui, étant données deux années, calcule lenombre de jours entre le premier janvier de la première année et le31 décembre de l'année précédent la deuxième année donnée.
Rappel : nous avons déjà écrit une fonction dont l'en-tête est
def est_annee_bissextile( annee ):
# retourne True si annee désigne une année bissextile,
# retourne False sinon.
Analyse du problème : données, résultats, ...
Ecriture de l'en-tête.
Ré�exion sur comment résoudre le problème : analyse d'unexemple (entre 2004 et 2011).
Ecriture d'un exemple.
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 5: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/5.jpg)
4
Une solution
def nb_jours_entre_deux_annees( annee1, annee2):# Calcule le nombre de jours entre le 1er janvier annee1# et 31 décembre (annee2 -1)
annee = annee1nbj = 0while annee < annee2:
if est_annee_bissextile( annee ):nbj = nbj + 366
else:nbj = nbj + 365
annee = annee + 1return nbj
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 6: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/6.jpg)
5
Exercice
Écrire une fonction qui étant donnée deux dates, calcule le nombrede jours entre les deux dates sans compter le jour de la deuxièmedate.
def nb_jours_entre_deux_dates( j1, m1, a1, j2, m2, a2):# Calcule le nombre de jours entre la date j1/m1/a1# et la veille de j2/m2/a2
nbj1 = nb_jours_depuis_1_janvier( j1,m1,a1)nbj2 = nb_jours_depuis_1_janvier( j2,m2,a2)nbj3 = nb_jours_entre_deux_annees( a1, a2)return nbj2-nbj1+nbj3
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 7: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/7.jpg)
5
Exercice
Écrire une fonction qui étant donnée deux dates, calcule le nombrede jours entre les deux dates sans compter le jour de la deuxièmedate.
def nb_jours_entre_deux_dates( j1, m1, a1, j2, m2, a2):# Calcule le nombre de jours entre la date j1/m1/a1# et la veille de j2/m2/a2
nbj1 = nb_jours_depuis_1_janvier( j1,m1,a1)nbj2 = nb_jours_depuis_1_janvier( j2,m2,a2)nbj3 = nb_jours_entre_deux_annees( a1, a2)return nbj2-nbj1+nbj3
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 8: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/8.jpg)
6
Calendrier perpétuel
Voir �chier python annexe.
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 10: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/10.jpg)
8
Introduction
Objectifs
Pouvoir agglomérer dans une seule entité, un ensemble ordonné dedonnées.
Explications :
"dans une seule entité" : en particulier, dans une seulevariable.
"un ensemble ordonné" : il y a un premier élément, undeuxième, etc...
Exemples :
une date ;
les données d'un client, d'un salarié ;
une suite de nombres ;
. . .
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 11: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/11.jpg)
8
Introduction
Objectifs
Pouvoir agglomérer dans une seule entité, un ensemble ordonné dedonnées.
Explications :
"dans une seule entité" : en particulier, dans une seulevariable.
"un ensemble ordonné" : il y a un premier élément, undeuxième, etc...
Exemples :
une date ;
les données d'un client, d'un salarié ;
une suite de nombres ;
. . .
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 12: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/12.jpg)
8
Introduction
Objectifs
Pouvoir agglomérer dans une seule entité, un ensemble ordonné dedonnées.
Explications :
"dans une seule entité" : en particulier, dans une seulevariable.
"un ensemble ordonné" : il y a un premier élément, undeuxième, etc...
Exemples :
une date ;
les données d'un client, d'un salarié ;
une suite de nombres ;
. . .
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 13: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/13.jpg)
8
Introduction
Objectifs
Pouvoir agglomérer dans une seule entité, un ensemble ordonné dedonnées.
Explications :
"dans une seule entité" : en particulier, dans une seulevariable.
"un ensemble ordonné" : il y a un premier élément, undeuxième, etc...
Exemples :
une date ;
les données d'un client, d'un salarié ;
une suite de nombres ;
. . .
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 14: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/14.jpg)
8
Introduction
Objectifs
Pouvoir agglomérer dans une seule entité, un ensemble ordonné dedonnées.
Explications :
"dans une seule entité" : en particulier, dans une seulevariable.
"un ensemble ordonné" : il y a un premier élément, undeuxième, etc...
Exemples :
une date ;
les données d'un client, d'un salarié ;
une suite de nombres ;
. . .
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 15: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/15.jpg)
9
Introduction
Remarques
La notion d'objet qui sera abordée au second semestres'avérera plus intéressante pour la gestion de certainsensembles de données.
Il existe, en Python, d'autres types permettant de structurerdes données.Notamment les tuples à ne pas confondre avec les listes.
Chaque langage propose ses propres types de structuration(plus ou moins agréables).
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 16: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/16.jpg)
9
Introduction
Remarques
La notion d'objet qui sera abordée au second semestres'avérera plus intéressante pour la gestion de certainsensembles de données.
Il existe, en Python, d'autres types permettant de structurerdes données.Notamment les tuples à ne pas confondre avec les listes.
Chaque langage propose ses propres types de structuration(plus ou moins agréables).
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 17: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/17.jpg)
9
Introduction
Remarques
La notion d'objet qui sera abordée au second semestres'avérera plus intéressante pour la gestion de certainsensembles de données.
Il existe, en Python, d'autres types permettant de structurerdes données.Notamment les tuples à ne pas confondre avec les listes.
Chaque langage propose ses propres types de structuration(plus ou moins agréables).
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 18: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/18.jpg)
10
Exemples de listes
date = [ 1, 10, 2010 ]
Virgule = séparateur.
Les crochets sont obligatoires.
Si oubliés, c'est comme si on mettait des parenthèses : on
dé�nit alors un tuple.
Exemples : retour de fonction !
Tuple 6= Liste
Les listes sont modi�ables. Pas les tuples.
semaine = ["lundi", "mardi", "mercredi", "jeudi",
"vendredi", "samedi", "dimanche"]
Pas de ... dans les dé�nitions !
personnes = [ ["Tom", "Sawyer", 15],
["Huckleberry", "Finn", 17] ]
prix = [ 12.3 , 0.4, 13.2, 4.1, 12, 13.5]
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 19: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/19.jpg)
10
Exemples de listes
date = [ 1, 10, 2010 ]
Virgule = séparateur.
Les crochets sont obligatoires.
Si oubliés, c'est comme si on mettait des parenthèses : on
dé�nit alors un tuple.
Exemples : retour de fonction !
Tuple 6= Liste
Les listes sont modi�ables. Pas les tuples.
semaine = ["lundi", "mardi", "mercredi", "jeudi",
"vendredi", "samedi", "dimanche"]
Pas de ... dans les dé�nitions !
personnes = [ ["Tom", "Sawyer", 15],
["Huckleberry", "Finn", 17] ]
prix = [ 12.3 , 0.4, 13.2, 4.1, 12, 13.5]
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 20: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/20.jpg)
10
Exemples de listes
date = [ 1, 10, 2010 ]
Virgule = séparateur.
Les crochets sont obligatoires.
Si oubliés, c'est comme si on mettait des parenthèses : on
dé�nit alors un tuple.
Exemples : retour de fonction !
Tuple 6= Liste
Les listes sont modi�ables. Pas les tuples.
semaine = ["lundi", "mardi", "mercredi", "jeudi",
"vendredi", "samedi", "dimanche"]
Pas de ... dans les dé�nitions !
personnes = [ ["Tom", "Sawyer", 15],
["Huckleberry", "Finn", 17] ]
prix = [ 12.3 , 0.4, 13.2, 4.1, 12, 13.5]
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 21: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/21.jpg)
10
Exemples de listes
date = [ 1, 10, 2010 ]
Virgule = séparateur.
Les crochets sont obligatoires.
Si oubliés, c'est comme si on mettait des parenthèses : on
dé�nit alors un tuple.
Exemples : retour de fonction !
Tuple 6= Liste
Les listes sont modi�ables. Pas les tuples.
semaine = ["lundi", "mardi", "mercredi", "jeudi",
"vendredi", "samedi", "dimanche"]
Pas de ... dans les dé�nitions !
personnes = [ ["Tom", "Sawyer", 15],
["Huckleberry", "Finn", 17] ]
prix = [ 12.3 , 0.4, 13.2, 4.1, 12, 13.5]
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 22: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/22.jpg)
11
Premières opérations sur les listes
Constructeur : [ , , ...]
Liste vide : [ ]
Longueur d'une liste : fonction len
Accès à un élément
Les éléments d'une liste l sont numérotés de 0 à len(l)-1.Si 0 ≤ i ≤ len(l)− 1, l[i] désigne l'élément en position i
(à l'index i).
Via la notation précédente, il est possible de récupérer lavaleur d'un élément de la liste ou de la modi�er.
>>> l =[ 2, "a", 3.1, 7]
>>> l
[2, 'a', 3.1000000000000001, 7]
>>> l[0]
2
>>> l[2] = "new"
>>> l
[2, 'a', 'new', 7]
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 23: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/23.jpg)
11
Premières opérations sur les listes
Constructeur : [ , , ...]
Liste vide : [ ]
Longueur d'une liste : fonction len
Accès à un élément
Les éléments d'une liste l sont numérotés de 0 à len(l)-1.Si 0 ≤ i ≤ len(l)− 1, l[i] désigne l'élément en position i
(à l'index i).
Via la notation précédente, il est possible de récupérer lavaleur d'un élément de la liste ou de la modi�er.
>>> l =[ 2, "a", 3.1, 7]
>>> l
[2, 'a', 3.1000000000000001, 7]
>>> l[0]
2
>>> l[2] = "new"
>>> l
[2, 'a', 'new', 7]
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 24: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/24.jpg)
11
Premières opérations sur les listes
Constructeur : [ , , ...]
Liste vide : [ ]
Longueur d'une liste : fonction len
Accès à un élément
Les éléments d'une liste l sont numérotés de 0 à len(l)-1.Si 0 ≤ i ≤ len(l)− 1, l[i] désigne l'élément en position i
(à l'index i).
Via la notation précédente, il est possible de récupérer lavaleur d'un élément de la liste ou de la modi�er.
>>> l =[ 2, "a", 3.1, 7]
>>> l
[2, 'a', 3.1000000000000001, 7]
>>> l[0]
2
>>> l[2] = "new"
>>> l
[2, 'a', 'new', 7]
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 25: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/25.jpg)
11
Premières opérations sur les listes
Constructeur : [ , , ...]
Liste vide : [ ]
Longueur d'une liste : fonction len
Accès à un élément
Les éléments d'une liste l sont numérotés de 0 à len(l)-1.Si 0 ≤ i ≤ len(l)− 1, l[i] désigne l'élément en position i
(à l'index i).
Via la notation précédente, il est possible de récupérer lavaleur d'un élément de la liste ou de la modi�er.
>>> l =[ 2, "a", 3.1, 7]
>>> l
[2, 'a', 3.1000000000000001, 7]
>>> l[0]
2
>>> l[2] = "new"
>>> l
[2, 'a', 'new', 7]
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 26: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/26.jpg)
11
Premières opérations sur les listes
Constructeur : [ , , ...]
Liste vide : [ ]
Longueur d'une liste : fonction len
Accès à un élément
Les éléments d'une liste l sont numérotés de 0 à len(l)-1.Si 0 ≤ i ≤ len(l)− 1, l[i] désigne l'élément en position i
(à l'index i).
Via la notation précédente, il est possible de récupérer lavaleur d'un élément de la liste ou de la modi�er.
>>> l =[ 2, "a", 3.1, 7]
>>> l
[2, 'a', 3.1000000000000001, 7]
>>> l[0]
2
>>> l[2] = "new"
>>> l
[2, 'a', 'new', 7]
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 27: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/27.jpg)
11
Premières opérations sur les listes
Constructeur : [ , , ...]
Liste vide : [ ]
Longueur d'une liste : fonction len
Accès à un élément
Les éléments d'une liste l sont numérotés de 0 à len(l)-1.Si 0 ≤ i ≤ len(l)− 1, l[i] désigne l'élément en position i
(à l'index i).
Via la notation précédente, il est possible de récupérer lavaleur d'un élément de la liste ou de la modi�er.
>>> l =[ 2, "a", 3.1, 7]
>>> l
[2, 'a', 3.1000000000000001, 7]
>>> l[0]
2
>>> l[2] = "new"
>>> l
[2, 'a', 'new', 7]
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 28: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/28.jpg)
11
Premières opérations sur les listes
Constructeur : [ , , ...]
Liste vide : [ ]
Longueur d'une liste : fonction len
Accès à un élément
Les éléments d'une liste l sont numérotés de 0 à len(l)-1.Si 0 ≤ i ≤ len(l)− 1, l[i] désigne l'élément en position i
(à l'index i).
Via la notation précédente, il est possible de récupérer lavaleur d'un élément de la liste ou de la modi�er.
>>> l =[ 2, "a", 3.1, 7]
>>> l
[2, 'a', 3.1000000000000001, 7]
>>> l[0]
2
>>> l[2] = "new"
>>> l
[2, 'a', 'new', 7]
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 29: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/29.jpg)
12
Exercice
Écrire une fonction qui, étant donnée une liste l, a�che sesdi�érents éléments.
def affiche_liste( l ):
# Affiche dans l'ordre les éléments de la liste
i = 0
while i < len( l ):
print( l[i] )
i = i + 1
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 30: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/30.jpg)
12
Exercice
Écrire une fonction qui, étant donnée une liste l, a�che sesdi�érents éléments.
def affiche_liste( l ):
# Affiche dans l'ordre les éléments de la liste
i = 0
while i < len( l ):
print( l[i] )
i = i + 1
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 31: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/31.jpg)
12
Exercice
Écrire une fonction qui, étant donnée une liste l, a�che sesdi�érents éléments.
def affiche_liste( l ):
# Affiche dans l'ordre les éléments de la liste
i = 0
while i < len( l ):
print( l[i] )
i = i + 1
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 32: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/32.jpg)
13
Exercice
Écrire une fonction qui, étant donnée une liste l, récupère la listedans une chaîne de caractères.
def liste2chaine( l ):
# Transforme une liste en chaîne affichable
if l == [] :
s = str( l[0] )
i = 1
while i < len( l ):
s = s + ", " + str( l[i] )
i = i + 1
else:
s = ""
return s
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 33: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/33.jpg)
13
Exercice
Écrire une fonction qui, étant donnée une liste l, récupère la listedans une chaîne de caractères.
def liste2chaine( l ):
# Transforme une liste en chaîne affichable
if l == [] :
s = str( l[0] )
i = 1
while i < len( l ):
s = s + ", " + str( l[i] )
i = i + 1
else:
s = ""
return s
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 34: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/34.jpg)
13
Exercice
Écrire une fonction qui, étant donnée une liste l, récupère la listedans une chaîne de caractères.
def liste2chaine( l ):
# Transforme une liste en chaîne affichable
if l == [] :
s = str( l[0] )
i = 1
while i < len( l ):
s = s + ", " + str( l[i] )
i = i + 1
else:
s = ""
return s
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 35: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/35.jpg)
14
La fonction range
range( n ) retourne la liste des entiers de 0 à n-1.range(min, max) retourne la liste des entiers de min à max-1range(min, max, pas) retourne la liste des entiers de la forme
min + k * pas qui sont strictement inférieurs à max.
>>> range(3)
[0, 1, 2]
>>> range( 3, 6)
[3, 4, 5]
>>> range(10, 32, 5)
[10, 15, 20, 25, 30]
Remarque :en fait, c'est un itérateur qui est retourné et pas une liste !
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 36: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/36.jpg)
14
La fonction range
range( n ) retourne la liste des entiers de 0 à n-1.range(min, max) retourne la liste des entiers de min à max-1range(min, max, pas) retourne la liste des entiers de la forme
min + k * pas qui sont strictement inférieurs à max.
>>> range(3)
[0, 1, 2]
>>> range( 3, 6)
[3, 4, 5]
>>> range(10, 32, 5)
[10, 15, 20, 25, 30]
Remarque :en fait, c'est un itérateur qui est retourné et pas une liste !
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 37: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/37.jpg)
15
L'instruction for
for i in range(min, max):
instructions
réalise exactement la même chose que :i = min
while i < max:
instructions
i = i + 1
Avantage : plus compact, plus clair.Inconvénient : n'existe pas dans la plupart des autres langages deprogrammation ; plus di�cile à tracer car mécanisme caché.
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 38: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/38.jpg)
15
L'instruction for
for i in range(min, max):
instructions
réalise exactement la même chose que :i = min
while i < max:
instructions
i = i + 1
Avantage : plus compact, plus clair.Inconvénient : n'existe pas dans la plupart des autres langages deprogrammation ; plus di�cile à tracer car mécanisme caché.
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 39: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/39.jpg)
16
Exemples
def a�che_liste_2( l ):# A�che dans l'ordre les éléments de la liste
for i in range( 0, len( l )):print( l[i] )
def liste2chaine_2( l ):# Transforme une liste en chaîne a�chable
if l == []s = str( l[0] )for i in range( 1, len( l ) ):
s = s + ", " + str( l[i] )else :
s = ""return s
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 40: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/40.jpg)
17
Agrandir une liste
Concaténation : +Exemple : [ 2, 1 ] + [2, 6] vaut la liste [2, 1, 2, 6]
Ajout d'un élément dans une liste l :Utiliser la concaténation.
l.append
Exemple : si l vaut [2, 1, 2, 6],
l.append( 10) vaut [2, 1, 2, 6, 10].
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 41: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/41.jpg)
17
Agrandir une liste
Concaténation : +Exemple : [ 2, 1 ] + [2, 6] vaut la liste [2, 1, 2, 6]
Ajout d'un élément dans une liste l :Utiliser la concaténation.
l.append
Exemple : si l vaut [2, 1, 2, 6],
l.append( 10) vaut [2, 1, 2, 6, 10].
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 42: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/42.jpg)
18
Exercice
Écrire une fonction permettant de saisir une liste d'entiersstrictement positifs au clavier (la saisie d'une valeur négative ounulle provoquera l'arrêt de la saisie).
def saisie_liste_entiers_positifs():
# Saisie une liste d'entiers positifs
# La saisie d'une valeur inférieure ou égale à 0
# provoque l'arrêt de la saisie
print("Donnez des entiers strictement positifs séparés
par des passages à la ligne")
print("Tapez un nombre <= 0 pour arrêter")
x = int(input())
l = [ ]
while ( x > 0):
l = l + [x]
x = int(input())
return l
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 43: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/43.jpg)
18
Exercice
Écrire une fonction permettant de saisir une liste d'entiersstrictement positifs au clavier (la saisie d'une valeur négative ounulle provoquera l'arrêt de la saisie).
def saisie_liste_entiers_positifs():
# Saisie une liste d'entiers positifs
# La saisie d'une valeur inférieure ou égale à 0
# provoque l'arrêt de la saisie
print("Donnez des entiers strictement positifs séparés
par des passages à la ligne")
print("Tapez un nombre <= 0 pour arrêter")
x = int(input())
l = [ ]
while ( x > 0):
l = l + [x]
x = int(input())
return l
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 44: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/44.jpg)
19
Exercice
Écrire une fonction permettant de saisir une liste de n entiers, où nest un entier fourni à la fonction.
def saisie_liste_2( n ): # Saisie de n entiers
l = [ ]
i = 1
while i <= n:
x = input("Donnez le " +str(i)+ "eme entier : ")
l = l + [ int(x) ]
i = i +1
return l
def saisie_liste( n ): # Saisie de n entiers
l = [ ]
for i in range(1, n+1):
x = input("Donnez le " +str(i)+ "eme entier : ")
l = l + [ int(x) ]
return l
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 45: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/45.jpg)
19
Exercice
Écrire une fonction permettant de saisir une liste de n entiers, où nest un entier fourni à la fonction.
def saisie_liste_2( n ): # Saisie de n entiers
l = [ ]
i = 1
while i <= n:
x = input("Donnez le " +str(i)+ "eme entier : ")
l = l + [ int(x) ]
i = i +1
return l
def saisie_liste( n ): # Saisie de n entiers
l = [ ]
for i in range(1, n+1):
x = input("Donnez le " +str(i)+ "eme entier : ")
l = l + [ int(x) ]
return l
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 46: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/46.jpg)
19
Exercice
Écrire une fonction permettant de saisir une liste de n entiers, où nest un entier fourni à la fonction.
def saisie_liste_2( n ): # Saisie de n entiers
l = [ ]
i = 1
while i <= n:
x = input("Donnez le " +str(i)+ "eme entier : ")
l = l + [ int(x) ]
i = i +1
return l
def saisie_liste( n ): # Saisie de n entiers
l = [ ]
for i in range(1, n+1):
x = input("Donnez le " +str(i)+ "eme entier : ")
l = l + [ int(x) ]
return l
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 47: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/47.jpg)
20
Autres opérations
Suppression :
del l[i] : permet de supprimer la valeur à l'index i dans la liste l
Accès par tranche (technique de slicing) :
l[i:j] : désigne la sous liste de de l'index i à l'indice j-1.l[:j] : désigne la sous liste de de l'index 0 à l'indice j-1.l[i:] : désigne la sous liste de de l'index i à l'indice len(l)-1.
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 48: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/48.jpg)
21
Exemple
>>> l = range( 5 ) + range (2, 8, 2)
>>> l
[0, 1, 2, 3, 4, 2, 4, 6]
>>> del l[2]
>>> l
[0, 1, 3, 4, 2, 4, 6]
>>> l[1:4]
[1, 3, 4]
>>> l[5:]
[4, 6]
>>> l[:2]
[0, 1]
>>> l[1:1] = [8]
>>> l
[0, 8, 1, 3, 4, 2, 4, 6]
>>> l[2:] = [ 9 , 1]
>>> l
[0, 8, 9, 1]
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 49: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/49.jpg)
21
Exemple
>>> l = range( 5 ) + range (2, 8, 2)
>>> l
[0, 1, 2, 3, 4, 2, 4, 6]
>>> del l[2]
>>> l
[0, 1, 3, 4, 2, 4, 6]
>>> l[1:4]
[1, 3, 4]
>>> l[5:]
[4, 6]
>>> l[:2]
[0, 1]
>>> l[1:1] = [8]
>>> l
[0, 8, 1, 3, 4, 2, 4, 6]
>>> l[2:] = [ 9 , 1]
>>> l
[0, 8, 9, 1]
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 50: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/50.jpg)
21
Exemple
>>> l = range( 5 ) + range (2, 8, 2)
>>> l
[0, 1, 2, 3, 4, 2, 4, 6]
>>> del l[2]
>>> l
[0, 1, 3, 4, 2, 4, 6]
>>> l[1:4]
[1, 3, 4]
>>> l[5:]
[4, 6]
>>> l[:2]
[0, 1]
>>> l[1:1] = [8]
>>> l
[0, 8, 1, 3, 4, 2, 4, 6]
>>> l[2:] = [ 9 , 1]
>>> l
[0, 8, 9, 1]
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 51: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/51.jpg)
21
Exemple
>>> l = range( 5 ) + range (2, 8, 2)
>>> l
[0, 1, 2, 3, 4, 2, 4, 6]
>>> del l[2]
>>> l
[0, 1, 3, 4, 2, 4, 6]
>>> l[1:4]
[1, 3, 4]
>>> l[5:]
[4, 6]
>>> l[:2]
[0, 1]
>>> l[1:1] = [8]
>>> l
[0, 8, 1, 3, 4, 2, 4, 6]
>>> l[2:] = [ 9 , 1]
>>> l
[0, 8, 9, 1]
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 52: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/52.jpg)
21
Exemple
>>> l = range( 5 ) + range (2, 8, 2)
>>> l
[0, 1, 2, 3, 4, 2, 4, 6]
>>> del l[2]
>>> l
[0, 1, 3, 4, 2, 4, 6]
>>> l[1:4]
[1, 3, 4]
>>> l[5:]
[4, 6]
>>> l[:2]
[0, 1]
>>> l[1:1] = [8]
>>> l
[0, 8, 1, 3, 4, 2, 4, 6]
>>> l[2:] = [ 9 , 1]
>>> l
[0, 8, 9, 1]
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 53: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/53.jpg)
21
Exemple
>>> l = range( 5 ) + range (2, 8, 2)
>>> l
[0, 1, 2, 3, 4, 2, 4, 6]
>>> del l[2]
>>> l
[0, 1, 3, 4, 2, 4, 6]
>>> l[1:4]
[1, 3, 4]
>>> l[5:]
[4, 6]
>>> l[:2]
[0, 1]
>>> l[1:1] = [8]
>>> l
[0, 8, 1, 3, 4, 2, 4, 6]
>>> l[2:] = [ 9 , 1]
>>> l
[0, 8, 9, 1]
[email protected] (Initiation à la) programmation (et à l'algorithmique)
![Page 54: (Initiation à la) programmation (et à l'algorithmique ...€¦ · 4 Une solution def nb_jours_entre_deux_annees( annee1, annee2): # Calcule le nombre de jours entre le 1er janvier](https://reader036.vdocuments.pub/reader036/viewer/2022071213/60345961bc3778325e60be2c/html5/thumbnails/54.jpg)
21
Exemple
>>> l = range( 5 ) + range (2, 8, 2)
>>> l
[0, 1, 2, 3, 4, 2, 4, 6]
>>> del l[2]
>>> l
[0, 1, 3, 4, 2, 4, 6]
>>> l[1:4]
[1, 3, 4]
>>> l[5:]
[4, 6]
>>> l[:2]
[0, 1]
>>> l[1:1] = [8]
>>> l
[0, 8, 1, 3, 4, 2, 4, 6]
>>> l[2:] = [ 9 , 1]
>>> l
[0, 8, 9, 1]
[email protected] (Initiation à la) programmation (et à l'algorithmique)