0% ont trouvé ce document utile (0 vote)
61 vues16 pages

Python

Cours python

Transféré par

douniaelhor35
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)
61 vues16 pages

Python

Cours python

Transféré par

douniaelhor35
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
Vous êtes sur la page 1/ 16

Cours sur les Vecteurs en Python

Nabil Boumedine
Université de Boumerdes
Département de Mathématiques
October 23, 2024

1 Introduction
Les vecteurs sont des objets mathématiques fondamentaux qui trouvent de
nombreuses applications en sciences et en ingénierie. En Python, les vecteurs
peuvent être manipulés efficacement à l’aide de bibliothèques comme NumPy.

2 Définition d’un Vecteur


Un vecteur est une entité mathématique qui possède à la fois une magnitude
et une direction. Dans le contexte de Python, nous pouvons considérer un
vecteur comme une liste ou un tableau de nombres.

3 Création de Vecteurs avec NumPy


Pour travailler avec des vecteurs en Python, nous allons utiliser la bib-
liothèque NumPy. Voici comment installer NumPy et créer un vecteur :

3.1 Installation de NumPy


Pour installer NumPy, exécutez la commande suivante dans votre terminal :

pip install numpy

1
3.2 Création d’un Vecteur
import numpy as np

# Création d’un vecteur


v = np.array([1, 2, 3])
print(v)

4 Opérations sur les Vecteurs


4.1 Addition de Vecteurs
L’addition de vecteurs est réalisée en ajoutant les éléments correspondants :
v1 = np.array([1, 2, 3])
v2 = np.array([4, 5, 6])
v3 = v1 + v2
print(v3) # Output: [5 7 9]

4.2 Multiplication par un Scalaire


On peut multiplier un vecteur par un scalaire :
v4 = 2 * v1
print(v4) # Output: [2 4 6]

4.3 Produit Scalaire


Le produit scalaire entre deux vecteurs peut être calculé avec la méthode dot
:
dot_product = np.dot(v1, v2)
print(dot_product) # Output: 32

5 Applications des Vecteurs


Les vecteurs sont utilisés dans de nombreux domaines, notamment :
ˆ Physique : représentation des forces

ˆ Informatique : traitement d’images

ˆ Statistiques : analyse de données

2
6 Opérations sur Matrices en Python
Les matrices sont des structures de données fondamentales en mathématiques
et en informatique. En Python, nous pouvons manipuler des matrices à l’aide
de bibliothèques comme NumPy. Ce document présente les opérations de
base sur les matrices en Python, accompagnées d’exercices pratiques.

6.1 Installation de NumPy


Pour commencer, vous devez installer la bibliothèque NumPy. Vous pouvez
l’installer via pip :

pip install numpy

6.2 Création de Matrices


Pour créer une matrice en utilisant NumPy, nous pouvons utiliser la fonction
numpy.array().

import numpy as np

# Création d’une matrice 2x3


A = np.array([[1, 2, 3],
[4, 5, 6]])

7 Opérations de Base
7.1 Addition de Matrices
Deux matrices peuvent être ajoutées si elles ont les mêmes dimensions.

B = np.array([[7, 8, 9],
[10, 11, 12]])
C = A + B # Addition des matrices

7.2 Soustraction de Matrices


La soustraction est effectuée de manière similaire à l’addition.

D = A - B # Soustraction des matrices

3
7.3 Multiplication de Matrices
La multiplication des matrices se fait avec la fonction numpy.dot() ou l’opérateur
@.

E = np.array([[1, 2],
[3, 4],
[5, 6]])
F = np.dot(A, E) # Produit matriciel
# ou
F = A @ E

7.4 Transposition de Matrices


Pour transposer une matrice, vous pouvez utiliser la méthode transpose()
ou l’attribut T.

G = A.T # Transposition de A

8 Exercices
8.1 Exercice 1
Créer deux matrices X et Y de dimensions 2 × 2, puis calculez leur somme
et leur produit.

8.2 Solution 1
X = np.array([[1, 2],
[3, 4]])
Y = np.array([[5, 6],
[7, 8]])

somme = X + Y
produit = np.dot(X, Y)

8.3 Exercice 2
Créer une matrice Z de dimensions 3 × 2 et calculez sa transposition.

4
8.4 Solution 2
Z = np.array([[1, 2],
[3, 4],
[5, 6]])

Z_transpose = Z.T

9 Les Chaı̂nes
Les chaı̂nes de caractères (ou strings) en Python sont des séquences de car-
actères immuables. Python offre de nombreuses opérations pour manip-
uler ces chaı̂nes, allant de la création à la transformation. Ce document
présente les opérations courantes sur les chaı̂nes de caractères, accompagnées
d’exemples.

9.1 Création de Chaı̂nes


Les chaı̂nes peuvent être créées en utilisant des guillemets simples ou doubles.

# Création de cha^
ınes
string1 = ’Bonjour’
string2 = "Monde"

10 Accès aux Caractères


Les caractères d’une chaı̂ne peuvent être accédés par leur index, commençant
à 0.

# Accès au premier caractère


first_char = string1[0] # ’B’

11 3. Longueur de la Chaı̂ne
La fonction len() permet d’obtenir la longueur d’une chaı̂ne.

length = len(string1) # 7

5
12 Slicing
Le slicing permet de créer une sous-chaı̂ne.

# Obtenir une sous-cha^


ıne
substring = string1[0:3] # ’Bon’

13 Concaténation
Les chaı̂nes peuvent être concaténées à l’aide de l’opérateur +.

# Concaténation de cha^
ınes
concatenated = string1 + ’ ’ + string2 # ’Bonjour Monde’

14 Répétition
L’opérateur * permet de répéter une chaı̂ne.

# Répéter une cha^


ıne
repeated = string1 * 3 # ’BonjourBonjourBonjour’

15 Méthodes de Manipulation des Chaı̂nes


Voici quelques méthodes courantes pour manipuler les chaı̂nes :

15.1 upper() et lower()


Transforme les caractères en majuscules ou en minuscules.

upper_case = string1.upper() # ’BONJOUR’


lower_case = string1.lower() # ’bonjour’

15.2 strip()
Supprime les espaces au début et à la fin de la chaı̂ne.

string_with_spaces = ’ Bonjour ’
stripped_string = string_with_spaces.strip() # ’Bonjour’

6
15.3 replace()
Remplace une sous-chaı̂ne par une autre.

replaced_string = string1.replace(’Bonjour’, ’Salut’) # ’Salut’

15.4 split()
Divise la chaı̂ne en une liste de sous-chaı̂nes.

sentence = ’Bonjour, comment ça va ?’


words = sentence.split() # [’Bonjour,’, ’comment’, ’ça’, ’va’, ’?’]

15.5 join()
Joint une liste de chaı̂nes en une seule chaı̂ne, séparée par un délimiteur.

words = [’Bonjour’, ’tout’, ’le’, ’monde’]


joined_string = ’ ’.join(words) # ’Bonjour tout le monde’

16 Recherche dans les Chaı̂nes


16.1 find()
Retourne l’index de la première occurrence d’une sous-chaı̂ne.

index = string1.find(’jour’) # 3

16.2 count()
Compte le nombre d’occurrences d’une sous-chaı̂ne.

count = string1.count(’o’) # 2

17 Formattage des Chaı̂nes


La méthode format() permet d’insérer des valeurs dans une chaı̂ne.

name = ’Alice’
formatted_string = ’Bonjour, {}!’.format(name) # ’Bonjour, Alice!’

7
18 F-Strings (Python 3.6+)
Les f-strings permettent d’incorporer des expressions à l’intérieur de chaı̂nes.
name = ’Alice’
f_string = f’Bonjour, {name}!’ # ’Bonjour, Alice!’

19 Les Packages de Python


Python dispose d’une vaste bibliothèque de packages qui étendent ses fonc-
tionnalités. Ces packages permettent de travailler sur des domaines variés
tels que l’analyse de données, le machine learning, le développement web, etc.
Voici une liste de quelques packages essentiels, avec une description détaillée
de chacun.

20 Packages Populaires
20.1 NumPy
Description : NumPy est une bibliothèque fondamentale pour le calcul
scientifique en Python. Elle fournit un support pour les tableaux multidi-
mensionnels (ndarray) et des fonctions mathématiques pour opérer sur ces
tableaux.
ˆ Manipulation de tableaux multidimensionnels.
ˆ Fonctions mathématiques de base (addition, multiplication, statistiques).
ˆ Opérations vectorisées pour améliorer les performances.

20.2 Pandas
Description : Pandas est une bibliothèque utilisée pour la manipulation
et l’analyse de données. Elle introduit des structures de données comme les
DataFrames, qui facilitent le traitement des données.
ˆ Chargement et sauvegarde de données dans divers formats (CSV, Excel,
SQL).
ˆ Indexation et sélection de données.
ˆ Opérations de regroupement et d’agrégation.
ˆ Gestion des valeurs manquantes.

8
20.3 Matplotlib
Description : Matplotlib est une bibliothèque de visualisation de données.
Elle permet de créer des graphiques statiques, animés et interactifs en Python.

ˆ Création de graphiques en 2D (lignes, barres, histogrammes).

ˆ Personnalisation des graphiques (titres, légendes, axes).

ˆ Intégration avec Jupyter Notebooks pour des visualisations interac-


tives.

20.4 Seaborn
Description : Seaborn est une bibliothèque de visualisation de données
basée sur Matplotlib. Elle fournit une interface de haut niveau pour dessiner
des graphiques attrayants et informatifs.

ˆ Graphiques statistiques (heatmaps, violin plots).

ˆ Thèmes et palettes de couleurs prédéfinis.

ˆ Intégration facile avec des DataFrames de Pandas.

20.5 Scikit-learn
Description : Scikit-learn est une bibliothèque pour le machine learning.
Elle offre des outils pour l’apprentissage supervisé et non supervisé.

ˆ Classification, régression, clustering.

ˆ Prétraitement des données et validation croisée.

ˆ Outils pour évaluer les performances des modèles.

20.6 TensorFlow
Description : TensorFlow est une bibliothèque open source développée par
Google pour le machine learning et le deep learning. Elle est largement
utilisée pour construire et entraı̂ner des modèles d’apprentissage profond.

ˆ Support pour les réseaux de neurones.

ˆ Optimisation automatique des gradients.

ˆ Outils pour le déploiement de modèles.

9
20.7 Keras
Description : Keras est une API de haut niveau pour construire et entraı̂ner
des modèles de deep learning. Elle est souvent utilisée avec TensorFlow
comme backend.

ˆ Interface simple et intuitive.

ˆ Support pour les modèles séquentiels et fonctionnels.

ˆ Intégration facile avec des ensembles de données.

20.8 Flask
Description : Flask est un framework web léger pour Python. Il est conçu
pour faciliter le développement d’applications web.

ˆ Routage simple pour gérer les URL.

ˆ Support pour les templates HTML via Jinja2.

ˆ Extensible avec des plugins.

20.9 Django
Description : Django est un framework web de haut niveau qui facilite
la création de sites web. Il suit le principe “batteries incluses”, offrant de
nombreuses fonctionnalités prêtes à l’emploi.

ˆ ORM pour interagir avec des bases de données.

ˆ Authentification et gestion des utilisateurs.

ˆ Système de templating intégré.

20.10 Requests
Description : Requests est une bibliothèque pour faire des requêtes HTTP
en Python. Elle rend les appels API simples et intuitifs.

ˆ Envoi de requêtes HTTP (GET, POST, PUT, DELETE).

ˆ Gestion des sessions et des cookies.

ˆ Support pour le traitement des réponses (JSON, texte).

10
21 Packages de Cryptographie
La cryptographie est essentielle pour sécuriser les communications et protéger
les données sensibles. Python dispose de plusieurs bibliothèques de cryp-
tographie qui facilitent la mise en œuvre des techniques cryptographiques.
Ce document présente quelques-uns des principaux packages de cryptogra-
phie, accompagnés d’exemples d’utilisation.

21.1 1. PyCryptodome
Description : PyCryptodome est une bibliothèque de cryptographie qui of-
fre un large éventail d’algorithmes de chiffrement symétrique et asymétrique,
ainsi que des fonctions de hachage.

ˆ Support pour AES, DES, RSA, DSA, etc.

ˆ Fonctions de hachage (SHA-256, MD5, etc.).

ˆ Génération de clés, signatures numériques et plus.

Exemple : Chiffrement AES

from Crypto.Cipher import AES


from Crypto.Random import get_random_bytes

# Génération d’une clé


key = get_random_bytes(16)
cipher = AES.new(key, AES.MODE_EAX)

# Chiffrement d’un message


plaintext = b’Hello, World!’
nonce = cipher.nonce
ciphertext, tag = cipher.encrypt_and_digest(plaintext)

print("Ciphertext:", ciphertext)

21.2 2. cryptography
Description : La bibliothèque cryptography fournit des recettes et des
primitives cryptographiques pour la sécurisation des données. Elle est bien
documentée et facile à utiliser.

ˆ Support pour les chiffrages symétriques et asymétriques.

11
ˆ Gestion des clés et des certificats.

ˆ Hachage et signatures numériques.

Exemple : Chiffrement Fernet

from cryptography.fernet import Fernet

# Génération d’une clé


key = Fernet.generate_key()
cipher = Fernet(key)

# Chiffrement d’un message


plaintext = b’Hello, World!’
ciphertext = cipher.encrypt(plaintext)

print("Ciphertext:", ciphertext)

# Déchiffrement
decrypted_text = cipher.decrypt(ciphertext)
print("Decrypted:", decrypted_text)

21.3 3. hashlib
Description : Le module hashlib fournit une interface commune pour
différents algorithmes de hachage. Il est intégré dans la bibliothèque standard
de Python.

ˆ Support pour SHA-1, SHA-256, MD5, etc.

ˆ Utilisé pour créer des empreintes numériques (hash).

Exemple : Hachage SHA-256

import hashlib

# Hachage d’une cha^


ıne
message = b’Hello, World!’
hash_object = hashlib.sha256(message)
hex_dig = hash_object.hexdigest()

print("SHA-256 Hash:", hex_dig)

12
21.4 4. PyNaCl
Description : PyNaCl (Python bindings for Networking and Cryptography)
est une bibliothèque qui implémente des primitives cryptographiques de haut
niveau.

ˆ Chiffrement et déchiffrement avec NaCl.

ˆ Support pour les signatures numériques et les clés publiques.

Exemple : Chiffrement et Déchiffrement

from nacl import secret, encoding

# Génération d’une clé


key = secret.SecretBox.generate_key()
box = secret.SecretBox(key)

# Chiffrement d’un message


plaintext = b’Hello, World!’
ciphertext = box.encrypt(plaintext)

print("Ciphertext:", ciphertext)

# Déchiffrement
decrypted = box.decrypt(ciphertext)
print("Decrypted:", decrypted)

La cryptographie est l’art de protéger les informations en les transformant de


manière à ce qu’elles ne soient compréhensibles que par ceux qui possèdent
une clé de déchiffrement. Ce document présente des méthodes de cryptogra-
phie simples, notamment le chiffrement par substitution, le chiffrement par
décalage (César), et le chiffrement par Vigenère, avec une mise en œuvre
pratique pour chiffrer le message :

”Nous sommes les étudiants de CS de l’université de Boumerdes.”

22 Chiffrement par Substitution


22.1 Concept
Le chiffrement par substitution consiste à remplacer chaque lettre du texte
clair par une autre lettre. Cela peut se faire en utilisant un alphabet décalé

13
ou une clé spécifique. Chaque lettre du message original est substituée par
une lettre déterminée par la clé.

22.2 Implémentation en Python


Voici une implémentation d’un chiffrement par substitution avec un alphabet
décalé :

def substitution_encrypt(plaintext, key):


alphabet = ’ABCDEFGHIJKLMNOPQRSTUVWXYZ’
key = key.upper()
substitution_dict = {alphabet[i]: key[i] for i in range(len(alphabet))}
ciphertext = ’’.join(substitution_dict.get(char, char) for char in plaintext.
return ciphertext

key = ’DEFGHIJKLMNOPQRSTUVWXYZABC’ # Exemple de clé de substitution


plaintext = ’Nous sommes les étudiants de CS de l\’université de Boumerdes.’
ciphertext = substitution_encrypt(plaintext, key)
print("Substitution Ciphertext:", ciphertext)

23 Chiffrement par Décalage (César)


23.1 Introduction
Le chiffrement de César est une méthode de chiffrement par substitution dans
laquelle chaque lettre du texte clair est remplacée par une lettre située à un
certain nombre de positions plus loin dans l’alphabet. Par exemple, avec un
décalage de 3, ’A’ devient ’D’, ’B’ devient ’E’, etc.

23.2 Concept
La méthode de César est simple et consiste à :

ˆ Choisir un décalage, par exemple 3.

ˆ Pour chaque lettre du texte, la remplacer par la lettre qui se trouve 3


positions plus loin dans l’alphabet.

ˆ Si le décalage dépasse la lettre ’Z’, on revient au début de l’alphabet.

14
23.3 Implémentation en Python
Voici comment implémenter le chiffrement de César en Python :

def caesar_encrypt(plaintext, shift):


result = ""
for char in plaintext:
if char.isalpha(): # Vérifie si le caractère est une lettre
shift_amount = shift % 26 # Assure que le décalage est dans l’alphab
if char.isupper(): # Pour les lettres majuscules
new_char = chr((ord(char) - 65 + shift_amount) % 26 + 65)
else: # Pour les lettres minuscules
new_char = chr((ord(char) - 97 + shift_amount) % 26 + 97)
result += new_char
else:
result += char # Garde les caractères non alphabétiques tels quels
return result

# Exemple d’utilisation
plaintext = ’Nous sommes les étudiants de CS de l\’université de Boumerdes.’
shift = 3 # Décalage de 3
ciphertext = caesar_encrypt(plaintext, shift)
print("César Ciphertext:", ciphertext)

23.4 Exemple de Chiffrement


Supposons que nous souhaitions chiffrer le message suivant :

”Nous sommes les étudiants de CS de l’université de Boumerdes.”

Avec un décalage de 3, le chiffrement produira le résultat suivant :

César Ciphertext: Qrxv vprphv ohv hwxglhdqwv gh FS gh o’xqlyhuvwh gh Erxphuhv.

23.5 Concept
Le chiffrement de Vigenère utilise une clé pour décaler chaque lettre du texte
clair en fonction de la lettre correspondante de la clé. Si la clé est plus courte
que le texte, elle est répétée. Cela rend le chiffrement plus résistant aux
analyses de fréquence que le chiffrement de César.

15
23.6 Implémentation en Python
Voici une implémentation du chiffrement de Vigenère :

def vigenere_encrypt(plaintext, key):


result = []
key_length = len(key)
key_as_int = [ord(i) for i in key.upper()]
plaintext_int = [ord(i) for i in plaintext.upper()]

for i in range(len(plaintext_int)):
if plaintext[i].isalpha():
value = (plaintext_int[i] + key_as_int[i % key_length]) % 26
result.append(chr(value + 65))
else:
result.append(plaintext[i])

return ’’.join(result)

plaintext = ’Nous sommes les étudiants de CS de l\’université de Boumerdes.’


key = ’CLE’ # Exemple de clé
ciphertext = vigenere_encrypt(plaintext, key)
print("Vigenère Ciphertext:", ciphertext)

16

Vous aimerez peut-être aussi