0% ont trouvé ce document utile (0 vote)
236 vues122 pages

Cours s2 Info1

Ce document présente un cours de programmation en Python, abordant des concepts tels que l'indentation, les tuples, les ensembles, et les types de données composites. Il inclut également des exercices pratiques pour renforcer la compréhension des boucles, des conditions, et des fonctions. Des exemples de code illustrent chaque concept, facilitant l'apprentissage des bases de la programmation en Python.

Transféré par

daoud9638
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
236 vues122 pages

Cours s2 Info1

Ce document présente un cours de programmation en Python, abordant des concepts tels que l'indentation, les tuples, les ensembles, et les types de données composites. Il inclut également des exercices pratiques pour renforcer la compréhension des boucles, des conditions, et des fonctions. Des exemples de code illustrent chaque concept, facilitant l'apprentissage des bases de la programmation en Python.

Transféré par

daoud9638
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Programmation en Python

Deuxième semestre

M. ZBAKH
2022 - 2023

1
1. Rappel et Complément

_________________________________________________________________________________________
2 Programmation en Python Pr. M. Zbakh
Indentation Python:
 La plupart des langages de programmation tels que C, C ++ et Java utilisent
des accolades {} pour définir un bloc de code. Python utilise l'indentation.

 Un bloc de code (corps d'une fonction, d'une boucle, etc.) commence par une
indentation et se termine par la première ligne non indentée.

 Généralement, quatre espaces sont utilisés pour l'indentation et sont préférés


aux tabulations.

1. if x > y :
2. print (" x est sup strictement à y ")
3. elif x < y :
4. print (" x est inf strictement à y ")
5. else:
6. print (“x et y sont égales“)

_________________________________________________________________________________________
3 Programmation en Python Pr. M. Zbakh
Indentation Python:
1. chaine = "34654321947 "
2. nb_4 = 0
3. for x in chaine :
4. if x == "4 " :
5. nb_4 = nb_4 + 1
6. print ("il y a", nb_4 , "répétition de 4 dans la chaine")

1. for i in range(5):
2. if i==3:
3. break
4. print(i)

1. 0
2. 1
3. 2
_________________________________________________________________________________________
4 Programmation en Python Pr. M. Zbakh
Tuples en Python :

 A partir des types de base (int, float, …), on peut élaborer de nouveaux types.

 On les appelle des types construits ou tuples

 Il permet de créer une collection ordonnée de plusieurs éléments.

 Les tuples ressemblent aux listes, mais on ne peut pas les modifier une fois qu’ils ont été créés.

 On dit qu’un tuple n’est pas mutable.

 On le définit avec des parenthèses :

_________________________________________________________________________________________
5 Programmation en Python Pr. M. Zbakh
Tuples en Python :

 Parfois, les tuples ne sont pas entourés de parenthèses, même s’il s’agit quand même de tuples.

 Ainsi, on peut utiliser la notation suivante :

 En fait, cela revient à :

6
Tuples en Python :

 Cette syntaxe avec plusieurs variables à gauche du signe = peut aussi être utilisée avec une variable
unique à droite si celle-ci contient un tuple.

_________________________________________________________________________________________
7 Programmation en Python Pr. M. Zbakh
Ensembles en Python :
 Les ensemble (ou sets en anglais) forment un autre type de données composites (composés) en Python.

 Un ensemble est une collection d’éléments non ordonnée, sans index et qui ne peut pas posséder
l’élément dupliqué.

 Une des utilisation les plus courantes des ensembles est de les utiliser pour supprimer des valeurs
doublons à partir d’un autre type de données.

 Pour créer un ensemble, nous utilisons une paire d’accolades { } et plaçons les différents éléments de
l’ensemble entre ces accolades en les séparant avec une virgule.

 Notez que pour créer un ensemble vide il faudra utiliser la fonction set() car la syntaxe { } va créer un
dictionnaire vide et non pas un ensemble vide.

8
Récapitulatif sur les types de données et sur les types
composites (ou composés) Python:
 Les types de données simples étudiés sont les Nombre (entier, décimaux ou complexes), les Booléens et
les Chaines de caractères. Il sont facile à manier et il est simple de savoir quand utiliser une type plutôt
qu’un autre.

 Les types de données composite étudiés sont les listes, les tuples, les dictionnaires et les ensembles. Il est
généralement moins évident de choisir quel type de données utiliser ici car on a tendance à penser “qu’ils
se ressemblent tous”.

 Voici donc un résumé des grandes caractéristiques de ces types et se qui les différencie :

 Les listes sont des collections d’éléments ordonnés et modifiables qui peuvent contenir plusieurs
fois la même valeur ;
 Les tuples sont des collections d’éléments ordonnés et non modifiables qui peuvent contenir
plusieurs fois la même valeur ;
 Les dictionnaires sont des collection d’éléments non ordonnés mais indexés avec des clefs de
notre choix et modifiables qui n’acceptent pas de contenir plusieurs fois le même élément ;
 Les ensembles sont des collections d’éléments non ordonnées, non indexés et non modifiables qui
n’acceptent pas de contenir plusieurs fois le même élément.
_________________________________________________________________________________________
9 Programmation en Python Pr. M. Zbakh
Rappel : l’instruction de contrôle if:

Exercice 1 :

Donner un script python pour saisir un flottant, afficher sa racine


carrée s’il est strictement positif, sinon afficher un message d’erreur.

_________________________________________________________________________________________
10 Programmation en Python Pr. M. Zbakh
Rappel : l’instruction de contrôle if:

Exercice 1 :

Donner un script python pour saisir un flottant, afficher sa racine


carrée s’il est strictement positif, sinon afficher un message d’erreur.

_________________________________________________________________________________________
11 Programmation en Python Pr. M. Zbakh
Rappel : Boucle while:

Exercice 2 :

Donner un script python qui initialise un entier b à 10 et qui utilise


une boucle pour décrémenter la valeur de b et l’affiche si elle est
impaire. Boucler tant que b n’est pas nul.

_________________________________________________________________________________________
12 Programmation en Python Pr. M. Zbakh
Rappel : Boucle while:

Exercice 2 :

Donner un script python qui initialise un entier b à 10 et qui utilise


une boucle pour décrémenter la valeur de b et l’affiche si elle est
impaire. Boucler tant que b n’est pas nul.

_________________________________________________________________________________________
13 Programmation en Python Pr. M. Zbakh
Rappel : Boucle for:

Exercice 3 :

Écrire un script python qui estime la somme suivante :

_________________________________________________________________________________________
14 Programmation en Python Pr. M. Zbakh
Rappel : Boucle for:

Exercice 3 :

Écrire un script python qui estime la somme suivante :

_________________________________________________________________________________________
15 Programmation en Python Pr. M. Zbakh
Rappel : Boucle for avec l’instruction de contrôle if:

Exercice 4 :

Ecrire un script qui affiche le nombre et les diviseur d’un entier.

_________________________________________________________________________________________
16 Programmation en Python Pr. M. Zbakh
Rappel : Boucle for avec l’instruction de contrôle if:

Exercice 4 :

Ecrire un script qui affiche le nombre et les diviseur d’un entier.

_________________________________________________________________________________________
17 Programmation en Python Pr. M. Zbakh
Rappel : les listes:

Exercice 5 :

Définir la liste : liste = [80, 30, 100, 20, 70,10], puis effectuez les
actions suivantes :
– triez et affichez la liste ;
– enlevez l’élément 20 et affichez la liste ;
– ajoutez l’élément 12 à la liste et affichez la nouvelle liste ;
– renversez et affichez la nouvelle liste ;
– affichez l’indice de l’élément 70 dans la liste ;
– affichez la sous-liste du 2eme au 3eme élément ;
– affichez la sous-liste du début au 3eme élément ;
– affichez la sous-liste du 4eme au dernier élément de la liste ;
18
Rappel : les listes:

Exercice 5 :

Définir la liste : liste = [80, 30, 100, 20, 70,10], puis effectuez les actions suivantes :
– triez et affichez la liste ;
– enlevez l’élément 20 et affichez la liste ;
– ajoutez l’élément 12 à la liste et affichez la nouvelle liste ;
– renversez et affichez la nouvelle liste ;
– affichez l’indice de l’élément 70 dans la liste ;
– affichez la sous-liste du 2eme au 3eme élément ;
19 – affichez la sous-liste du début au 3eme élément ;
– affichez la sous-liste du 4eme au dernier élément de la liste ;
2. DÉFINITIONS EN COMPRÉHENSION:
Liste en compréhension :

 Une liste en compréhension (comprehension list) permet de créer une liste à partir d’une itération.

liste = [x for x in range(5)]


print(liste)
# affiche [0, 1, 2, 3, 4]

 Un intérêt des listes en compréhension est aussi de permettre de construire une nouvelle liste à partir
d’une liste existante :

liste = [1, 2, 3, 4] liste = ["hello", "the", "world"]


nouvelle_liste = [len(x) for x in liste]
nouvelle_liste = [2 * x for x in liste]
print(nouvelle_liste)
print(nouvelle_liste) # affiche [5, 3, 5]
# affiche [2, 4, 6, 8]

_________________________________________________________________________________________
20 Programmation en Python Pr. M. Zbakh
2. DÉFINITIONS EN COMPRÉHENSION:
Liste en compréhension :

 Il est également possible d’appliquer un filtre lors de la création d’une liste en compréhension afin de ne
pas prendre un compte certains éléments de la liste ou de l’itération de départ.

liste = ["hello", "the", "world"]


nouvelle_liste = [x for x in liste if len(x) < 4]
print(nouvelle_liste)
# affiche ['the']

 En combinant la liste en compréhension avec des méthodes telles que zip(), il est possible de construire
une liste comme le résultat d’opérations sur plusieurs listes :

liste1 = [1, 2, 3, 4]
liste2 = [10, 20, 30, 40]
nouvelle_liste = [x * y for x, y in zip(liste1, liste2)]
print(nouvelle_liste)
# affiche [10, 40, 90, 160]
_________________________________________________________________________________________
21 Programmation en Python Pr. M. Zbakh
2. DÉFINITIONS EN COMPRÉHENSION:
Liste en compréhension :

 Il est également possible de combiner deux itérations dans une liste en compréhension. Cela permet de
réaliser une itération sur chaque élément de la liste ou de l’itération de départ :

liste = ["hello", "the", "world"]


nouvelle_liste = [c for mot in liste for c in mot]
print(nouvelle_liste)
# affiche ['h', 'e', 'l', 'l', 'o', 't', 'h', 'e', 'w', 'o', 'r', 'l', 'd']

 Dans l’exemple ci-dessus, la liste est construite en itérant sur chaque mot de la liste et donc de créer un
tableau de l’ensemble des lettres.

_________________________________________________________________________________________
22 Programmation en Python Pr. M. Zbakh
2. DÉFINITIONS EN COMPRÉHENSION:
Dictionnaire en compréhension :

 Il est également possible de créer un dictionnaire en compréhension en construisant un couple


clé : valeur à partir d’une itération :

liste = ["liste", "avec", "des", "mots"]


dictionnaire = {len(e) : e for e in liste}
print(dictionnaire)
# Affiche {5: 'liste', 4: 'mots', 3: 'des'}

 Par exemple, on peut ainsi inverser la clé et la valeur :

dictionnaire = {"pomme": 8, "poire": 3, "orange": 7}


nouveau_dict = {v : k for k, v in dictionnaire.items()}
print(nouveau_dict)
# Affiche {8: 'pomme', 3: 'poire', 7: 'orange'}

_________________________________________________________________________________________
23 Programmation en Python Pr. M. Zbakh
3. FONCTIONS PYTHON:

À quoi ser vent les Fonctions? 1. def tax(bill) :


2. # Adds 8% tax to a restaurant bill.
3. bill *= 1.08

• Vous avez peut-être envisagé la possibilité de 4. print ("With tax: ", bill)
5. return bill
réutiliser un morceau de code avec quelques
valeurs différentes. 6. meal_cost = 100
7. tax(meal_cost)
• Au lieu de réécrire tout le code, il est beaucoup
plus simple de définir une fonction, qui peut
ensuite être utilisée àplusieurs reprises. Exécuter

With tax: 108.00

_________________________________________________________________________________________
24 Programmation en Python Pr. M. Zbakh
S tr u cture d ’ u n e Fo n c t ion
1. def MyFunction():
2. #Prints 'Hello World!' to the console.

Les fonctions sont définies avectrois composants: 1. print ("Hello World!")

• L'en-tête, qui comprend le mot-clé def, le nom 3. MyFunction ()


de la fonction et tous les paramètres requis par la
fonction.Voici un exemple:
Exécuter

def MyFunction ()
# Il n'y a pas de paramètres
"Hello World!
• Le corps, qui décrit les procédures que la
fonction effectue.Le corps est en retrait,tout
comme les instructions conditionnelles.

print ("Hello World!")

_________________________________________________________________________________________
25 Programmation en Python Pr. M. Zbakh
Paramètres et Arguments
1. def MyFunction(n):

1. print (“ le n = “ , n)

• Les valeurs passés dans une fonction sont


2. MyFunction (10)
appelées les arguments.

• Un argument est une variable qui est une entrée


Exécuter
dans une fonction.

• Exemple: Le n = 10

def MyFunction (n) :

_________________________________________________________________________________________
26 Programmation en Python Pr. M. Zbakh
Appel et Réponse
1. def MyFunction(n) :
1. print (“ le n = “ , n)
• Lors de la définition d'une fonction,les 2. MyFunction (10)
variables sont appelées paramètres.

Après avoir défini une fonction, celle-ci doit être


appelée pour être implémentée. Dans l'exercice
précédent, MyFunction (10) dans la dernière ligne Exécuter
demande de rechercher la fonction appelée MyFunction
et d'exécuter soncode.
Le n = 10
• Lorsque vous utilisez ou appelez une fonction,
les entrées de cette fonction sont appelées
arguments.
Une fonction peut avoir un nombre quelconque de
paramètres.

_________________________________________________________________________________________
27 Programmation en Python Pr. M. Zbakh
1. def Carre(n):
PARAMÈTRES ET 1. sqr = n ** 2
ARGUMENTS
2. print(" le carré de ", n, " et ", sqr )
3. return sqr
• Le but des fonctions en général est de prendre 2. Carre(10)
des entrées et de retourner quelque chose.
• L'instruction return est utilisée lorsqu'une
fonction est prête à renvoyer une valeur à Exécuter
l'appelant.
• L'instruction return provoque la fermeture de le carré de 10 et 100
votre fonction et le renvoi d'une valeur à
l'appelant.

_________________________________________________________________________________________
28 Programmation en Python Pr. M. Zbakh
U N E F O N C T I O N PEUT 1. def ajouterUn(n) :
APPELER UNE AUTRE 2. return (n + 1)
FONCTION
3. def etUnAutre(n) :
• Nous avons vu des fonctions permettant 4. return (ajouterUn(n) + 1)
d’imprimer du texte ou de faire de l’arithmétique 5. print (etUnAutre(3))
simple, mais ces fonctions peuvent être beaucoup
plus puissantes que cela.
Exécuter

• Par exemple, une fonction peut appeler une autre


fonction :
5
def fonct1 (n) :
return n * 5

def fonct2 (m) :


return (fonct1(m) + 7)

_________________________________________________________________________________________
29 Programmation en Python Pr. M. Zbakh
def cube (number):
PARAMÈTRES ET
ARGUMENTS return number**3

• Premièrement, définissez une fonction appelée def by_three(number):


cube qui prend un argument appelénumber. if number % 3 == 0:
N'oubliez pas les parenthèses et les deux points!
return cube(number)
• Faites que cette fonction retourne le cube de ce else:
nombre.
return False
• Définissez une deuxième fonction appelée
by_three qui prend un argument appelé number. n=9
print(" Résultat pour ",n, "est: ", by_three(n))
• si ce nombre est divisible par 3, by_three doit
appeler un cube (number) et renvoyer son
résultat. Sinon, by_three devrait retourner Exécuter
False.
Résultat pour 9 est: 729
_________________________________________________________________________________________
30 Programmation en Python Pr. M. Zbakh
PARAMÈTRES ET
ARGUMENTS
number = 5
Exemples: def my_function(x):
return x * 3

def list_function(x): print my_function(number)


return x
#m = 5
n = 13
n = [3, 5, 7]
def add_function(x,y):
print (list_function(n))
return x + y
def double_first(n):
n[0] = n[0] * 2 print (add_function(m, n))

numbers = [1, 2, 3, 4] n = "Hello"

double_first(numbers) def string_function(s):


return s + ' world'
print (numbers)
print string_function(n)
_________________________________________________________________________________________
31 Programmation en Python Pr. M. Zbakh
PARAMÈTRES ET
ARGUMENTS
number = 5
Exécution: def my_function(x):
return x * 3
def list_function(x):
return x print my_function(number)
# 15
n = [3, 5, 7]
#m = 5
print (list_function(n))
n = 13
# [3, 5, 7]
def add_function(x,y):
return x + y
def double_first(n):
n[0] = n[0] * 2 print (add_function(m, n))
#18
numbers = [1, 2, 3, 4]
n = "Hello"
double_first(numbers)
def string_function(s):
print (numbers) return s + ' world'
# [2, 2, 3, 4] print string_function(n)
32 #Hello world
PARAMÈTRES ET
ARGUMENTS
n = [3, 5, 7]

Exemples: def print_list(x):


for i in range(0, len(x)):

n = [3, 5, 7]
def list_extender(lst) : print(i,x[i])
lst.append(9) print_list(n)
return lst
n = [3, 5, 7]
print (list_extender(n)) def double_list(x):
for i in range(0, len(x)):
def my_function(x): x[i] = x[i] * 2
for i in range(0, len(x)):
x[i] = x[i]*2 return x
return x print (double_list(n))

L = [1,2,3,5]
print (my_function(L))
_________________________________________________________________________________________
33 Programmation en Python Pr. M. Zbakh
PARAMÈTRES ET n = [3, 5, 7]
ARGUMENTS
def print_list(x):
Exécution: for i in range(0, len(x)):
n = [3, 5, 7]
def list_extender(lst) : print(i,x[i])
lst.append(9) print_list(n)
return lst
# 0,3
#1,5
print (list_extender(n))
#2,7
#[3, 5, 7,9]
n = [3, 5, 7]
def my_function(x): def double_list(x):
for i in range(0, len(x)): for i in range(0, len(x)):
x[i] = x[i]*2
x[i] = x[i] * 2
return x
return x
L = [1,2,3,5]
print (double_list(n))
print (my_function(L))
# [2,4,6,10] #[6, 5, 7]
_________________________________________________________________________________________
34 Programmation en Python Pr. M. Zbakh
PARAMÈTRES ET n = ["Ahmed", "Amine"]
ARGUMENTS
def join_strings(words):
result=""
Exemples: for item in words :
result = result + item
return (result)
m = [1, 2, 3]
print (join_strings(n))
n = [4, 5, 6]
def join_lists(x,y) :
return x + y
n = [3, 5, 7]
print join_lists(m, n) def total(numbers):
result = 0
for i in range (0,len(numbers)):
result = result + numbers[i]
return result
print (total(n))
35
PARAMÈTRES ET n = ["Ahmed", "Amine"]
ARGUMENTS
def join_strings(words):
result=""
for item in words :
Exécution: result = result + item
return (result)
m = [1, 2, 3]
print (join_strings(n))
n = [4, 5, 6]
#AhmedAmine
def join_lists(x,y) :
return x + y n = [3, 5, 7]
print join_lists(m, n) def total(numbers):
#[1,2,3,4,5,6] result = 0
for i in range (0,len(numbers)):
result = result + numbers[i]
return result
print (total(n))
#15
_________________________________________________________________________________________
36 Programmation en Python Pr. M. Zbakh
PARAMÈTRES ET
ARGUMENTS

Exemples:

n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]

def flatten (lists): result=[]


for numbers in lists:
for item in numbers:
result.append(item)
return result print
flatten(n)

_________________________________________________________________________________________
37 Programmation en Python Pr. M. Zbakh
PARAMÈTRES ET
ARGUMENTS

Exécution :

n = [[1, 2, 3], [4, 5, 6, 7, 8, 9]]

def flatten (lists): result=[ ]


for numbers in lists:
for item in numbers:
result.append(item)
return result print
flatten(n)

#[1, 2, 3, 4, 5, 6, 7, 8, 9]

_________________________________________________________________________________________
38 Programmation en Python Pr. M. Zbakh
LES FONCTIONS
RECURSSIVES

Exemple :

def puissance (a, n) : 1, 𝑛=0


𝑎𝑛 = ቊ
if n == 0 : 𝑎 ∗ 𝑎𝑛−1 , 𝑛>0
return 1
else :
return a * puissance(a,n-1)
1, 𝑛=0
𝑝𝑢𝑖𝑠(𝑎, 𝑛) = ቊ
𝑎 ∗ 𝑝𝑢𝑖𝑠 (𝑎, 𝑛 − 1), 𝑛>0
a=2
b=3

print(puissance(a,b))

Exécution :

8
_________________________________________________________________________________________
39 Programmation en Python Pr. M. Zbakh
PARAMÈTRES ET
ARGUMENTS

• Maintenant que vous comprenez ce que


sont les fonctions et comment les utiliser,
examinons certaines des fonctions
1. str = "Bonjour Mes Amis"
intégrées à Python (aucun module
2. print(str.upper())
requis!). 3. print(str.lower())
4. print(len(str))
• Vous connaissez déjà certaines des fonctions
intégrées que nous avons utilisées avec des
chaînes, telles que .upper (), .lower (), str Exécuter

() et len ().
1. BONJOUR MES AMIS
• Mais Python possède également certaines 2. bonjour mes amis
fonctions qui vont nous permettre 3. 16
d’effectuer des opérations
mathématiques intéressantes, comme
range(), round(), sum(), min() et
max().
40
def biggest_number(*args):
PARAMÈTRES ET
ARGUMENTS print (max(args))
return max(args)
• Maintenant que vous comprenez ce que
sont les fonctions et comment les utiliser, def smallest_number(*args):
examinons certaines des fonctions print (min(args)) Exécuter
intégrées à Python (aucun module return min(args)
requis!). 1. 10
2. -10
def sum_number(*args): 3. 0
• Vous connaissez déjà certaines des fonctions
print (sum(args)) 4. 10
intégrées que nous avons utilisées avec des
return sum(args)
chaînes, telles que .upper (), .lower (), str
() et len (). def distance_from_zero(arg):
print (abs(arg))
• Mais Python possède également certaines return abs(arg)
fonctions qui vont nous permettre
d’effectuer des opérations biggest_number(-10, -5, 5, 10)
mathématiques intéressantes, comme smallest_number(-10, -5, 5, 10)
range(), round(), sum(), min() et sum_number(-10, -5, 5, 10)
max().
41 distance_from_zero(-10)
PARAMÈTRES ET
ARGUMENTS

1. print(round(-2.7))
• La fonction round() permet 2. print(round(1.2))
d’arrondir un nombre spécifié en 3. print(round(1.5))
argument à l’entier le plus proche avec 4. print(round(1.6))
un degré de précision (un nombre de
décimales) éventuellement spécifié en
deuxième argument.
Exécuter

• Le nombre de décimales par défaut est


0, ce qui signifie que la fonction 1. -3
retournera l’entier le plus proche. 2. 1
3. 2
4. 2

_________________________________________________________________________________________
42 Programmation en Python Pr. M. Zbakh
PARAMÈTRES ET
ARGUMENTS

1. print (type(42))
2. print (type(4.2))
• Enfin, la fonction type () renvoie le 3. print ( type('spam'))
type des données qu’elle reçoit sous
forme d’argument. Si vous demandez
à Python de procéder comme suit: Exécuter

1. <type 'int'>
2. <type 'float'>
3. <type 'str'>

_________________________________________________________________________________________
43 Programmation en Python Pr. M. Zbakh
SUPPRIMER DES
ÉLÉMENTS DES LISTES

• Pour une liste appelée n: 1. n = [1,, 3,, 5]


2. n.pop(1) # Returns 3 (the item at index 1)
• n.pop (index) supprimera l’élément à 3. print (n) # prints [1, 5]
l’index de la liste et vous le retournera
• n.remove (item) supprimera l'élément 1. n.remove(1) # Removes 1 from the list,
réel s'il le trouve # NOT the item at index 1
2. print (n) # prints [3, 5]
• del (n [1]) est comme .pop en ce
sens qu'il supprimera l'élément à
1. del(n[1]) # Doesn't return anything
l'index donné, mais ne le retournera
pas 2. print (n) # prints [1, 5]

_________________________________________________________________________________________
44 Programmation en Python Pr. M. Zbakh
FIN DES LISTES

1. st = " Python est génial, n'est-ce pas ? "


• La méthode count () renvoie le
2. subst = " est "
nombre de fois où l’objet apparaît dans
3. nbre = st.count(subst)
la liste.
4. print("Le nombre est : ",nbre)
• Syntaxe générale:
5. # prints Le nombre est : 1
string.count(valeur, début, fin)
o valeur: Obligatoire! C'est la
1. s = "Python est super. Je programme en Python."
chaîne à rechercher.
o début: Facultatif! Un nombre 2.
entier qui indique la position pour 3. print( s.count("Python" , 17 , 41 )) # affiche 1
commencer la recherche. La valeur 4. print( s.count("Python" , 22 , 32)) # affiche 0
par défaut est 0.
o fin: Facultatif. Un nombre entier
qui indique la position pour
terminer la recherche. La valeur
par défaut est la longueur de la
chaîne.
_________________________________________________________________________________________
45 Programmation en Python Pr. M. Zbakh
Variables locales,
variables globales
• Lorsqu’une fonction est appelée, Python réserve pour elle (dans la mémoire de
l’ordinateur) un espace de noms.
• Cet espace de noms local à la fonction est à distinguer de l’espace de noms global où se
trouvait les variables du programme principal.
• Dans l’espace de noms local, nous aurons des variables qui ne sont accessibles qu’au sein
de la fonction.
• A chaque fois que nous définissons des variables à l’intérieur du corps d’une fonction, ces
variables ne sont accessibles qu’à la fonction elle-même. On dit que ces variables sont des
variables locales à la fonction. Une variable locale peut avoir le même nom qu’une
variable de l’espace de noms global mais elle reste néanmoins indépendante.
• Les contenus des variables locales sont stockés dans l’espace de noms local qui est
inaccessible depuis l’extérieur de la fonction.

_________________________________________________________________________________________
46 Programmation en Python Pr. M. Zbakh
Variables locales,
variables globales 1. def test() :
b est une
2. b=5 variable
3. a=2 locale
4. print(a, b)
5. a = 2 A, b sont des
• Les variables définies à l’extérieur 6. b = 7
variables
globales
d’une fonction sont des variables 7. test()
globales. Leur contenu est « 8. print(a, b)
visible » de l’intérieur d’une
fonction, mais la fonction ne peut
Exécution
pas le modifier.
2 5
2 7

_________________________________________________________________________________________
47 Programmation en Python Pr. M. Zbakh
Variables locales,
variables globales def test() :
global b
b=5
Utilisation d’une variable globale - global print (a, b)

• Il peut se faire par exemple que vous ayez a=2


à définir une fonction qui soit capable de b=7
modifier une variable globale. Pour test()
atteindre ce résultat, il vous suffira print (a, b)
d’utiliser l’instruction global. Cette
instruction permet d’indiquer - à
Exécution
l’intérieur de la définition d’une fonction
- quelles sont les variables à traiter
globalement. 2 5
2 5
• On va ici créer une fonction qui a accès à
la_________________________________________________________________________________________
variable globale b.
48 Programmation en Python Pr. M. Zbakh
def permutation() :
a=5
Variables locales, b=10
variables globales
tmp=a
a=b
Application: b=tmp
print("a=",a,"b=",b

• Ecrire une fonction permutation pour a=5


permuter deux entiers ! b=10
permutation()

print("a=", a, "b=", b)

Exécution

a= 10 b= 5
a= 5 b= 10
_________________________________________________________________________________________
49 Programmation en Python Pr. M. Zbakh
def permutation() :
Variables locales, global a
variables globales global b
tmp=a
a=b
Application: b=tmp
print("a=",a,"b=",b

• Ecrire une fonction permutation pour a=5


permuter deux entiers ! La bonne b=10
version! permutation()

print("a=", a, "b=", b)

Exécution

a= 10 b= 5
a= 10 b= 5
_________________________________________________________________________________________
50 Programmation en Python Pr. M. Zbakh
Modules Python standards Math, Random et Statistics

Le module math

• Le module math nous fournit un accès à de nombreuses fonctions permettant de


réaliser des opérations mathématiques,
• Les fonctions les plus couramment utilisées sont les suivantes :
o Les fonctions ceil() et floor() renvoient l’arrondi du nombre passé en argument
en arrondissant respectivement à l’entier supérieur et inférieur ;
o La fonction fabs() renvoie la valeur absolu d’un nombre passé en argument ;
o La fonction isnan() renvoie True si le nombre passé en argument est NaN = Not a
Number (pas un nombre en français) ou False sinon ;
o La fonction exp() permet de calculer des exponentielles ;
o La fonction log() permet de calculer des logarithmes ;
o La fonction sqrt() permet de calculer la racine carrée d’un nombre ;
o Les fonctions cos(), sin(), tan() et atan() permettent de calculer des cosinus,
sinus, tangentes et arc tangente et renvoient des valeurs en radians.
_________________________________________________________________________________________
51 Programmation en Python Pr. M. Zbakh
Modules Python standards Math, Random et Statistics

Le module math

Remarques:
• Les fonctions de ce module ne peuvent pas être utilisées avec des nombres
complexes. Pour cela, il faudra plutôt utiliser les fonctions du module cmath.
• Le module math définit également des constantes mathématiques utiles comme pi
ou le nombre de Neper, accessibles via math.pi et math.e.

1. import math 4
2. print(math.ceil(3.1)) 4
3. print(math.ceil(3.9)) 3
Exécution 3
4. print(math.floor(3.1))
5. print(math.floor(3.9)) 4.0
6. print(math.fabs(-4)) 3.141592653589793
7. print(math.pi) 2.718281828459045
8. print(math.e)
52
Modules Python standards Math, Random et Statistics

Le module random

• Le module random nous fournit des outils pour générer des nombres pseudo-
aléatoires de différentes façons.
• La fonction random() est le plus utilisée du module. Elle génère un nombre à virgule
flottante aléatoire de façon uniforme dans la plage semi-ouverte [0.0, 1.0).
• La fonction uniform() va elle générer un nombre à virgule flottante aléatoire compris
dans un intervalle. On va lui passer deux nombes en argument : le premier nombre
représente la borne basse de l’intervalle tandis que le second représente la borne
supérieure.

1. import random 0.42372211951422156


2. print(random.random()) Exécution 0.7140628707137148
3. print(random.random()) 71.9367213217464
4. print(random.uniform(10,100))
_________________________________________________________________________________________
53 Programmation en Python Pr. M. Zbakh
Modules Python standards Math, Random et Statistics

Le module statistics

• Le module statistics nous fournit des outils nous permettant d’effectuer des calculs de
statistiques peu complexes, comme des calculs de moyenne, de médiane ou de
variance.
• Ce module contient notamment les fonctions suivantes :
o La fonction mean() permet de calculer une moyenne ;
o La fonction median() permet de calculer une médiane ;
o La fonction variance() permet de calculer une variance ;
o La fonction stdev() permet de calculer un écart type

1. import statistics as stat


2. x=[1,41,5,13] 15
3. print(stat.mean(x)) Exécution 9.0
4. print(stat.median(x)) 325.3333333333333
5. print(stat.variance(x)) 18.036999011291577

54
6. print(stat.stdev(x))
APPLICATIONS

1. Utilisez une liste en compréhension pour ajouter 3 à chaque élément


d’une liste d’entiers de 0 à 5.

2. Utilisez une liste en compréhension pour ajouter 3 à chaque élément


d’une liste d’entiers de 0 à 5, mais seulement si l’élément est
supérieur ou égal à 2.

3. Utilisez une liste en compréhension pour obtenir la liste ['ad', 'ae',


'bd', 'be', 'cd', 'ce'] à partir des chaînes "abc" et "de".
Indication : utilisez deux boucles for imbriquées.

4. Utilisez une liste en compréhension pour calculer la somme d’une


liste d’entiers de 0 à 9.
_________________________________________________________________________________________
55 Programmation en Python Pr. M. Zbakh
1. print(" Application 1 :")
APPLICATIONS 2. result1 = [i+3 for i in range(6)]
3. print(result1)

1. Utilisez une liste en compréhension


pour ajouter 3 à chaque élément d’une Exécution
liste d’entiers de 0 à 5.

Application 1 :
[3, 4, 5, 6, 7, 8]

_________________________________________________________________________________________
56 Programmation en Python Pr. M. Zbakh
1. print(" Application 2 :")
2. result2 = [i+3 for i in range(6) if i >= 2]
APPLICATIONS
3. print(result2)

2. Utilisez une liste en compréhension Exécution


pour ajouter 3 à chaque élément d’une
liste d’entiers de 0 à 5, mais seulement si
l’élément est supérieur ou égal à 2.
Application 2 :
[5, 6, 7, 8]

_________________________________________________________________________________________
57 Programmation en Python Pr. M. Zbakh
1. print("Application 3")
2. result3" = [i+j for i in "abc" for j in "de"]
APPLICATIONS
3. print(result3)

3. Utilisez une liste en compréhension


pour obtenir la liste ['ad', 'ae', 'bd', 'be',
'cd', 'ce'] à partir des chaînes "abc" et Exécution
"de". Indication : utilisez deux boucles
for imbriquées.

Application 3
['ad', 'ae', 'bd', 'be', 'cd', 'ce']

_________________________________________________________________________________________
58 Programmation en Python Pr. M. Zbakh
APPLICATIONS
1. print("Application 4")
2. s = sum([i for i in range(10)])
3. print("somme =", s)
4. Utilisez une liste en compréhension
pour calculer la somme d’une liste
d’entiers de 0 à 9.
Exécution

somme = 45

_________________________________________________________________________________________
59 Programmation en Python Pr. M. Zbakh
Modules et importations

• comment utiliser une même fonction dans plusieurs programmes différents ?


• comment avoir la définition d’une fonction dans un fichier différent de celui qui
contient le programme principal ?

Généralement, c’est un programmeur qui définit une fonction et un utilisateur qui


l’utilise. Par exemple, avec la bibliothèque matplotlib, on peut utiliser la
fonction plot() pour tracer des courbes sans avoir à écrire nous-mêmes cette
fonction. Nous allons donc voir à présent comment définir des fonctions dans
un module et faire en sorte qu’un utilisateur puisse appeler ces fonctions dans son
programme.

Par exemple, nous allons créer un fichier nommé puissance.py qui va définir deux
fonctions : carre() et cube(). Un tel fichier est appelé un module et il va pouvoir
être importé dans un autre fichier, et en particulier dans le fichier qui contient le
programme principal.

_________________________________________________________________________________________
60 Programmation en Python Pr. M. Zbakh
Modules et importations

def carre(valeur):
resultat = valeur**2
return resultat

def cube(valeur):
resultat = valeur**3
return resultat

Il est maintenant possible d’utiliser dans un programme principal les fonctions qui
ont été définies dans le module puissance.py. Pour cela, il faut importer les
fonctions à partir du module.
Exemple : on importe une seule fonction
from puissance import carre
a = 5
u = carre(a)
print("le carre vaut", u)
61
Modules et importations

Avertissement:
Le fichier puissance.py doit être dans le même répertoire que le programme
principal (ou bien se trouver dans le « path » de Python).

Exemple : on importe explicitement les deux fonctions

from puissance import carre, cube


a = 5
u = carre(a)
print("le carre vaut", u)
v = cube(a)
print("le cube vaut", v)

_________________________________________________________________________________________
62 Programmation en Python Pr. M. Zbakh
Modules et importations

Exemple : on importe toutes les fonctions

from puissance import *


a = 5
u = carre(a)
print("le carre vaut", u)
v = cube(a)
print("le cube vaut", v)

Avertissement:

L’importation de toutes les fonctions avec * est fortement déconseillée. En effet, elle ne
permet pas d’avoir une vision claire des fonctions qui ont été importées. Ceci est donc une
source potentielle d’erreurs.

________________________________________________________
63 Programmation en Python Pr. M. Zbakh
Modules et importations

Exemple : on importe le module

import puissance
a = 5
u = puissance.carre(a)
print("le carre vaut", u)
v = puissance.cube(a)
print("le cube vaut", v)

Note:
Dans ce cas, il faut préciser le nom du module devant la fonction.

Exemple : on importe le module et on lui donne un alias

_________________________________________________________
64 Programmation en Python Pr. M. Zbakh
Modules et importations

import puissance as pu
a = 5
u = pu.carre(a)
print("le carre vaut", u)
v = pu.cube(a)
print("le cube vaut", v)

Exemple : on importe une fonction d’un module et on lui donne un alias


Il est aussi possible de donner un alias à une fonction comme dans l’exemple suivant :
from puissance import carre as ca
a = 5
u = ca(a)
print("le carre vaut", u)

_________________________________________________________
65 Programmation en Python Pr. M. Zbakh
Modules et importations

Package
Quand on a un grand nombre de modules, il peut être intéressant de les organiser dans des
dossiers. Un dossier qui rassemble des modules est appelé un package (paquetage en
français). Le nom du package est le même que celui du dossier. Par exemple, on crée un
dossier package1 dans lequel on place le fichier module1.py suivant :

def fonction1(a):
return a**2

On peut ensuite utiliser la fonction fonction1() définie dans module1.py, en


important package1.module1 comme dans l’exemple qui suit :

import package1.module1
u = package1.module1.fonction1(3)
print ("u vaut", u)
_________________________________________________________
66 Programmation en Python Pr. M. Zbakh
Modules et importations

Exécution d’un module en tant que script


Quand on utilise un fichier en tant que script, la variable globale __name__ prend pour
valeur '__main__'. Ceci permet d’avoir dans le fichier un bloc d’instructions qui sera exécuté
uniquement lorsque le fichier est lancé en tant que script.

Par exemple, pour le fichier puissance2.py suivant :

def carre(valeur):
resultat = valeur**2
return resultat

if __name__ == "__main__":
a = 3
print("le carre vaut", carre(a))

On peut lancer une exécution directe en tant que script et on obtient alors :

le carre vaut 9
_________________________________________________________
67 Programmation en Python Pr. M. Zbakh
Modules et importations

Ou bien on peut importer puissance2 en tant que module, par exemple dans le fichier suivant :

import puissance2 as pu2

b = 4
print("le carre vaut", pu2.carre(b))

Si on exécute ce script, on obtient :

le carre vaut 16

_________________________________________________________
68 Programmation en Python Pr. M. Zbakh
Tracé de courbes

Pour tracer des courbes, Python n’est pas suffisant et nous avons besoin de la
bibliothèque Matplotlib utilisée dans ce cours.

Il existe deux styles de programmation :


• le style « pyplot » qui utilise directement des fonctions du module pyplot ;
• le style « Oriénté Objet (OO) » qui est recommandé dans la documentation
de Matplotlib.

Quel que soit le style de programmation, il est nécessaire d’importer le module pyplot de
matplotlib.

_________________________________________________________
69 Programmation en Python Pr. M. Zbakh
Installation de NumPy et de Matplotlib

Commande de téléchargement de NumPy et de Matplotlib :

Vous allez ouvrir la fenêtre noire du DOS et passer une commande d'installation de NumPy.
Cette fenêtre permet de passer toutes sortes de commande en court-circuitant Windows. Elle
est réservée aux initiés, car une commande malencontreuse pourrait endommager tout le
système.

En l'occurrence, je vous conseille de copier-coller la commande ci-dessous (sous Windows):

py -m pip install numpy


py -m pip install matplotlib

Sous Mac OS:

python3 -m pip install -U numpy

_________________________________________________________
70 Programmation en Python Pr. M. Zbakh
Tracé de courbes

Création d’une courbe

Utilisation de plot()

L’instruction plot() permet de tracer des courbes qui relient des points dont les abscisses et
ordonnées sont fournies en arguments.

Exemple 1

import numpy as np
import matplotlib.pyplot as plt

plt.plot([1, 3, 4, 6], [2, 3, 5, 1])

plt.show() # affiche la figure à l'écran

_________________________________________________________
71 Programmation en Python Pr. M. Zbakh
Tracé de courbes

_________________________________________________________
72 Programmation en Python Pr. M. Zbakh
Tracé de courbes

Création d’une courbe

Exemple 2

Dans cet exemple, nous allons tracer la fonction cosinus.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 30)


y = np.cos(x)

plt.plot(x, y)

plt.show() # affiche la figure à l'écran

_________________________________________________________
73 Programmation en Python Pr. M. Zbakh
Tracé de courbes

_________________________________________________________
74 Programmation en Python Pr. M. Zbakh
Tracé de courbes

Définition du domaine des axes - xlim(), ylim() et axis()

Dans le style pyplot, il est possible fixer les domaines des abscisses et des ordonnées en
utilisant les fonctions xlim(), ylim() ou axis().

xlim(xmin, xmax)
ylim(ymin, ymax)

axis() permet de fixer simultanément les domaines des abscisses et des ordonnées.

Note
Avec axis(), les limites du domaine doivent être données dans une liste où les valeurs sont
entourées par des crochets [ et ].

axis([xmin, xmax, ymin, ymax])

_________________________________________________________
75 Programmation en Python Pr. M. Zbakh
Tracé de courbes

Exemple avec xlim()

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 30)


y = np.cos(x)

plt.plot(x, y)
plt.xlim(-1, 5)

plt.show()

_________________________________________________________
76 Programmation en Python Pr. M. Zbakh
Tracé de courbes

Exemple avec xlim()

_________________________________________________________
77 Programmation en Python Pr. M. Zbakh
Tracé de courbes

Exemple avec ylim()

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 30)


y = np.cos(x)

plt.plot(x, y)
plt.ylim(-2, 2)

plt.show()

_________________________________________________________
78 Programmation en Python Pr. M. Zbakh
Tracé de courbes

Exemple avec ylim()

_________________________________________________________
79 Programmation en Python Pr. M. Zbakh
Tracé de courbes

Exemple avec axis()

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 30)


y = np.cos(x)

plt.plot(x, y)
plt.axis([-1, 5, -2, 2])

plt.show()

_________________________________________________________
80 Programmation en Python Pr. M. Zbakh
Tracé de courbes

Exemple avec axis()

_________________________________________________________
81 Programmation en Python Pr. M. Zbakh
Tracé de courbes

Ajout d’un titre - title()

Dans le style pyplot, on peut ajouter un titre grâce à l’instruction title().

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 30)


y = np.cos(x)

plt.plot(x, y)
plt.title("Fonction cosinus")

plt.show()

_________________________________________________________
82 Programmation en Python Pr. M. Zbakh
Tracé de courbes

_________________________________________________________
83 Programmation en Python Pr. M. Zbakh
Tracé de courbes

Ajout d’une légende - legend()

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 30)


y = np.cos(x)

plt.plot(x, y, label="cos(x)")
plt.legend()

plt.show()

_________________________________________________________
84 Programmation en Python Pr. M. Zbakh
Tracé de courbes

_________________________________________________________
85 Programmation en Python Pr. M. Zbakh
Tracé de courbes

Avertissement
Pour faire afficher le label, il ne faut pas oublier de faire appel à l’instruction legend()

Labels sur les axes - xlabel() et ylabel()


Dans le style pyplot, des labels sur les axes peuvent être ajoutés avec les
fonctions xlabel() et ylabel()

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 30)


y = np.cos(x)

plt.plot(x, y)
plt.xlabel("abscisses")
plt.ylabel("ordonnées")

plt.show()

_________________________________________________________
86 Programmation en Python Pr. M. Zbakh
Tracé de courbes

_________________________________________________________
87 Programmation en Python Pr. M. Zbakh
Tracé de courbes

Affichage de plusieurs courbes


Pour afficher plusieurs courbes sur un même graphe, on peut procéder de la façon suivante :

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 30)


y1 = np.cos(x)
y2 = np.sin(x)

plt.plot(x, y1)
plt.plot(x, y2)

plt.show()

_________________________________________________________
88 Programmation en Python Pr. M. Zbakh
Tracé de courbes

_________________________________________________________
89 Programmation en Python Pr. M. Zbakh
Tracé de courbes

Exemple avec une légende

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 30)


y1 = np.cos(x)
y2 = np.sin(x)

plt.plot(x, y1, label="cos(x)")


plt.plot(x, y2, label="sin(x)")
plt.legend()

plt.show()

_________________________________________________________
90 Programmation en Python Pr. M. Zbakh
Tracé de courbes

_________________________________________________________
91 Programmation en Python Pr. M. Zbakh
Tracé de courbes

Formats de courbes
Il est possible de préciser la couleur, le style de ligne et de symbole (« marker ») en ajoutant
une chaîne de caractères de la façon suivante :

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 30)


y1 = np.cos(x)
y2 = np.sin(x)

plt.plot(x, y1, "r--", label="cos(x)")


plt.plot(x, y2, "b:o", label="sin(x)")
plt.legend()

plt.show()

_________________________________________________________
92 Programmation en Python Pr. M. Zbakh
Tracé de courbes

_________________________________________________________
93 Programmation en Python Pr. M. Zbakh
Tracé de courbes

Formats de courbes
Il est possible de préciser la couleur, le style de ligne et de symbole (« marker ») en ajoutant
une chaîne de caractères de la façon suivante :

Chaîne Effet
- ligne continue
-- tirets
: ligne en pointillé
-. tirets points

Avertissement
Si on ne veut pas faire apparaître de ligne, il suffit d’indiquer un symbole sans préciser un style
de ligne.

_________________________________________________________
94 Programmation en Python Pr. M. Zbakh
Tracé de courbes

Exemple

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 20)


y = np.sin(x)

plt.plot(x, y, "o-", label="ligne -")

plt.plot(x, y-0.5, "o--", label="ligne --")


plt.plot(x, y-1, "o:", label="ligne :")
plt.plot(x, y-1.5, "o-.", label="ligne -.")

plt.plot(x, y-2, "o", label="pas de ligne")


plt.legend()

plt.show()

_________________________________________________________
95 Programmation en Python Pr. M. Zbakh
Tracé de courbes

_________________________________________________________
96 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy

Nous allons voir comment créer des tableaux avec la fonction numpy.array() de NumPy.

Ces tableaux pourront être utilisés comme des vecteurs ou des matrices grâce à des fonctions
de NumPy :

• numpy.dot(),
• numpy.linalg.det(),
• numpy.linalg.inv(),
• numpy.linalg.eig(),
• etc.

qui permettent de réaliser des calculs matriciels utilisés en algèbre.

_________________________________________________________
97 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy

Tableaux - numpy.array()

Pour créer des tableaux, on utilise numpy.array().

Tableaux monodimensionnels (1D)

Pour créer un tableau 1D, il suffit de passer une liste de nombres en argument
de numpy.array(). Un liste est constituée de nombres séparés par des virgules et
entourés de crochets ([ et ]).

import numpy as np
a = np.array([4,7,9])
print(a)
#[4, 7, 9]

_________________________________________________________
98 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy

Tableaux bidimensionnels (2D)

Pour créer un tableau 2D, il faut transmettre à numpy.array() une liste de listes grâce à des
crochets imbriqués.

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)
#[[1, 2, 3],
# [4, 5, 6]]

_________________________________________________________
99 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy

La fonction numpy.size()

La fonction numpy.size() renvoie le nombre d’éléments du tableau.

import numpy as np
a = np.array([2,5,6,8])

print(np.size(a))
#4
b = np.array([[1, 2, 3],
[4, 5, 6]])
print(np.size(b))
#6

_________________________________________________________
100 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy

La fonction numpy.shape()
La fonction numpy.shape() (forme, en anglais) renvoie la taille du tableau.
.

import numpy as np
a = np.array([2,5,6,8])
print( np.shape(a))
#(4,)

b = np.array([[1, 2, 3],
[4, 5, 6]])
print(np.shape(b))
#(2, 3)

_________________________________________________________
101 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy

Somme de deux matrices - +

Il est possible de réaliser la somme de deux matrices avec l’opérateur *. Il faut dans ce cas que
les deux tableaux aient la même taille.
.

import numpy as np
a = np.array([[1, 2, 3],
[4, 5, 6]])

b = np.array([[2, 1, 3],
[3, 2, 1]])
print(a+b)

#[[ 2, 2, 9],
# [12, 10, 6]])
_________________________________________________________
102 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy

Produit terme à terme - *

Il est possible de réaliser un produit terme à terme grâce à l’opérateur *. Il faut dans ce cas
que les deux tableaux aient la même taille.
.

import numpy as np
a = np.array([[1, 2, 3],
[4, 5, 6]])

b = np.array([[2, 1, 3],
[3, 2, 1]])
print(a*b)

#[[ 2, 2, 9],
# [12, 10, 6]])
_________________________________________________________
103 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy

Produit matriciel - numpy.dot()

Un tableau peut jouer le rôle d’une matrice si on lui applique une opération de calcul
matriciel. Par exemple, la fonction numpy.dot() permet de réaliser le produit matriciel..

import numpy as np
a = np.array([[1, 2, 3],
[4, 5, 6]])
b = np.array([[4],
[2],
[1]])
print(np.dot(a,b))

# [[11],
# [32]]
_________________________________________________________
104 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy

Produit matriciel - @

A partir de la version 3.5 de Python, il est également possible d’effectuer le produit matriciel
en utilisant @.

import numpy as np
a = np.array([[1, 2, 3],
[4, 5, 6]])
b = np.array([[4],
[2],
[1]])
print(a@b)

# [[11],
# [32]]
_________________________________________________________
105 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy

Transposé - .

import numpy as np
a = np.array([[1, 2, 3],
[4, 5, 6]])
print(a.T)

#[[1, 4],
# [2, 5],
# [3, 6]]

_________________________________________________________
106 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy

Complexe conjugué - numpy.conj()

import numpy as np

u = np.array([[ 2j, 4+3j],


[2+5j, 5 ],
[ 3, 6+2j]])

print(np.conj(u))

#[[ 0.-2.j, 4.-3.j],


# [ 2.-5.j, 5.+0.j],
# [ 3.+0.j, 6.-2.j]]

_________________________________________________________
107 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy

Transposé complexe conjugué

import numpy as np

print(np.conj(u).T)

#[[ 0.-2.j, 2.-5.j, 3.+0.j],


# [ 4.-3.j, 5.+0.j, 6.-2.j]]

_________________________________________________________
108 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy
Tableaux et slicing

Lors de la manipulation des tableaux, on a souvent besoin de récupérer une partie d’un
tableau. Pour cela, Python permet d’extraire des tranches d’un tableau grâce une technique
appelée slicing (tranchage, en français). Elle consiste à indiquer entre crochets des indices
pour définir le début et la fin de la tranche et à les séparer par deux-points :.

import numpy as np

a = np.array([12, 25, 34, 56, 87])


print(a[1:3])

# [25, 34]

_________________________________________________________
109 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy

Remarque

Dans la tranche [n:m], l’élément d’indice n est inclus, mais pas celui d’indice m. Un moyen
pour mémoriser ce mécanisme consiste à considérer que les limites de la tranche sont définies
par les numéros des positions situées entre les éléments, comme dans le schéma ci-dessous :

_________________________________________________________
110 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy

Il est aussi possible de ne pas mettre de début ou de fin.

import numpy as np

a = np.array([12, 25, 34, 56, 87])


print(a[1:])

#[25, 34, 56, 87]

print(a[:3])

#[12, 25, 34]

print(a[:])

#[12, 25, 34, 56, 87]


_________________________________________________________
111 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy
Slicing des tableaux 2D

import numpy as np
a = np.array([[1, 2, 3],
[4, 5, 6]])
print(a[0,1])
#2

print(a[:,1:3])

# [[2, 3],
# [5, 6]]

print(a[:,1])
#[2, 5])

print(a[0,:])
#[1, 2, 3]
_________________________________________________________
112 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy

Avertissement

a[:,n] donne un tableau 1D correspondant à la colonne d’indice n de a. Si on veut obtenir un


tableau 2D correspondant à la colonne d’indice n, il faut faire du slicing en utilisant
a[:,n:n+1].

import numpy as np
a = np.array([[1, 2, 3],
[4, 5, 6]])
print(a[:,1:2])

#[[2],
# [5]]

_________________________________________________________
113 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy

Tableaux de 0 - numpy.zeros()

zeros(n) renvoie un tableau 1D de n zéros. zeros((m,n)) renvoie tableau 2D de taille m x


n, c’est-à-dire de shape (m,n).

import numpy as np import numpy as np

print(np.zeros(3)) print(np.zeros((2,3)))

#[ 0., 0., 0.] # [[ 0., 0., 0.],


# [ 0., 0., 0.]]

_________________________________________________________
114 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy

Tableaux de 1 - numpy.ones() Matrice identité - numpy.eye()


eye(n) renvoie tableau 2D carré de taille n x n,
avec des uns sur la diagonale et des zéros
import numpy as np partout ailleurs.

print(np.ones(3))
import numpy as np
#[ 1., 1., 1.])
print(np.eye(3))
print(np.ones((2,3)))
#[[ 1., 0., 0.],
#[[ 1., 1., 1.], # [ 0., 1., 0.],
# [ 1., 1., 1.]] # [ 0., 0., 1.]]

_________________________________________________________
115 Programmation en Python Pr. M. Zbakh
Tableaux et calcul matriciel avec NumPy

Exercice

1) Effectuer le produit suivant : (234156)(123)

2) Produire un tableau de taille 7 x 8 ne contenant que des 3.

_________________________________________________________
116 Programmation en Python Pr. M. Zbakh
Algèbre linéaire

Déterminant - numpy.linalg.det()

import numpy as np

from numpy.linalg import det

a = np.array([[1, 2],
[3, 4]])
print(det(a))

#-2.0

_________________________________________________________
117 Programmation en Python Pr. M. Zbakh
Algèbre linéaire

Inverse - numpy.linalg.inv()

import numpy as np

from numpy.linalg import inv

a = np.array([[1, 3, 3],
[1, 4, 3],
[1, 3, 4]])
print(inv(a))

#[[ 7., -3., -3.],


# [-1., 1., 0.],
# [-1., 0., 1.]]

_________________________________________________________
118 Programmation en Python Pr. M. Zbakh
Algèbre linéaire

Résolution d’un système d’équations linéaires - numpy.linalg.solve()

Pour résoudre le système d’équations linéaires :


3 ∗ 𝑥 +𝑥 = 9
ቊ 𝑥 +02 ∗𝑥 1= 8
0 1

import numpy as np
Pour vérifier que la solution est
a = np.array([[3,1], [1,2]])
correcte :
b = np.array([9,8])
import numpy as np
x = np.linalg.solve(a, b) np.allclose(np.dot(a, x), b)
#True
print(x)

#[ 2., 3.]

_________________________________________________________
119 Programmation en Python Pr. M. Zbakh
Algèbre linéaire
Valeurs propres et vecteurs propres - numpy.linalg.eig()

import numpy as np

from numpy.linalg import eig

A = np.array([[ 1, 1, -2 ], [-1, 2, 1], [0, 1, -1]])

D, V = eig(A)

print(D)
#[ 2., 1., -1.])

print(V)

# [[ 3.01511345e-01, -8.01783726e-01, 7.07106781e-01],


# [ 9.04534034e-01, -5.34522484e-01, -3.52543159e-16],
# [ 3.01511345e-01, -2.67261242e-01, 7.07106781e-01]]
Les colonnes de V sont les vecteurs propres de A associés aux valeurs propres qui apparaissent dans D.
_________________________________________________________
120 Programmation en Python Pr. M. Zbakh
Algèbre linéaire
Changement de la taille d’un tableau
Il est possible de changer la taille d’un tableau en utilisant l’attribut shape de ce tableau.

import numpy as np
u = np.arange(1, 16)
print(u)
# [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
print(np.shape(u))
#(15,)
u.shape = (3, 5)
print(u)
#[[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15]])
print(np.shape(u))
#(3, 5)
_________________________________________________________
121 Programmation en Python Pr. M. Zbakh
Algèbre linéaire
Obtention d’un tableau 2D ligne ou colonne

import numpy as np
a = np.arange(1, 6)
print(a)
# [1, 2, 3, 4, 5]
a.shape = (1, np.size(a))
print(a)
#[[1, 2, 3, 4, 5]]
a.shape = (np.size(a), 1)
print(a)
# [[1],
[2],
[3],
[4],
[5]]
_________________________________________________________
122 Programmation en Python Pr. M. Zbakh

Vous aimerez peut-être aussi