Guide Complet sur le Développement Python
Guide Complet sur le Développement Python
Avancé
F. HAMDAD
Développer en Python
Sommai
re
1- Les bases de Python : Présentation, opérateurs, types, variables,
choix, boucles
2- Listes, tuples, chaines (encodage utf8)
3- Dictionnaires, fichiers (tuples comme clé d’un dictionnaire)
4- Fonctions, paramètres, valeurs de retour (retourner tuples)
5- Modules, bibliothèques, packages, API : os, socket, scapy
6- Listes en compréhension, Générateurs, any / all
7- Fonctions intégrées : zip(), map(), filter()
8- Programmation Orientée Objet POO : Classes, objets, propriétés
9- POO : Surcharge, décorateur
10- Bibliothèques pour la sécurité : paramiko, os, argparse, hashlib,
socket, scapy
Développer en Python
Interpréteur vs Compilateur
Interpréteur : Exécute le code source directement, ligne par ligne. Plus flexible et
interactif, mais généralement plus lent.
Exemple :
Interpréteur : Python, JavaScript, Ruby
Compilateur : C, C++, Java (avec bytecode)
Développer en Python
Interpréteur ou Compilateur ?
Compilateur :
Les langages compilés pour les systèmes d'exploitation, les applications de
bas niveau, les jeux vidéo, ou des applications exigeantes en termes de
performance (comme le calcul scientifique).
Les langages comme C et C++ sont très efficaces pour ce genre d'applications
en raison de leur grande rapidité d'exécution.
Interpréteur :
Les langages interprétés pour des applications web, des scripts, des
applications légères, des prototypes ou des outils.
Python est un excellent choix pour les scripts automatiques, les calculs
scientifiques, le machine learning, et les applications web grâce à sa
syntaxe simple et ses bibliothèques étendues.
Développer en Python
Versions de Python
CPython est la version standard, largement utilisée et compatible avec toutes les
bibliothèques Python.
PyPy est conçu pour améliorer la performance des programmes Python grâce à son
compilateur JIT (Just In Time).
Stackless Python permet de mieux gérer des tâches parallèles avec une approche légère.
Développer en Python
Python
Versions Python 3.13
L’IDE VSCode
Développer en Python
- Calculs et opérateurs : + - * % // / **
compatibilité
[Link]
1
[Link]
[Link]
1
[Link]
>>> a = 5 >>> a = "5"
>>> b = 8 >>> b = 8
>>> a + b >>> a + b
13 Erreur
>>> int(a) + b
>>> a = "5" 13
>>> b = "8" >>> a + str(b)
>>> a + b "58" >>> a = 5.4
"58" >>> b = 2
>>> a * b >>> a = 5 >>> int(a)+b
Erreur >>> b = "4" 7
>>> a*b
Opérateurs >>> a = 5 44444
>>> a = "8.5"
>>> str(a)*int(b)
et >>> b = "8"
5555
>>> b = 3
>>> a + b >>> int(float(a))+b
conversions
dans IDLE Erreur >>> str(a)*int(b)+b 11
>>> a * b 55554
"88888" >>> a*b+str(a) >>> a = "8.5"
>>> b * a 444445
>>> b = 3
"88888"
>>> int(str(int(float(a)))+str(b))
83
>>> a = 5 >>> a = "5"
>>> b = 2 >>> b = "2"
>>> a // b >>> int(a) % b
2 Erreur
>>> a % b >>> int(a)%int(b)
1 1
>>> a ** b >>> int(a)//int(b)
25 2
Développer en Python
Les sorties
>>> x=1
>>> print(x)
1
>>> y=3
>>> print(x,y)
1 3
>>> age=22
>>> print("vous avez ",age,"ans")
vous avez 22 ans
Développer en Python
>>> n1=24.55
>>> n2=32
>>> nbre=10
>>> print(f"{n} en binaire = {nbre:b}")
10 en binaire = 1010
Formats d’affichage :
>>> print(f"{n}en octal = {nbre:o}")
10 en octal = 12 "d" : affiche en decimal (par defaut)
"b" : Binaire
"o" : affiche en octal
>>> print(f"{n} en hexadécimal = {nbre:x}") "x" ou "X" : affiche en hexa
10 en hexadécimal = a "f" : réel
>>> nbre=0x10
>>> print(f"0x{nbre:x} en décimal = {nbre:d}")
0x10 en décimal = 16
Les sorties
>>> nbre=0o11
>>> print(f"{nbre:d}")
9
>>> nbre=0b11110000
>>> print(f"{nbre:d}")
240
Développer en Python
>>> print(age)
22
>>> print(age+10)
Erreur Les entrées
>>> type(age)
<class 'str’>
>>> print(int(age)+10)
32
Le paramètre end="
"
Développer en Python
Bloc note /
[Link]
Dans notepad
Exécution
double-
clic
Développer en Python
Dans Python
IDE
Développer en Python
Dans l’IDE
VSCode
Développer en Python
Exemple :
Exercices
- Ecrire un script Python qui demande le nom et les deux notes de l'utilisateur et
affiche sa moyenne.
- Ecrire un script Python qui demande à l’utilisateur un nombre et affiche le résultat
de sa division par 2 et
le reste de cette division.
- Ecrire un script Python qui demande le nom et le prénom de l'utilisateur et les
affiche sur une ligne avec
2 instructions print.
Développer en Python
Les instructions
Conditionnelles et itératives
Condition if / else
Boucle for / while
Développer en Python
Condition if / else
Condition if / else
Une condition contient des :
if condition: - Opérateurs arithmétiques : + - / // * ** %
traitement_si_condition_vraie - Opérateurs de comparaison : > >= < <= == !=
else:
- Opérateurs logiques : and, or, not
traitement_si_condition_fausse
- Opérateur in : if c in texte :
Et retourne toujours une des valeurs logiques Python
True ou False
Exemples :
!
L’espacement à gauche des
traitements est obligatoire
Développer en Python
Conditions
if imbriquéimbriquées
? if / elif
ou plus simplement ?
Développer en Python
Syntaxe
Syntaxe
Exercices
Syntaxe
• "Poussin" de 6 à 9 ans
• "Minime" de 10 à 12 ans
• "Cadet" de 13 à 15 ans
Développer en Python
Syntaxe
Exercices (2)
Boucle while
Initialisation condition
while condition:
traitement_tantque_vrai
Exemple :
!
L’espacement avant les
traitements est
obligatoire
Développer en Python
Boucle for
for élément in chaine/range:
traitement_tantque_vrai
Exemple :
break :
Forcer la sortie de la boucle.
continue :
Reprendre la boucle (au
while/for).
Syntaxes
Exercices
Ecrire un programme Python qui :
- affiche les 20 premiers nombres entiers pairs.
- affiche les multiples de 3 de 1 à 100.
- fait la somme des 10 premiers nombres entiers.
- fait le produit de 10 nombres donnés par l’utilisateur.
- affiche les nombres de 10 à 1 en ordre décroissant.
- demande n nombres et affiche le maximum et le minimum parmi ces nombres.
- demande un nombre entier à l’utilisateur et affiche sa factorielle.
Développer en Python
Les Listes
Variable dans laquelle on peut mettre un ensemble de valeurs de
différents types.
Liste = []
Liste = [1,2,3]
Liste = ["a","b","c"]
Liste = [10,"bonjour",20.2,"5"]
Développer en Python
Fonctions
sur les listes
Développer en Python
append
Ajouter un élément à la fin de la
liste.
del
Supprimer un élément par son
index.
remove
Supprimer un élément en le
précisant.
sorted
Trier une liste (créer une autre
liste).
sort
Trier une liste en modifiant la liste.
Le paramètre reverse est utilisé
de la même manière avec sort
Et aussi les fonctions :
Développer en Python
len
Nombre d'éléments dans la liste.
reverse
Inverse les éléments.
extend
Ajoute une liste à une autre.
count
Compte le nombre d'occurrences d'un
élément dans la liste.
index
Indique la position d'un élément dans
la liste.
Développer en Python
clear
Vide la liste.
Liste[a:b:c]
a : index de l’élément début
b : index de l’élément fin
c : pas (step)
insert
Insert un élément dans une position
(index) donnée.
Développer en Python
Strip(chaine)
>>> Ma_Chaine="Je suis à PARIS."
>>> Ma_Chaine
'Je suis à PARIS.'
>>> Ma_Chaine.strip(".")
'Je suis à PARIS'
>>> Ma_Chaine.strip("Je")
' suis à PARIS.'
>>> c="bonjour" >>> Ma_Chaine.strip("PARIS")
>>> len(c) 'Je suis à PARIS.'
>>> Ma_Chaine.strip("PARIS.")
7
'Je suis à '
Développer en Python
Exercices
1- Ecrire un programme qui demande une liste de 10 valeurs et affiche leur somme et
moyenne. Listes
2- Ecrire un programme qui demande une liste de 10 valeurs puis affiche la valeur la
plus grande dans cette liste, sa position et le nombre de ses occurrences.
3- Ecrire un programme qui demande une liste de n valeurs et affiche le nombre
d'éléments, le nombre de "5" et la position du "1" s'il existe dans cette liste.
4- Ecrire un programme qui demande une liste de valeurs (-1 indique la fin de la liste)
puis construit 2 listes, une avec les valeurs positives et l’autre avec les valeurs
négatives.
5- Ecrire un programme qui dit si oui ou non un élément fait partie d'une liste de 10
valeurs données. Quand l'utilisateur répond "non" à la question : "Une autre
recherche?",
Dans terminer
tous les exercices, lesle programme.
listes doivent être d’abord construites avant de faire les
6- traitements.
Demander une liste à l’utilisateur. Cette liste contient des doublons. Construire une
Développer en Python
Exercices
7- Un routeur contient une table deListes
routage simplifiée donnée par l'utilisateur,
représentée par une liste de sous-listes. Chaque sous-liste contient 3 entiers :
[Réseau, Masque, Interface]
Exemple :
table_routage = [
[10, 24, 0], # Réseau [Link]/24 via interface 0
[192, 16, 1], # Réseau [Link]/16 via interface 1
[172, 12, 2] ] # Réseau [Link]/12 via interface 2
Exercices
Chaines
1- Ecrire un programme qui mets côte à côte (séparé par une virgule) les 5 mots
d'une liste.
2- Ecrire un programme qui demande une adresse email et affiche le username puis
le nom de domaine (sans le tld).
5- Ecrire un programme qui demande une liste de noms à l’utilisateur où les noms
sonttous
Dans précédés par « Mr
les exercices » ou
avec « Mme
listes, ». Le
les listes programme
doivent doit construire
être d’abord construites deux
avant listes : les
de faire
une liste avec les noms des dames et une autre avec le noms des messieurs.
traitements.
Développer en Python
Exercices
6- Ecrire un programme qui demande une adresse IP /24 et affiche l'adresse réseau.
7- Ecrire un programme qui demande une adresse IP et le masque par classe et
affiche l'adresse réseau.
8- Affiche la liste suivante : ["vlan10","vlan20","vlan30","vlan40"] comme suit
[10,20,30,40].
Développer en Python
Exercices
9- Un routeur contient une table de routage simplifiée donnée par l'utilisateur,
représentée par une liste de sous-listes. Chaque sous-liste contient 3 éléments :
[Network, Classless_mask, Interface]
Exemple :
table_routage = [
["[Link]", 24, 0], # Réseau [Link]/24 via interface 0
["[Link]", 16, 1], # Réseau [Link]/16 via interface 1
["[Link]", 16, 2] ] # Réseau [Link]/12 via interface 2
QUIZZ,
Le jeu des capitales
Ecrire un programme jeu quizz. Une liste avec
pays/capitales est construite (6 pays). L'utilisateur
est ensuite testé :
Le programme donne un pays (au hasard) et
l'utilisateur propose sa capitale. Le programme
évalue si la réponse est correcte ou non, puis
redonne un autre pays.
Quand l'utilisateur tape une chaine particulière
("bye" par exemple), le quizz doit se terminer et un
pourcentage des bonnes réponses s'afficher.
Au hasard?
# Générer 10 nombres aléatoires dans une liste
from random import choice
i=0
while i<10:
Liste = [1,2,3]
Choix = choice(Liste) # choice retourne une chaine
print(Choix)
i+=1
Les caractères
accentués
Développer en Python
Les Tuples
Collection ordonnée d’éléments.
contrairement aux listes, les tuples ne peuvent pas être modifiés (pas d’ajout, suppression,
modification d’éléments).
t = () # tuple vide
t = (1, 2, 3)
print(len(t)) # 3
t = (10, "Python", 3.14)
t = (5,) # tuple d’un élément
t = (5) # ce n’est pas un tuple, c’est un int
Développer en Python
Assignation multiple :
déballage
t = (1, 2, 3)
a, b, c = t
print(a, b, c) # 1 2 3
Développer en Python
Fonctions sorted() :
nombres = [5, 2, 9, 1]
print(sorted(nombres, reverse=True)) # [9, 5, 2, 1]
print(sorted(nombres, reverse=False)) # [1, 2, 5, 9]
Exercices Tuples
1- Un tuple machine contient des informations sur une machine : ("PC01", "Windows", "[Link]",
"8 Go")
Afficher le nom de la machine, son adresse IP et son système d’exploitation.
4- Un tuple partitions contient la liste des lettres de partitions montées données par l’utilisateur.
Par exemple : ("C:", "D:", "E:")
- Afficher la dernière partition système.
- Vérifier si une partition "F:" existe.
- Ajouter manuellement une partition "F:".
Développer en Python
Exercices Tuples
Imaginons un scénario où il faut simuler une file d'attente d'utilisateurs qui attendent
pour accéder à un système. Chaque utilisateur est représenté par un tuple contenant
son nom et le temps qu'il a attendu dans la file (en minutes).
L’objectif est de :
Solution
# Tuple de la file d'attente : chaque utilisateur est un tuple (nom, temps_d_attente)
file = (
("Alice", 25),("Bob", 40),("Charlie", 10),("David", 35),("Eve", 20)
)
# 5. Trier la file par temps d'attente (du plus faible au plus élevé)
file_tries = sorted(file, key=lambda x: x[1])
print("\nFile triée par temps d'attente (du plus faible au plus élevé) :")
for utilisateur in file_tries:
print(f"- {utilisateur[0]} ({utilisateur[1]} minutes)")
Développer en Python
Les Dictionnaires
Un dictionnaire est une collection non ordonnée de paires clé-valeur (key-value).
Chaque clé est unique, et permet d'accéder à sa valeur associée.
Utilité : Accès rapide aux valeurs via les clés, idéal pour représenter des données structurées (ex : annuaire,
données JSON).
Cl Valeur
é
- Les valeurs peuvent être de n'importe quel type pas les clés (diapo suivante).
- Le dictionnaire est modifiable.
- L’ordre d’insertion conservé.
Développer en Python
Les Dictionnaires
mon_dico = {
"nom": "Amine",
"âge": 22,
"nom": "Sara"
}
print(mon_dico) # {'nom': 'Sara', 'âge': 22}
Développer en Python
Les Dictionnaires
print(etudiant["nom"]) # Leila
print([Link]("nom")) # Leila
print([Link]("adresse")) # None
print([Link]("adresse", "Adresse inconnue")) # Adresse inconnue
Développer en Python
Les Dictionnaires
etudiant["âge"] = 26 # Modification
etudiant["adresse"] = "Gambetta" # Ajout
Les Dictionnaires
---
Les Dictionnaires
Parcourir un dictionnaire :
d = {"nom": "Leila", "âge": 25, "ville": "Oran"}
for value in [Link](): Leila
25
print(value) Oran
Les Dictionnaires
Les Dictionnaires
Exemple 1 :
Créer et gérer un annuaire téléphonique saisi par l’utilisateur :
Solution :
annuaire = {} # Initialisation du dictionnaire vide
n = int(input("Combien de contacts voulez-vous saisir ? "))
# Saisie des contacts
for i in range(n):
nom = input(f"Nom du contact {i+1} : ")
numero = input(f"Numéro de {nom} : ")
annuaire[nom] = numero
Les Dictionnaires
Exemple 2 :
Trouver la fréquence de chaque mot dans un texte.
Développer en Python
Les Dictionnaires
Exemple 2 :
Trouver la fréquence de chaque mot dans un texte. Stocker les résultats dans un
dictionnaire.
d={}
mot="Python est facile, Python est rapide, Python est riche«
l=[Link]()
for i in range(len(l)):
l[i]=l[i].strip(',')
for e in l :
d[e]=[Link](e)
Les Dictionnaires
Exemple 2 : Solution 2
Trouver la fréquence de chaque mot dans un texte. Stocker les résultats dans un
dictionnaire.
text="Python est simple, Python est puissant, Python est riche"
d={}
l=[Link]()
for i in range(len(l)):
l[i]=l[i].strip(',')
for e in l :
if e in d :
d[e]+=1
else:
d[e]=1
print(d) # --> {'Python': 3, 'est': 3, 'simple,': 1, 'puissant,': 1, 'riche': 1}
Développer en Python
Exercices Dictionnaires
Développer en Python
Exercice 1 :
Créer un dictionnaire où les clés sont des numéros (1, 2, 3, etc.) et les
valeurs sont les noms des mois. Ensuite, écrire un programme qui prend
un numéro de mois et retourne le nom correspondant.
Exercice 2 :
Le programme doit trouver et afficher le nom avec la plus grande note et celui avec la
plus petite note.
Par exemple, pour un dictionnaire {'Alice': 75, 'Bob': 82, 'Charlie': 91}, le programme devrait
afficher Charlie comme ayant la meilleure note et Alice comme ayant la plus faible.
Développer en Python
Exercice 3 :
Soit une liste de configurations donnée par l’utilisateur sous forme de chaînes
"clé=valeur", par exemple :
ip=[Link], mask=[Link], gateway=[Link]
Exercice 4 :
Dans une entreprise, chaque développeur possède plusieurs compétences en fonction des projets
sur lesquels il travaille. Voici les données des compétences des développeurs :
competences = {
"Alice": ["Développement Web", "Base de données", "Sécurité","C++"],
"Bob": ["Développement Web", "Base de données", "UI/UX"],
"Charlie": ["Développement Web", "Analyse de données", "Sécurité"],
"David": ["Sécurité", "Réseaux", "Développement Web"]
}
- Quel développeur a le plus grand nombre de compétences.
- Afficher la liste des compétences (sans doublons).
- Afficher les compétences partagées par plusieurs développeurs.
- Ajouter un développeur avec 5 compétences données par l’utilisateur (boucle pour les
compétences).
- Créer un dictionnaire inversé où chaque compétence est associée à une liste des développeurs
qui possèdent cette compétence.
- Ajouter une compétence à Alice.
- Supprimer le développeur ayant le moins de compétences. max_comp=float('inf')
- Créer un menu pour toutes ces fonctionnalités.
Développer en Python
Exercice 5 :
Connexions_pc4 = {
"Serveur A": (1 , 2 , 3),
"Serveur B": (1 , 2),
"Serveur C": (3 , ),
"Serveur D": (3 , 4)
}
Pour aller au "Serveur A", le trafic passe par le "switch 1 ", " port 1 " puis le " switch 2 " "
port 3 ".
Exercice 6 :
Par exemple :
{
"eth0": {"ip": "[Link]", "status": "up"},
"eth1": {"ip": "[Link]", "status": "down"}
}
- Parcourir ce dictionnaire et afficher uniquement les interfaces dont le statut est "up".
- Ajouter une nouvelle interface "eth2" avec "ip": "[Link]" et "status": "up".
- Changer le statut de "eth1" en "up".
- Supprimer l’interface "eth0".
- Vérifier si l’interface "eth3" existe dans le dictionnaire.
- Créer un menu pour ces traitements.
Développer en Python
Exercice 7 :
Soit un dictionnaire qui contient pour chaque serveur son état et son temps de
fonctionnement (uptime) en heures, par exemple :
{
"srv1": {"etat": "actif", "uptime": 240},
"srv2": {"etat": "inactif", "uptime": 0},
"srv3": {"etat": "actif", "uptime": 120}
}
Exercice 8 :
Soit un dictionnaire avec des noms d’équipements comme clés et des dictionnaires de
paramètres comme valeurs, par exemple :
{
"switch1": {"ports": 24, "vlan": 10},
"switch2": {"ports": 48, "vlan": 20}
}
es Fichiers Textes
Moyen de stocker des données de façon permanente.
f = open("nom_fichier", "mode")
mode :
r : Ouverture en lecture d'un fichier txt. Permet de lire le contenu du fichier mais pas d'écrire dedans.
Le fichier doit exister.
a : Ouverture en écriture ajout d'un fichier txt. Permet d'ajouter des lignes en fin de fichier. Si le
fichier n'existe pas, il est créé.
w : Ouverture en écriture nouvelle d'un fichier txt. Permet de réinitialiser le fichier. Si le fichier
n'existe pas, il est créé.
r + : Ouverture en écriture et lecture d'un fichier txt. L'écriture est possible à n'importe quelle position. Le
fichier doit exister.
a+ : Ouverture en écriture ajout et lecture d'un fichier txt. Si le fichier n'existe pas, il est créé.
w+: Ouverture en écriture nouvelle et lecture d'un fichier txt. Si le fichier n'existe pas, il est
créé.
Développer en Python
[Link]("ligne1\nligne2\nligne3")
[Link]
"\n" est le
caractère
saut de ligne
Développer en Python
Parcourir
un fichier
Les sauts de lignes supplémentaire après chaque ligne du fichier et celui de print
Développer en Python
writelines(Liste) ?
Développer en Python
Exercices
Fichiers
1- Écrire un script qui demande à l'utilisateur 10 noms et les stocke dans un fichier puis affiche
les noms stockés dans le fichier.
2- Écrire un script qui demande à l'utilisateur 10 noms, prénoms et âges et les stocke dans un
fichier [Link]. Le fichier [Link] n'existe pas doit être rempli comme suit :
Nom-Prenom-Age
3- Écrire un script qui construit un fichier de usernames à partir d'un fichier d’adresses mail. Le
fichier d'adresses mail existe déjà et est plein.
4- Améliorez le code de l'exercice précédent : C’est l’utilisateur qui dit ce qui doit être stocké
dans le fichier : le username, le domaine ou l’extension du domaine tld (.com ou .net etc.)
Développer en Python
Exercices Fichiers
(2)
5- Ecrire une fonction de cryptage et une autre de décryptage en utilisant le cryptage césar (ord,
chr).
6- Ecrire un script qui stocke dans un fichier le nom d'hôte et l'adresse IP valides de 20 hôtes :
Nom d'hôte-Adresse IP puis affiche les noms d'hôtes stockés dans le fichier.
7- Ecrire un script qui demande à l'utilisateur des adresses IP valides et les stocke dans un
fichier.
8- Ecrire un script qui construit un fichier d'adresses IP réseaux à partir d'un fichier d'adresses IP
d'hôtes /24.
Le fichier d'adresses IP d'hôtes existe déjà
Améliorer le code de l'exercice 9 : Les masques sont différents (par classe).
Améliorer le code de l'exercice 9 : Les masques sont sans classe.
Exercice
Ecrire un programme avec Récapitulatif
menu qui donne pour un routeur R1 :
1- Version de l'iOS.
2- Liste des interfaces UP/UP .
3- Liste des protocoles de routage configurés.
4- Configuration OSPF si elle existe .
5- Liste des Vlan actifs.
6- Pool Nat.
7- R1 administrable par telnet ou non.
8- Quizz connaissances réseaux.
Utiliser les fichiers de configuration qui conviennent dans la topologie Python_Exo.pkt
Utiliser le fichier Net_Quizz.txt pour le quizz. Voir les détails du quizz diapo suivante.
Le programme doit maintenant faire les traitements 1 à 7 pour 3 routeurs R1, R2 et R3.
Les noms des fichiers sont disponibles dans un fichier texte comme suit :
Par exemple pour le running-config : [Link] → R1 : run_R1.txt
R2 : run_R2.txt
R3 : run_R3.txt
Développer en Python
Exercice
QUIZZ Réseau avec fichier
Ecrire un programme jeu quizz. Une liste avec
Questions_réseaux:Réponse est stockée dans un fichier
texte.
Au hasard?
i=0
while i<10:
Liste = [1,2,3]
Choix = choice(Liste) # choice retourne une chaine
print(Choix)
i+=1
Développer en Python
Les caractères
accentués
Développer en Python
Les Fonctions
Programm
e
sans
fonctions
Traitement
Programm
Traitement ressemblant
e qui se répète
sans
fonctions
Traitement
Traitement ressemblant
qui se répète
Développer en Python
Les fonctions
def nom_fonction(parametres):
traitement
return valeur
Valeur de retour
(pas obligatoire)
Définition de la fonction
Appel de la fonction
Programme
Paramètres de la fonction
Développer en Python
Exemple 1 :
Moyenne de deux nombres.
Exemple 1 :
Moyenne de deux nombres.
Fonction inconnue
parce que définie dans un autre module
Développer en Python
on
e l a foncti
d
Appel
Fonction définie
Programme [Link] dans un autre module [Link]
on
e l a foncti
d
Appel
- import func importe le module mais pas son contenu. On doit préciser le nom du module avant la fonction
[Link](x,y)
- from func import moyenne importe la fonction seulement . Dans ce cas, on met juste moyenne(x,y).
- from func import * importe toues les fonctions du module. Là encore, on met juste moyenne(x,y).
Différence? voir [Link], [Link], [Link]
Développer en Python
L'import de modules
Python importe les modules contenus dans des dossiers précis.
Exemple 2 :
Afficher les meilleures notes de 2 classes.
Programm
e
en 1
module
avec
fonctions
print(f"Classe 1 : {MeilleureNote(classe1)}")
Programm
e
en 2
modules
A partir de la, on ne programme pas les fonctions puis le code principal mais l'inverse.
On construit le programme avec les appels de fonctions qui ne sont pas encore implémentées. Puis on implémente ces fonctions.
Développer en Python
Les Exceptions
Développer en Python
Développer en Python
e
Développer en Python
e
Développer en Python
>>> 1/0
ZeroDivisionError: division by zero
>>> 1+a
NameError: name 'a' is not defined
>>> f=open("")
FileNotFoundError: [Errno 2] No such file or directory: ''
>>> f=open("d:")
PermissionError: [Errno 13] Permission denied: 'd:'
>>> f==open("w:")
NameError: name 'f' is not defined
>>> Liste=[]
>>> Liste[5]
IndexError: list index out of range
Développer en Python
Exercice
Ecrire un script qui gère les cas suivants avec des messages personnalisés.
>>> 1/0
>>> 1+a
>>> f=open("")
>>> f=open("d:")
>>> print([Link](input()))
>>> Liste=[]
>>> Liste[5]
Développer en Python
Le Débogage
Exercices (1) : Écrire des programmes avec fonctions paramétrées qui :
Exercices (2) :
Exercices (4) :
SHUTIL
Manipuler des fichiers et dossiers.
1- Manipulation des fichiers et répertoires :
import os
import shutil
# Créer un répertoire
if not [Link]('.') :
[Link]('mon_dossier')
else :
print('Dossier déja existant')
# Changer de répertoire
[Link]("mon_dossier")
Interaction système / OS
Fonction Description
[Link](command) Exécute une commande système
[Link] Accède aux variables d’environnement
[Link] Donne le nom du système OS
Valeur de [Link] Système concerné
Linux, macOS, Unix-
'posix'
like
'nt' Windows
Jython (Python sur
'java'
JVM)
Exercice 1 :
import os
import os
# Changer de répertoire
[Link]('mon_dossier')
# Exécuter une commande système pour lister les fichiers dans le répertoire
if [Link] == 'nt': # Si l'OS est Windows
[Link]('dir')
else: # Si l'OS est Linux ou macOS
[Link]('ls')
Exercice 3 :
Créer un script Python qui analyse un dossier donné, affiche la taille totale de chaque
fichier, détecte les extensions potentiellement dangereuses, et propose de supprimer les
fichiers suspects.
import os
import shutil
total_taille = 0
fichiers_suspects = [] # Liste pour stocker les fichiers suspects
Ecrire un script qui permet dire si le port 80 d’un hôte est ouvert ou non.
Améliorer le script pour qu’il affiche les ports ouverts d’un hôte.
import socket
client=[Link](socket.AF_INET,socket.SOCK_STREAM)
try:
[Link](("[Link]",80))
except ConnectionRefusedError :
print("Port ferme")
else:
print("Port ouvert")
import socket
PORT_DEBUT=75
PORT_FIN=85
client=[Link](socket.AF_INET,socket.SOCK_STREAM) # Création d'une instance
socket
port=PORT_DEBUT
print("Ports ouverts sur [Link]")
while port<PORT_FIN:
try:
[Link](("[Link]",port)) # Etablir la connexion avec le serveur.
except ConnectionRefusedError :
print(".",end="")
else:
print("\n"+str(port)+": ouvert")
client = [Link](socket.AF_INET, socket.SOCK_STREAM)
#une fois que le socket est ouvert, mm s'il est fermé avec shutdown et close,
# l'os met du temps a le fermer. Créer une nouvelle instance regle cela
port=port+1
Exercice 2 :
Un thread (fil d'exécution) est une unité d'exécution d'un programme, permettant
d'exécuter plusieurs tâches simultanément dans un même processus. Chaque thread
fonctionne de manière asynchrone, ce qui permet au programme de réaliser plusieurs
opérations en parallèle, comme l'attente d'une réponse réseau ou le traitement de
données, tout en continuant à exécuter d'autres tâches.
Parfois, on souhaite attendre que le thread ait terminé son exécution avant de continuer
avec le programme principal, ou avant d'enchaîner sur un autre thread.
def compteur1():
for i in range(1, 6):
[Link](1)
print(f"Compteur 1: {i}")
def compteur2():
for i in range(6, 11):
[Link](1)
print(f"Compteur 2: {i}")
def handle_client(socket_c,address_c):
print ("client connecte : ", address_c)
MessRecu=socket_c.recv(4096).decode()
print("Message recu : ", MessRecu)
MessAenvoyer=input("Message a envoyer : ").encode()
socket_c.send(MessAenvoyer)
server = [Link](socket.AF_INET,socket.SOCK_STREAM)
[Link](("[Link]",99))
[Link]()
while True :
print("Serveur a l'ecoute...")
client_C,info_C = [Link]()
client_hand = [Link](target=handle_client,args=(client_C,info_C))
client_hand.start()