COURS COMPLET : PROGRAMMATION EN
PYTHON
1. Introduction et Configuration
Qu’est-ce que Python ?
Python est un langage de programmation :
interprété : le code est exécuté directement par l’interpréteur Python ;
haut niveau : sa syntaxe est proche du langage humain ;
polyvalent : utilisé en développement web, data science, automatisation, IA,
scripts système, cybersécurité, etc. ;
lisible : il privilégie une syntaxe claire et une indentation obligatoire.
Sa philosophie repose sur la simplicité et la lisibilité du code.
# Python favorise une syntaxe simple et lisible
message = "Python est facile à lire"
print(message)
Installation et environnement de travail
Pour programmer en Python, il faut généralement :
installer Python depuis le site officiel ;
utiliser un éditeur ou IDE :
IDLE : environnement simple fourni avec Python ;
VS Code : éditeur moderne avec extensions Python ;
PyCharm : IDE complet pour projets professionnels.
Vérifier l’installation dans le terminal :
python --version
ou selon les systèmes :
python3 --version
Premier script Python
Créer un fichier nommé [Link] :
print("Hello, World!")
Exécution dans le terminal :
python [Link]
ou :
python3 [Link]
2. Les Fondations du Langage
Variables et types de données de base
Une variable permet de stocker une valeur en mémoire.
age = 25 # int : entier
prix = 19.99 # float : nombre décimal
nom = "Alice" # str : chaîne de caractères
est_connecte = True # bool : booléen
Types principaux :
int : nombres entiers ;
float : nombres décimaux ;
str : texte ;
bool : vrai ou faux.
Afficher le type d’une variable :
age = 25
print(type(age)) # <class 'int'>
Typage dynamique
Python est un langage à typage dynamique : il n’est pas nécessaire de déclarer
explicitement le type d’une variable.
valeur = 10
print(type(valeur)) # int
valeur = "Bonjour"
print(type(valeur)) # str
La même variable peut donc changer de type pendant l’exécution du programme.
Opérateurs
Opérateurs arithmétiques
a = 10
b=3
print(a + b) # addition : 13
print(a - b) # soustraction : 7
print(a * b) # multiplication : 30
print(a / b) # division : 3.333...
print(a // b) # division entière : 3
print(a % b) # modulo : 1
print(a ** b) # puissance : 1000
Opérateurs de comparaison
x=5
y = 10
print(x == y) # égal à : False
print(x != y) # différent de : True
print(x < y) # inférieur à : True
print(x >= y) # supérieur ou égal à : False
Opérateurs logiques
age = 20
a_permis = True
print(age >= 18 and a_permis) # True si les deux conditions sont vraies
print(age < 18 or a_permis) # True si au moins une condition est vraie
print(not a_permis) # inverse le booléen
Chaînes de caractères
Une chaîne de caractères est une suite de caractères entourée par des guillemets
simples ou doubles.
prenom = "Alice"
nom = "Durand"
# f-string : permet d'insérer des variables dans une chaîne
message = f"Bonjour {prenom} {nom}"
print(message)
Méthodes courantes :
texte = " Python est puissant "
print([Link]()) # met en minuscules
print([Link]()) # met en majuscules
print([Link]()) # supprime les espaces au début et à la fin
print([Link]("puissant", "simple")) # remplace un mot
print(len(texte)) # longueur de la chaîne
3. Les Structures de Contrôle
Conditions : if , elif , else
Les conditions permettent d’exécuter du code selon une situation.
note = 14
if note >= 16:
print("Très bien")
elif note >= 10:
print("Validé")
else:
print("Non validé")
L’indentation est obligatoire en Python : elle détermine les blocs de code.
Boucle while
La boucle while répète un bloc tant qu’une condition est vraie.
compteur = 0
while compteur < 5:
print(compteur)
compteur += 1 # équivaut à compteur = compteur + 1
Boucle for avec range()
La boucle for sert à parcourir une séquence ou à répéter une action un nombre précis
de fois.
for i in range(5):
print(i)
Résultat :
0
1
2
3
4
Avec un début, une fin et un pas :
for i in range(2, 10, 2):
print(i) # affiche 2, 4, 6, 8
Contrôle de boucle : break et continue
break arrête complètement la boucle.
for i in range(10):
if i == 5:
break
print(i)
continue saute l’itération actuelle et passe à la suivante.
for i in range(5):
if i == 2:
continue
print(i) # n'affiche pas 2
4. Les Structures de Données Complexes
Listes
Une liste est une collection ordonnée, modifiable et indexée.
fruits = ["pomme", "banane", "orange"]
print(fruits[0]) # premier élément
print(fruits[-1]) # dernier élément
Slicing
Le slicing permet d’extraire une partie d’une liste.
nombres = [0, 1, 2, 3, 4, 5]
print(nombres[1:4]) # éléments d'index 1 à 3 : [1, 2, 3]
print(nombres[:3]) # du début jusqu'à l'index 2
print(nombres[3:]) # de l'index 3 jusqu'à la fin
Méthodes principales
fruits = ["pomme", "banane"]
[Link]("orange") # ajoute à la fin
[Link]("banane") # supprime un élément
[Link](0, "kiwi") # insère à l'index 0
[Link]() # trie la liste
print(fruits)
Tuples
Un tuple est une collection ordonnée mais immuable : on ne peut pas modifier ses
éléments après création.
coordonnees = (43.6, 3.87)
print(coordonnees[0])
print(coordonnees[1])
Utilité :
représenter des données fixes ;
protéger des valeurs contre la modification ;
retourner plusieurs valeurs depuis une fonction.
def get_position():
return (10, 20)
x, y = get_position()
print(x, y)
Dictionnaires
Un dictionnaire stocke des données sous forme clé / valeur.
utilisateur = {
"nom": "Alice",
"age": 25,
"ville": "Montpellier"
}
print(utilisateur["nom"])
Modifier ou ajouter une valeur :
utilisateur["age"] = 26
utilisateur["email"] = "alice@[Link]"
print(utilisateur)
Parcourir un dictionnaire :
for cle, valeur in [Link]():
print(f"{cle} : {valeur}")
Méthodes utiles :
print([Link]()) # toutes les clés
print([Link]()) # toutes les valeurs
print([Link]("age")) # accès sécurisé à une valeur
Ensembles : set
Un ensemble est une collection non ordonnée qui ne contient pas de doublons.
nombres = {1, 2, 2, 3, 4}
print(nombres) # {1, 2, 3, 4}
Opérations courantes :
a = {1, 2, 3}
b = {3, 4, 5}
print(a | b) # union : {1, 2, 3, 4, 5}
print(a & b) # intersection : {3}
print(a - b) # différence : {1, 2}
5. Les Fonctions
Définition et syntaxe
Une fonction regroupe un bloc de code réutilisable.
def saluer():
print("Bonjour")
saluer()
Arguments positionnels
Les arguments positionnels dépendent de leur ordre d’appel.
def addition(a, b):
print(a + b)
addition(3, 5)
Arguments nommés
Les arguments nommés permettent de préciser explicitement le nom des paramètres.
def presenter(nom, age):
print(f"{nom} a {age} ans")
presenter(age=25, nom="Alice")
Valeurs par défaut
Un paramètre peut avoir une valeur par défaut.
def saluer(nom="utilisateur"):
print(f"Bonjour {nom}")
saluer()
saluer("Alice")
Valeur de retour : return
return permet à une fonction de renvoyer une valeur.
def carre(nombre):
return nombre * nombre
resultat = carre(4)
print(resultat)
Différence importante :
print() affiche une valeur ;
return renvoie une valeur exploitable dans le programme.
Fonctions anonymes : lambda
Une fonction lambda est une fonction courte, écrite sur une seule ligne.
double = lambda x: x * 2
print(double(5)) # 10
Usage fréquent avec sorted() , map() ou filter() .
personnes = [
{"nom": "Alice", "age": 25},
{"nom": "Bob", "age": 20}
]
# Tri selon l'âge
personnes_triees = sorted(personnes, key=lambda p: p["age"])
print(personnes_triees)
6. Programmation Orientée Objet — POO : Les Bases
Classes et objets
La programmation orientée objet permet de modéliser des entités avec :
des attributs : données de l’objet ;
des méthodes : actions possibles de l’objet.
Une classe est un modèle.
Un objet est une instance concrète de cette classe.
class Utilisateur:
pass
u1 = Utilisateur()
print(type(u1))
Initialisateur __init__ et self
La méthode __init__ est appelée automatiquement lors de la création d’un objet.
class Utilisateur:
def __init__(self, nom, age):
[Link] = nom # attribut d'instance
[Link] = age
utilisateur = Utilisateur("Alice", 25)
print([Link])
print([Link])
self représente l’objet courant.
Il permet d’accéder aux attributs et méthodes de l’instance.
Méthodes d’instance
Une méthode d’instance est une fonction définie dans une classe.
class Utilisateur:
def __init__(self, nom):
[Link] = nom
def saluer(self):
print(f"Bonjour, je m'appelle {[Link]}")
utilisateur = Utilisateur("Alice")
[Link]()
Héritage
L’héritage permet de créer une classe spécialisée à partir d’une classe existante.
class Animal:
def __init__(self, nom):
[Link] = nom
def se_presenter(self):
print(f"Je suis {[Link]}")
class Chien(Animal):
def aboyer(self):
print("Woof!")
chien = Chien("Rex")
chien.se_presenter() # méthode héritée
[Link]() # méthode spécifique
La classe Chien hérite des attributs et méthodes de la classe Animal .
7. Gestion des Erreurs et Fichiers
Exceptions : try , except , finally
Les exceptions permettent de gérer les erreurs sans arrêter brutalement le programme.
try:
nombre = int(input("Entrez un nombre : "))
resultat = 10 / nombre
print(resultat)
except ValueError:
print("Erreur : vous devez entrer un nombre entier.")
except ZeroDivisionError:
print("Erreur : division par zéro impossible.")
finally:
print("Fin du traitement.")
Rôle des blocs :
try : code susceptible de provoquer une erreur ;
except : traitement de l’erreur ;
finally : code exécuté dans tous les cas.
Lecture d’un fichier texte
La syntaxe with open() ferme automatiquement le fichier après utilisation.
with open("[Link]", "r", encoding="utf-8") as fichier:
contenu = [Link]()
print(contenu)
Modes courants :
"r" : lecture ;
"w" : écriture avec remplacement du contenu ;
"a" : ajout à la fin du fichier ;
"x" : création uniquement si le fichier n’existe pas.
Écriture dans un fichier texte
with open("[Link]", "w", encoding="utf-8") as fichier:
[Link]("Bonjour Python\n")
[Link]("Deuxième ligne\n")
Lecture ligne par ligne
with open("[Link]", "r", encoding="utf-8") as fichier:
for ligne in fichier:
print([Link]()) # strip() supprime le saut de ligne final
8. L’Écosystème Python — Bonus Synthétique
Importer un module
Un module est un fichier contenant du code Python réutilisable.
import math
print([Link](16)) # racine carrée
Importer uniquement un élément :
from math import sqrt
print(sqrt(25))
Utiliser un alias :
import datetime as dt
date_actuelle = [Link]()
print(date_actuelle)
Modules standards utiles
math
Fonctions mathématiques.
import math
print([Link])
print([Link](81))
print([Link](4.9)) # arrondi inférieur
datetime
Manipulation des dates et heures.
from datetime import datetime
maintenant = [Link]()
print(maintenant)
print([Link])
os
Interaction avec le système d’exploitation.
import os
print([Link]()) # dossier courant
print([Link](".")) # fichiers du dossier courant
random
Génération de valeurs aléatoires.
import random
print([Link](1, 6)) # nombre aléatoire entre 1 et 6
print([Link](["pierre", "feuille", "ciseaux"]))
pip
pip est le gestionnaire de paquets de Python.
Il permet d’installer des bibliothèques externes.
Exemple :
pip install requests
Utilisation ensuite dans Python :
import requests
response = [Link]("[Link]
print(response.status_code)
Environnements virtuels : venv
Un environnement virtuel permet d’isoler les dépendances d’un projet.
Création :
python -m venv .venv
Activation sur macOS / Linux :
source .venv/bin/activate
Activation sur Windows :
.venv\Scripts\activate
Installation d’un paquet dans l’environnement virtuel :
pip install requests
Sauvegarder les dépendances :
pip freeze > [Link]
Réinstaller les dépendances d’un projet :
pip install -r [Link]
Structure classique d’un petit projet Python :
mon_projet/
── .venv/
── [Link]
── [Link]
└── [Link]