79
Présentation rapide de Python F. Kany. ISEN-Brest & La Croix-Rouge

Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Présentation rapide de Python

F. Kany. ISEN-Brest & La Croix-Rouge

Page 2: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Présentation du langage

Développé depuis 1989 par Guido van Rossum

Langage

Portable (parce qu’interprété)GratuitDynamiqueExtensible (nombreuses librairies externes)En évolution permanente

Page 3: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Ressources documentaires

Livres

"Apprendre à programmer avec Python 3", GérardSwinnen, Eyrolles"A primer on Scientific Programming with Python", 2ndedition, Hans Petter Langtangen, Springer

Web :

Page officielle de Python : http ://www.python.org/Un tutoriel :http ://www.siteduzero.com/informatique/tutoriels/apprenez-a-programmer-en-python

Page 4: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Plan du cours

Variables et types de base

Blocs d’instructions et structures de contrôles

Listes et parcours de listes

Fonctions

Page 5: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Premiers pas en Python

MacBook-Pro:~ user$ python3Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 01:25:11)[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwinType "help", "copyright", "credits" or "license" for moreinformation.

>>> 5+38>>> 2/50.4>>> 2//50>>> print("Hello World")Hello World

Lancement del’interpréteur

Calculnumérique

Affichaged’une chaînede caractères

Page 6: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Types de données

La valeur d’une donnée est d’un certain type (inféré)

Types de base communément utilisés :

entier (int)réel (float)chaîne de caractères (string)booléen (bool)

Types "évolués"

listes, tuples, dictionnaires. . .

Page 7: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Variables et types de données

Une variable stocke une valeur d’un certain type

En Python :

Typage dynamique des données (le type est défini lors del’affection d’une valeur à la variable)Risque d’erreurs ! (savoir ce qu’on manipule)S’oppose au typage statique (défini dans le programme)

>>> a = 5>>> a =’Essai’

Affectation à la variable a de l’entier 5Affectation à la variable a de la chaîne ’Essai’a change de type à la volée !

Page 8: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Mémoire : analogie

Mémoire ' ensemble de "tiroirs"

Chaque "tiroir" stocke une donnée

Une donnée est représentée en programmation par une variable

Page 9: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Mémoire et référence

Une référence est une adresse d’une case mémoire

Si on suit l’analogie précédente, une référence est le numérod’un tiroir dans laquelle se trouve une donnée

En Python, toute variable que l’on manipule est une référence(i.e. l’adresse de la donnée, pas la donnée elle-même)

Page 10: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Variables et références

>>> nb=8>>> txt = "Hello World">>> pi = 3.14159

Affectations

Variable (référence i.e. pointeur)

Valeur en mémoire

nb

8

txt

Hello World

pi

3.14159

>>> nb8>>> txt’Hello World?’>>> print(pi)3.14159>>>

Affichage

Page 11: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Obtention du type d’une variable

Fonction type(. . .)

>>> a = 5>>> type(a)<class ’int’>>>> b=6.4>>> type(b)<class ’float’>>>> s=’Essai’>>> type(s)<class ’str’>

<class ...> car orienté objet (définition d’un type)

Page 12: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Affectations multiples

Une valeur affectée simultanément à plusieurs variables

>>> x = y = 7>>> x7>>> y7

Affectations parallèles à plusieurs variables

>>> a,b = 4, 8.33>>> a4>>> b8.33

Application : a,b = b,a(échange de 2 variables sans passer par une 3ème)

Page 13: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Affectation et références

>>> a=1>>> b=a #nouvelle référence sur la même valeur>>> a=2 #b n’est pas modifié>>> print(a,b)2 1

Références

Valeurs en mémoire

a

1

Attention :

>>> a=1500; b=1500>>> a==bTrue>>> a is bFalse#mais a=b=1500; a is b #True

Mais :

>>> a=2; b=2>>> a is bTrue#les entiers de -5 à +256 sont stockés#dans une zone mémoire réservée !

Page 14: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Affectation et références

>>> a=1>>> b=a #nouvelle référence sur la même valeur>>> a=2 #b n’est pas modifié>>> print(a,b)2 1

Références

Valeurs en mémoire

a

1

b

Attention :

>>> a=1500; b=1500>>> a==bTrue>>> a is bFalse#mais a=b=1500; a is b #True

Mais :

>>> a=2; b=2>>> a is bTrue#les entiers de -5 à +256 sont stockés#dans une zone mémoire réservée !

Page 15: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Affectation et références

>>> a=1>>> b=a #nouvelle référence sur la même valeur>>> a=2 #b n’est pas modifié>>> print(a,b)2 1

Références

Valeurs en mémoire

a

1

b

2

Attention :

>>> a=1500; b=1500>>> a==bTrue>>> a is bFalse#mais a=b=1500; a is b #True

Mais :

>>> a=2; b=2>>> a is bTrue#les entiers de -5 à +256 sont stockés#dans une zone mémoire réservée !

Page 16: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Données numériques et opérateurs arithmétiques

Opérateurs arithmétiques : +, -, /, *, // (division entière), %(modulo)

Exemples d’expressions :

>>> largeur = 20>>> hauteur = 5 * 9.3>>> print(largeur * hauteur)930.0>>> a,b = 7.3,12>>> y = 3*a + b/5>>> y24.299999999999997>>>

Page 17: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Chaînes de caractères (1)

Chaine de caractères = suite de caractères quelconques

Délimité par des apostrophes (quote) ou des guillemets(double quote)Pas de type char (uniquement str)

>>> phrase1 = ’les oeufs durs’>>> phrase2 = ’"Oui", répondit-il,’>>> phrase3 = "j’aime bien">>> print(phrase2, phrase3, phrase1)"Oui", répondit-il, j’aime bien les oeufs durs>>>

Page 18: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Chaines de caractères (2)

Caractères spéciaux :

Précédés du ’\’ : exemple \n (retour à la ligne)\’ et \" permettent de représenter ’ et "

Pour insérer \, " et ’ dans la chaîne : utilisation du triple quote """

>>> phrase4="""Ceci est une "chaine" de \n caractères""">>> print(phrase4)Ceci est une "chaine" decaractères

Page 19: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Accès aux caractères d’une chaine

Chaine = séquence d’éléments (ordonnés)

Chaque caractère peut être désigné par sa place dans laséquence (un index compris entre 0 et taille-1)

>>> ch="Eric">>> print(ch[0], ch[2], ch[3])E i c

Attention : accès en lecture seulement

une chaine de caractères est immutable (i.e. non modifiable)

Page 20: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Opérations sur des chaînes

Concaténation : ’+’ (surcharge d’opérateur)

>>> ch1="Hello">>> ch2=" World">>> ch3=ch1+ch2>>> print(ch3)Hello World

Longueur d’une chaîne : len(. . .)

>>> print(len(ch1))5>>> print(len(ch3))11

Page 21: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Booléens

Valeurs booléennes : True et False

Opérations sur les variables booléennes : or, and, . . .

Attention : a XOR b s’écrit bool(a)!= bool(b)

Dans la pratique :

True vaut 1 et False vaut 0Toute valeur différente de 0 vaut vrai0 vaut fauxEx: a=5; if a: #True

Page 22: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Opérateurs de comparaison

Sur les variables comparables : == (égalité des valeurs), <, <=,>=, >, != (différent), is (égalité des références)

>>> a = 5>>> b = 2>>> b1 = (a == b)>>> b2 = (a != b)>>> b1False>>> b2True

>>> a = ’Essai’>>> b = ’Essai’>>> b1 = (a == b)>>> b1True>>> a = 10>>> b = ’10’>>> b1 = (a == b)>>> b1 #car type !=False

Page 23: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Plan du cours

Variables et types de base

Blocs d’instructions et structures de contrôles

Listes et parcours de listes

Fonctions

Page 24: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

De la ligne de commande au programme interprété

Ligne de commande (python)

>>> largeur = 20>>> hauteur = 5 * 9.3>>> print(largeur * hauteur)930.0>>> a,b=7.3,12>>> y=3*a+b/5>>> y24.299999999999997>>>

Fichier.py

largeur = 20hauteur = 5 * 9.3print(largeur * hauteur)a,b=7.3,12y=3*a+b/5print(y)

Sous IDLE :File/New WindowÉcrire le programmeFile/Save/Run/Run Module (F5)Sous Spyder :Fenêtre de gauche (Editeur)Ecrire le programmeRun (F5) -> Exécuter dansenvironnement dédié

Page 25: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

De la ligne de commande au programme interprété

⇓⇓

Exécution séquentielle ⇓⇓⇓

Fichier.py

largeur = 20hauteur = 5 * 9.3print(largeur * hauteur)a,b=7.3,12y=3*a+b/5print(y)

Exécution du programme

MacBook-Pro:~ user$ python3Fichier.py930.024.299999999999997

Page 26: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Instructions de contrôle

Par défaut, lesinstructions exécutées enséquence

Besoins

Sauter un grouped’instructions (souscertaines conditions)Répéter un grouped’instructions

⇒ Instructions de contrôle

i1 ; ⇓i2 ; ⇓i3 ; ⇓i4 ; ⇓i5 ; ⇓

i1 ; ⇓i2 ; ⇓i3 ; ⇓ ← ↑i4 ; ⇓ 5 fois ↑i5 ; ⇓ → ↑i6 ; ⇓

Page 27: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Exécution conditionnelle

Choix d’un bloc d’instruction

largeur = 20hauteur = 5 * 9.3if (largeur == hauteur):

print("C’est un carré") # si la condition est vraieelse:

print("C’est un rectangle") # si la condition est fausse

L’indentation est codante !

Page 28: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Exécution conditionnelle : forme générale

if condition1:Bloc d’instructions # si condition1 est vraieinstruction1instruction2instruction3...instructionN

elif condition2:Bloc d’instructions # si condition2 est vraie

elif condition3:Bloc d’instructions # si condition3 est vraie

else:Bloc d’instructions

Page 29: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Exécution conditionnelle : exemple

Exemple d’utilisation

a = 0if a>0:

print("a est positif")elif a<0:

print("a est négatif")else:

print("a est nul")

Ne pas oublier les indentations

Page 30: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Boucle : tant que

Exécution d’un bloc d’instructions tant qu’une condition estvraie :

a=0while a<4: #tant que

a=a+1 #Bloc d’instructionsprint(a) #Bloc d’instructions

Résultat de l’exécution

MacBook-Pro:~ user$ python3 Fichier.py1234

Page 31: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Boucle tant que : forme générale

while condition:[indentation] Bloc d’instructions

AttentionIl n’y a pas d’équivalent de :

do{ Bloc d’instructions }

until condition

exemple :a = 0;do

{print(a);a=a+1;}

until (a>=3);

Il faut coder : a = 0test = Falsewhile not test:

print(a)a=a+1test = (a>=3)

Page 32: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Composition des instructions de contrôle

a=1while a<10:

if a%2==0:a=a+2

else:a=a-1

print(a)_______________________________________MacBook-Pro:~ user$ python3 Fichier.py0246810

Page 33: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Premier programme : calcul des termes d’une suite

Calcul de la suite de Fibonacci U0 = 0U1 = 1

Un+2 = Un+1 + Un

Ecrire les 15 premiers termes de la suite

Page 34: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Deuxième programme : manipulation d’une chaine

Vérifier qu’une chaîne de caractères est un palindrome

Exemple de palindrome : radar

On initialisera une variable contenant la chaîne de caractèresdans le programme

On utilisera une boucle tant que

Page 35: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Plan du cours

Variables et types de base

Blocs d’instructions et structures de contrôles

Listes et parcours de listes

Fonctions

Page 36: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Les listes

Comme les chaînes, les listes sont des séquences, sauf que leslistes peuvent contenir n’importe quel type d’objet (listes =tableaux dynamiques)

Contrairement aux chaînes, les listes sont modifiables

Chaque objet d’une liste est accessible par l’intermédiaire d’unindex (un entier qui indique l’emplacement de l’objet dans laséquence)

Page 37: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Définition et accès aux éléments d’une liste

Définition et initialisation d’une liste

>>> nombres = [5, 38, 10, 25]>>> print(nombres)[5, 38, 10, 25]

Accès aux éléments d’une liste (slicing)

>>> print(nombres[2]) # indice 210>>> print(nombres[1:3]) # indices 1 à 2 inclus# [borne inf inclus: borne sup non inclus][38, 10]>>> print(nombres[2:]) # indices 2 à la fin[10, 25]>>> print(nombres[:2]) # du début jusqu’à l’indice 1[5, 38]>>> print(nombres[-1]) # le premier en partant de la fin25

Page 38: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Modification d’une liste (1)

Modification d’un élément d’une liste

>>> nombres = [5, 38, 10, 25]>>> nombres[0] = 17>>> nombres[17, 38, 10, 25]

Effacer un ou plusieurs éléments d’une liste

>>> del nombres[2]>>> nombres[17, 38, 25]>>> del nombres[1:2]>>> nombres[17, 25]

Page 39: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Modification d’une liste (2)

Modifier une plage de valeurs

>>> nombres = [5, 38, 10, 25]>>> nombres[1:3] = [40, 30, 20] # remplacement d’une partie>>> nombres[5, 40, 30, 20, 25]>>> nombres[2:2] = [-5] # insertion d’un élément à l’indice 2>>> nombres[5, 40, -5, 30, 20, 25]

Explication : Python numérote les séparations entre les éléments d’une liste(i.e. les poteaux) et non les éléments d’une liste (i.e. les intervalles)

a b c d e

0 1 2 3 4 5

-1-2-3-4-5

Page 40: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Méthodes applicables aux listes

Notation pointée (liste est une variable de type list) :

liste.sort() : trier une liste

liste.append(element) : ajouter un élément en fin de liste

liste.reverse() : inverser l’ordre des éléments de la liste

liste.index(element) : trouver l’index d’un élément

liste.remove(element) : enlever un élément

Page 41: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Exercice sur les listes

Soit la liste suivante :

ecoles = [’Polytechnique’, ’Centrale’, ’Supelec’]

Ecrire un programme qui

Ajoute deux écoles en fin de listeAffiche tous les éléments de la liste et le nombre decaractères qu’ils comportent

Indice : on utilisera la fonction len(...) sur les listes et leschaînes !

Page 42: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Création d’une liste d’entiers

Fonction range(...)

Crée une séquence d’entiersPeut être transformée en liste avec listlist(range(10)) crée une liste des 10 premiers entiers(de 0 à 9)

3 utilisations possibles :

range(N) : séquence des N premiers entiers (de 0 à N-1)range(N,M) : séquence des entiers compris entre N(inclus) et M (non inclus)range(N,M,P) : séquence des entiers compris entre N(inclus) et M (non inclus) avec un pas de P

Page 43: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Parcours des éléments d’une liste (1)

Jusqu’à présent : utilisation d’une boucle tant que quiparcourait tous les indices présents dans la liste

Autre solution : la boucle for

nombres = [5, 38, 10, 25]for i in nombres:

print(i, end = ’ ’)

i parcourt toute la liste nombres et la boucle affiche tous leséléments séparés par un espace

Page 44: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Parcours des éléments d’une liste (2)

Ceci fonctionne quel que soit le type des éléments dans la listeparcourue

mots = [’Ceci’, ’est’, ’un’, ’essai’]for i in mots:

print(i, end = ’ ’)

Affiche les 4 mots de la liste

A noter : les éléments dans la liste ne sont pas tous forcémentdu même type ! ! !

Page 45: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Retour sur palindrome

Parcours d’une chaine en utilisant for, range et len

string = "radar"pal = Truefor i in range(len(string)//2): #Attention pas optimisé

pal = pal and (string[i]==string[-1-i])if pal:

print(string, "est un palindrome")else:

print(string, "n’est pas un palindrome")

Page 46: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Attention : Copie d’une liste

Soit le code suivant :

>>> mots = [’Ceci’, ’est’, ’un’, ’essai’]>>> phrase = mots # on a l’impression de copier mots dans phrase>>> phrase[’Ceci’, ’est’, ’un’, ’essai’]>>> mots[’Ceci’, ’est’, ’un’, ’essai’] # même contenu pour les 2 listes>>> phrase[0] = ’Coucou’ # on modifie phrase>>> phrase[’Coucou’, ’est’, ’un’, ’essai’]>>> mots[’Coucou’, ’est’, ’un’, ’essai’] # mots est modifié aussi !!!>>>

Page 47: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Copie d’une liste : explication

Soit le code :

>>> mots = [’Ceci’, ’est’, ’un’, ’essai’]>>> phrase = mots # on a l’impression de copier mots dans phrase#en fait on copie la référence et non la valeur

On crée en fait deux références vers la même liste

mots

phrase

mots

phrase

Ceci est un essai

Coucou est un essai

phrase[0]="Coucou"

Page 48: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Les tuples

Un tuple est un n-uplet

Un tuple n’est pas modifiable (pas de méthode de modificationou d’écriture dans le tuple)

C’est une liste figée

Utilisation de parenthèses à la place des crochets d’une liste (enfait, c’est la virgule qui crée le tuple, pas la parenthèse)

>>> t=(1,2,3,4)>>> t(1, 2, 3, 4)>>> t[0]1>>> t[1:3](2, 3)

Page 49: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Du tuple à la liste et vice-versa

Transformation d’un tuple en liste

>>> t=(1,2,3,4)>>> l=list(t)>>> l[1, 2, 3, 4]

Transformation d’une liste en tuple

>>> l=[1,2,3,4]>>> t=tuple(l)>>> t(1, 2, 3, 4)

Page 50: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Retour sur les affectations multiples

>>>> x,y=1,2>>> x1>>> y2>>> (x,y)=(3,4)>>> x3>>> y4>>> t=1,2>>> t(1, 2)

Les notations 1,2 ou x,y représentent en fait un tuple(car c’est la virgule qui fait le tuple)

Page 51: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Exercice : copie d’une liste

Créer une liste A contenant des entiers

Effectuez une vraie copie de cette liste dans une nouvelle liste B

Indice : créer une liste vide et lui ajouter les éléments de A

Modifier A

Vérifier que B n’est pas modifié

NB : la fonction list réalise cette opération

Page 52: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Ensemble (set) et manipulation

Collection non ordonnée d’éléments

>>> s1={1,2,3,4}>>> s2={1,4,5}>>> s1.intersection(s2) # appel de méthodes (sera vu dans la... # partie programmation objet){1, 4}>>> s1.union(s2){1, 2, 3, 4, 5}>>> 3 in s1True>>> 3 in s2False>>> s1.add(6)>>> s1{1, 2, 3, 4, 6}

Page 53: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Plan du cours

Variables et types de base

Blocs d’instructions et structures de contrôles

Listes et parcours de listes

Fonctions

Page 54: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Intérêt des fonctions

Dans un programme, on réécrit souvent le même code plusieursfois

Idée : regrouper dans une entité du code qu’on veut réutiliser etqui a un sens en lui-même

Solution : définition de fonction(Il existe une autre approche : l’approche objet)

Page 55: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Définition d’une fonction

def nomDeLaFonction(liste des paramètres):...bloc d’instructions...

La définition commence par le mot-clef def

La fonction a un nom

Elle peut utiliser des données pour s’exécuter : ses paramètres(sans préciser les types !)

L’appel de cette fonction déclenche l’exécution du blocd’instructions qui la compose

Page 56: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Fonction simple sans paramètre

def affiche():n=1while n<7:

print(n, 2*n)n=n+1

affiche() # appel de la fonction affiche_______________________________________MacBook-Pro:~ user$ python3 Fichier5.py1 22 43 64 85 106 12

Page 57: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Fonction simple avec paramètre

def affiche(base):n=basewhile n<7:

print(n, 2*n)n=n+1

affiche(3) # appel de la fonction affiche_______________________________________MacBook-Pro:~ user$ python3 Fichier5.py3 64 85 106 12

Page 58: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Appel d’une fonction simple avec un paramètrevariable

def affiche(base):n=basewhile n<7:

print(n, 2*n)n=n+1

b=3affiche(b) # appel de la fonction affiche_______________________________________MacBook-Pro:~ user$ python3 Fichier5.py3 64 85 106 12

Page 59: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Fonction simple avec plusieurs paramètres

def affiche(base,limite):n=basewhile n<limite:

print(n, 2*n)n=n+1

affiche(3,7) # appel de la fonction affiche# (paramètre dans le bon ordre)_______________________________________MacBook-Pro:~ user$ python3 Fichier5.py3 64 85 106 12

Page 60: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Valeurs par défaut des paramètres

def affiche(base=3,limite=7):#valeur par défaut des paramètres

n=basewhile n<limite:

print(n, 2*n)n=n+1

affiche() # ou affiche(4) ou affiche(5,8)

Les paramètres définis par défaut sont optionnels à l’appel de lafonction (si pas spécifiés, valeur par défaut)

On peut appeler la fonction avec les paramètres dans un ordredifférent de celui défini en spécifiant les étiquettes(ex : affiche(limite=8,base=4))

Page 61: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Procédures et fonctions

Les fonctions que nous avons présentées ne retournent aucunevaleur à la fin de leur exécution

Dans de nombreux langages, on appelle ce type de fonctionsdes procédures

Dans la pratique, une fonction peut renvoyer une ou plusieursvaleurs

Page 62: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Parallèle avec une fonction mathématique

Maths :

carre : Z→ Zx → x × x

Python

def carre (x):return x*x

Pas de domaine de définition !

Page 63: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Définition et appel d’une fonction avec retour

def carre(x):return x*x

b = 3print(carre(b))y = carre(5)print(y)_______________________________________MacBook-Pro:~ user$ python3 Fichier5.py925

Page 64: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Fonctions avec retours multiples

def calcul(a,b):return a+b, a-b

x,y=calcul(5,3)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 Fichier5.py8 2

Page 65: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Mode de passage de paramètres

Dans la plupart des langages : 2 modes de passage deparamètres

Par valeur : dans la fonction on travaille sur une copie desparamètres (copie du contenu)Par référence : dans la fonction on travaille directement surle paramètre passé en argument (on passe lepointeur/l’adresse ; effet de bord)

Et en Python ?

Page 66: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Python et passage de paramètres

Deux explications complémentaires

1 Passage par valeur d’une référence sur l’argumentTravail sur la copie d’une référence

2 Suivant le type de l’argumentimmutable => pas de modification possible dans la fonctionTypes de base (int, float, string,tuple)mutable => modification possible dans la fonctionlistes, dictionnaires, objets

Page 67: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Exemple de passages de paramètres (1)

def maFonction(a,b):a,b = b,aprint(a,b)

x,y=1,2print(x,y)maFonction(x,y)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 params.py1 22 11 2

x y

1 2

a et b sont des variables locales à maFonction

Page 68: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Exemple de passages de paramètres (1)

def maFonction(a,b):a,b = b,aprint(a,b)

x,y=1,2print(x,y)maFonction(x,y)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 params.py1 22 11 2

x y

1 2

a b

Copie des références

x et y dans a et b

a et b sont des variables locales à maFonction

Page 69: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Exemple de passages de paramètres (1)

def maFonction(a,b):a,b = b,aprint(a,b)

x,y=1,2print(x,y)maFonction(x,y)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 params.py1 22 11 2

x y

1 2

a b

a et b sont des variables locales à maFonction

Page 70: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Exemple de passages de paramètres (1)

def maFonction(a,b):a,b = b,aprint(a,b)

x,y=1,2print(x,y)maFonction(x,y)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 params.py1 22 11 2

x y

1 2

a b échange

des ref.

a et b sont des variables locales à maFonction

Page 71: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Exemple de passages de paramètres (2)

def maFonction(a,b):a,b = b,aprint(a,b)

x,y=[1,2],[3,4]print(x,y)maFonction(x,y)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 params.py[1, 2] [3, 4][3, 4] [1, 2][1, 2] [3, 4]

Même chose que le programme précédent(avant avec des entiers, ici avec des listes)

Page 72: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Exemple de passages de paramètres (3)

def maFonction(a,b):a[0],b[0] = b[0],a[0]print(a,b)

x,y=[1,2],[3,4]print(x,y)maFonction(x,y)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 params.py[1, 2] [3, 4][3, 2] [1, 4][3, 2] [1, 4]

x y

1|2 3|4

Ici listes mutables : on a modifié les listes

Page 73: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Exemple de passages de paramètres (3)

def maFonction(a,b):a[0],b[0] = b[0],a[0]print(a,b)

x,y=[1,2],[3,4]print(x,y)maFonction(x,y)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 params.py[1, 2] [3, 4][3, 2] [1, 4][3, 2] [1, 4]

x y

1|2 3|4

a b

Copie des références

x et y dans a et b

Ici listes mutables : on a modifié les listes

Page 74: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Exemple de passages de paramètres (3)

def maFonction(a,b):a[0],b[0] = b[0],a[0]print(a,b)

x,y=[1,2],[3,4]print(x,y)maFonction(x,y)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 params.py[1, 2] [3, 4][3, 2] [1, 4][3, 2] [1, 4]

x y

1|2 3|4

a b

Copie des références

x et y dans a et b

Ici listes mutables : on a modifié les listes

Page 75: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Exemple de passages de paramètres (3)

def maFonction(a,b):a[0],b[0] = b[0],a[0]print(a,b)

x,y=[1,2],[3,4]print(x,y)maFonction(x,y)print(x,y)_______________________________________MacBook-Pro:~ user$ python3 params.py[1, 2] [3, 4][3, 2] [1, 4][3, 2] [1, 4]

x y

3|2 1|4

a b

Modification

des listes

Ici listes mutables : on a modifié les listes

Page 76: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Exemple de passages de paramètres (4)

def maFonction(a,b):a[0],b[0] = b[0],a[0]print(a,b)

x,y=(1,2),(3,4)print(x,y)maFonction(x,y)print(x,y)

MacBook-Pro:~ user$ python3 params.py(1, 2) (3, 4)Traceback (most recent call last):

File "params.py", line 7, in <module>maFonction(x,y)

File "params.py", line 2, in maFonctiona[0],b[0] = b[0],a[0]

TypeError: ’tuple’ object does not support item assignment

x y

1|2 3|4

a b

Copie des références

x et y dans a et b

Impossible de

modifier les

tuples

Page 77: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Variables locales et globales (1)

Les variables définies en dehors des fonctions sont globales

Elles sont lisiblesMais elles ne peuvent pas, par défaut, être modifiées dansune fonctionSi on veut les modifier, utilisation du mot-clef global

Les variables définies (affectées) dans une fonction sont localesà cette fonction, et ne sont pas visibles à l’extérieur de la fonction

Page 78: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Variables locales et globales (2)

def maFonction():p = 20 # variable localeglobal q # q variable globale modifiableq = 50 # modification de qprint("2-",n,p,q) # n globale lisible

n=5p=10q=30print("1-",n,p,q)maFonction()print("3-",n,p,q)

MacBook-Pro:~ user$ python3 Fichier6.py

1- 5 10 30 # valeurs initiales2- 5 20 50 # n lisible, p local, q global3- 5 10 50 # on ne voit plus p local, q a bien été modifié

Page 79: Présentation rapide de Python - OVHvps275670.ovh.net/static/info/2C-Python/... · >>> a=1 >>> b=a #nouvelle référence sur la même valeur >>> a=2 #b n’est pas modifié >>> print(a,b)

Exercice sur les fonctions

Ecrire deux fonctions qui calculent

l’approximation de la dérivée d’une fonction en un point(fonction et point passés en paramètres)l’approximation de l’intégrale d’une fonction entre deuxpoints (fonction et points passés en paramètres) par laméthode des rectangles

Ecrire un programme qui utilise ces deux fonctions pour vérifierleur bon fonctionnement