• Aucun résultat trouvé

Cours Introduction à la Programmation Python III (IP1 Python)

N/A
N/A
Protected

Academic year: 2022

Partager "Cours Introduction à la Programmation Python III (IP1 Python)"

Copied!
31
0
0

Texte intégral

(1)

Cours Introduction à la Programmation Python III

(IP1 Python)

Arnaud Sangnier sangnier@irif.fr

Mercredi 18 Octobre 2017

MIASHS et MATHS

(2)

Dans les épisodes précédents

Présentation de certains aspects de Python 3

Ce que nous avons vu :

Les données et leur type : int , str et bool

Les variables : affectation, lecture, modification

Toutes les instructions :

manipulation de variables

boucles

tests

appel de fonctions

Définition de fonctions

(3)

Stocker des données d'une autre façon

Imaginons qu'un programme veuille calculer la moyenne d'age d'une population de 1000 personnnes

Pour cela il pourrait utiliser une fonction moyenne qui prendrait en paramètres 1000 entiers et renverrait la moyenne

Deux questions :

Combien de variables faudrait-il ? Du coup 1000

Est ce que la fonction qui prendrait en paramètres 5000 entiers et renverrait la moyenne serait très différente ? Non

On peut résoudre ces problèmes en utilisant une liste pour stocker les données

(4)

Les listes

Une liste peut être vue comme un ensemble de cases mémoires consécutives contenant des données

Par exemple : l = [1, 2, 3, 2, 1] est une liste que l'on pourrait représenter sous la forme

0, 1, 2,3 et 4 sont les indices de la liste

C'est comme si on avait 5 variables l[0], l[1], l[2],l[3] et l[4]

1 2 3 2 1

0 1

0 2 3 4

(5)

Manipulation de listes

Pour créer une liste :

On peut faire l = [5,6,7]

Mais aussi l = [0] * 1000 ← Crée une liste avec 1000 zéros

Pour modifier la i-ème case d'une liste l, on peut faire l[i]=3

Attention si i dépasse la taille de la liste -1 on a un problème

Taille de la liste : nombre cases de la liste

Les indices vont de 0 à la taille de la liste -1

La taille d'une liste l est donné par len(l)

(6)

Les listes → un nouveau type

Quand on crée une liste l = [5,6,7], on obtient un nouveau type de données → list

Qu’est ce que cela implique :

On a des variables indiquant des listes

On peut donner des listes en argument de fonctions

Les fonctions peuvent retourner des listes

De plus, les éléments dans une liste peuvent être des données d’autres types

Donc, on peut avoir:

des listes d’entiers

des listes de chaînes de caractères

des listes de booléens

mais aussi des listes de listes

des listes de listes de listes

etc

(7)

Des concepts importants sur les listes

On va vouloir créer des méthodes qui marchent pour des listes dont on ne connaît pas la taille

Pour cela la fonction len qui donne la taille de la liste sera nécessaire)

Par exemple:

Afficher tous les éléments d’une liste

Chercher le plus petit élément d’une liste

Chercher si un élément d’une liste

etc

L’utilisation de boucles pour parcourir la liste

sera nécessaire

(8)

Parcours de listes

L’idée d’un parcours de listes et de faire un

programme qui va voir les éléments d’une liste un par un

Par exemple,

si on a une liste indiquée par une variable li

on sait que la taille de la liste est len(li)

On va d’abord regarder l’élément li[0], puis li[1], puis li[2],…,jusqu’à li[len(li)-1]

for i in range(0,len(li),1):

print(li[i])

(9)

Première fonction avec listes

Écrire une procédure affiche qui ligne par ligne les éléments d’une liste

Cette fonction prend comme argument une liste, appelons la lis

Elle ne renvoie rien

Elle ne fait qu’afficher

def affiche (lis) :

for i in range(0,len(lis),1):

print(lis[i])

(10)

Recherche d’éléments

On veut chercher si un élément, par exemple un

entier stockée dans une variable a est dans une liste li

Comment faire ?

Il faut parcourir la liste

Tester si un des li[i] pour i allant de 0 à len(li)-1 est égal à a

Mais que fait-on si c’est égal ou différent

Si c’est différent, il faut continuer le parcours

Si c’est égal, on peut continuer le parcours mais il faut se rappeler que l’on a vu l’élément, comment faire ?

On va utiliser une variable booléenne qui sera fausse jusqu’à ce que l’on rencontre l’élément

(11)

Intuition

On cherche 3 dans la liste ci-dessous

1 2 3 2 1

False notre variable

booléenne

(12)

Intuition

On cherche 3 dans la liste ci-dessous

1 2 3 2 1

False notre variable

booléenne

(13)

Intuition

On cherche 3 dans la liste ci-dessous

On le trouve, la variable booléenne change

1 2 3 2 1

False notre variable

booléenne

(14)

Intuition

On cherche 3 dans la liste ci-dessous

On le trouve, la variable booléenne change

1 2 3 2 1

True notre variable

booléenne

(15)

Intuition

On cherche 3 dans la liste ci-dessous

1 2 3 2 1

True notre variable

booléenne

(16)

Intuition

On cherche 3 dans la liste ci-dessous

1 2 3 2 1

True notre variable

booléenne

(17)

Recherche d’éléments

Écrire une fonction qui renvoie True si un entier a est présent dans une liste d’enties li

Cette fonction prend deux arguments: une liste d’entiers li et un entier a

Elle renvoie un booléen

On va l’appeler cherche

def cherche(li, a) : r = False

for i in range(0,len(li),1):

if(li[i]==a):

r = True return r

(18)

Erreur classique

On cherche 3 dans la liste ci-dessous

1 2 3 2 1

False notre variable

booléenne r

def cherche(li, a) : r = False

for i in range(0,len(li),1):

if(li[i]==a):

r = True else : r=False return r fausse solution !

(19)

Erreur classique

On cherche 3 dans la liste ci-dessous

1 2 3 2 1

False notre variable

booléenne r

def cherche(li, a) : r = False

for i in range(0,len(li),1):

if(li[i]==a):

r = True else : r=False return r fausse solution !

(20)

Erreur classique

On cherche 3 dans la liste ci-dessous

1 2 3 2 1

True notre variable

booléenne r

def cherche(li, a) : r = False

for i in range(0,len(li),1):

if(li[i]==a):

r = True else : r=False return r fausse solution !

(21)

Erreur classique

On cherche 3 dans la liste ci-dessous

1 2 3 2 1

True notre variable

booléenne r

def cherche(li, a) : r = False

for i in range(0,len(li),1):

if(li[i]==a):

r = True else : r=False return r fausse solution !

(22)

Erreur classique

On cherche 3 dans la liste ci-dessous

1 2 3 2 1

True notre variable

booléenne r

def cherche(li, a) : r = False

for i in range(0,len(li),1):

if(li[i]==a):

r = True else : r=False return r fausse solution !

(23)

Création de listes

On utilise aussi des fonctions pour créer des listes

Par exemple, une fonction seq qui crée une

liste de taille n de la forme : [1,2,3,4,5,6,7,…,n]

Cette fonction prend un argument n et renvoie une liste

Il y a deux étapes

1)

On initialise la liste li= [0]*n

2)

On la remplit correctement avec un parcours qui change chaque élément

(24)

Intuition

Que fait seq(5) ?

(25)

Intuition

Que fait seq(5) ?

0 0 0 0 0

(26)

Intuition

Que fait seq(5) ?

1 0 0 0 0

(27)

Intuition

Que fait seq(5) ?

1 2 0 0 0

(28)

Intuition

Que fait seq(5) ?

1 2 3 0 0

(29)

Intuition

Que fait seq(5) ?

1 2 3 4 0

(30)

Intuition

Que fait seq(5) ?

1 2 3 4 5

(31)

Solution

def seq (n) : li = [0]*n

for i in range(0,len(li),1):

li[i] = i+1 return li

Références

Documents relatifs

Prévoir l’affichage de

Q - 12 : Déterminer la liste des nombres premiers jusqu’à 1000 en utilisant, soit vos fonctions précédemment créées, soit une liste Python normale L. L YCÉE C ARNOT (D IJON ) 2/2

Q4: Écrire une fonction « makeHorizontalWord(m,n,board,w,r,c,p) » qui prend en paramètre deux entiers positifs m et n , un plateau board de m lignes de n colonnes, le mot w que

● Il faut aussi définir les fonctions que l’on utilise dans le programme!. Typiquement on les met avant

● Le code source est ensuite soit traduit vers un langage compréhensible par la machine (langage binaire), on parle de compilation, soit il est interprété par un interpréteur

● Pour qu'un programme affiche quelque chose, il faut qu'on lui dise, par exemple :.. print (''Hello

● Il faut aussi définir les fonctions que l’on utilise dans le programme. Typiquement on les met avant dans

● En fait dans le cas 1), on peut même faire une fonction qui ne renvoie rien → une procédure qui ne fait que modifier liste.. Un autre problème classique. ● Il faut faire