TP 01 : Maîtriser les bases de Python
Structures de contrôle, types, boucles, fonctions et fichiers
Objectif : Apprendre les structures fondamentales de Python et la manipulation de fichiers
1. Initiation aux bases
Exercice 1 : Types de base et saisie utilisateur
Demander le nom, âge et moyenne, puis afficher un message formaté.
nom = input("Entrez votre nom : ")
age = int(input("Entrez votre âge : "))
moyenne = float(input("Entrez votre moyenne générale : "))
print(f"Bonjour {nom}, vous avez {age} ans et votre moyenne est {moyenne:.2f}.")
Exercice 2 : Structure conditionnelle
Déterminer si un étudiant est admis (moyenne ≥ 10).
moyenne = float(input("Entrez votre moyenne : "))
if moyenne >= 10:
print("Admis")
else:
print("Ajourné")
Exercice 3 : Boucles
Calculer la somme des nombres de 1 à n.
n = int(input("Entrez un entier n : "))
somme = sum(range(1, n+1))
print(f"La somme des entiers de 1 à {n} est {somme}")
Exercice 4 : Fonctions
Créer une fonction calculant la factorielle.
def factorielle(n):
resultat = 1
for i in range(1, n+1):
resultat *= i
return resultat
n = int(input("Entrez un nombre : "))
print(f"La factorielle de {n} est {factorielle(n)}")
2. Lire et traiter des fichiers textes
Fichier [Link] :
Ali 12 Sami 15 Lina 8 Sara 11 Omar 14
Programme : Calculer la moyenne et le nombre d'admis.
with open("[Link]", "r", encoding="utf-8") as f:
lignes = [Link]()
notes = [float([Link]()[1]) for ligne in lignes]
moyenne = sum(notes) / len(notes)
admis = len([n for n in notes if n >= 10])
print(f"Moyenne générale : {moyenne:.2f}")
print(f"Nombre d'étudiants admis : {admis}")
3. Générer des rapports (Excel & PDF)
a) Rapport Excel
from openpyxl import Workbook
data = [("Nom", "Note"),
("Ali", 12), ("Sami", 15),
("Lina", 8), ("Sara", 11)]
wb = Workbook()
ws = [Link]
for row in data:
[Link](row)
[Link]("[Link]")
print("Rapport Excel créé")
b) Rapport PDF
from [Link] import canvas
from [Link] import A4
pdf = [Link]("[Link]",
pagesize=A4)
[Link]("Helvetica-Bold", 14)
[Link](100, 750,
"Rapport de notes")
[Link]("Helvetica", 12)
[Link](100, 700,
f"Moyenne : 11.0")
[Link]()
Note : Installer les bibliothèques : pip install openpyxl reportlab pandas matplotlib
TP 02 : Mini-projet d'automatisation
Analyse de données, statistiques, graphiques et envoi par email
Objectif : Créer un script complet d'automatisation pour analyser des données expérimentales et envoyer un rapport
par email
Cahier des charges
1. Charger des données depuis un fichier CSV
2. Calculer des statistiques (moyenne, écart-type)
3. Générer un graphique d'évolution
4. Créer un rapport PDF avec les résultats
5. Envoyer automatiquement le rapport par email
1. Préparation des données
Fichier [Link] :
Temps,Pression 1,10.2 2,10.5 3,10.3 4,10.8 5,11.0
2. Script complet d'automatisation
import pandas as pd
import [Link] as plt
from [Link] import A4
from [Link] import canvas
import smtplib
from [Link] import EmailMessage
# 1. Charger les données
df = pd.read_csv("[Link]")
print("Données chargées :")
print(df)
# 2. Calculer les statistiques
moyenne = df["Pression"].mean()
ecart_type = df["Pression"].std()
print(f"\nMoyenne : {moyenne:.2f} bar")
print(f"Écart-type : {ecart_type:.2f} bar")
# Interprétation
if ecart_type < 0.3:
interpretation = "Mesures très stables"
elif ecart_type < 0.5:
interpretation = "Mesures acceptables"
else:
interpretation = "Forte variabilité détectée"
# 3. Générer le graphique
[Link](figsize=(8, 5))
[Link](df["Temps"], df["Pression"], marker="o", linewidth=2, color="#3498db")
[Link]("Évolution de la pression en fonction du temps", fontsize=14, fontweight='bold')
[Link]("Temps (s)")
[Link]("Pression (bar)")
[Link](True, alpha=0.3)
[Link]("[Link]", dpi=150, bbox_inches='tight')
[Link]()
print("\nGraphique généré : [Link]")
# 4. Créer le rapport PDF
pdf = [Link]("rapport_mesures.pdf", pagesize=A4)
[Link]("Helvetica-Bold", 16)
[Link](100, 780, "Rapport d'analyse des mesures expérimentales")
[Link]("Helvetica", 12)
[Link](100, 740, f"Moyenne des pressions : {moyenne:.2f} bar")
[Link](100, 720, f"Écart-type : {ecart_type:.2f} bar")
[Link](100, 700, f"Interprétation : {interpretation}")
[Link](100, 430, "Graphique d'évolution :")
[Link]("[Link]", 80, 150, width=450, height=270)
[Link]()
print("Rapport PDF généré : rapport_mesures.pdf")
# 5. Envoyer par email
def envoyer_email(destinataire):
msg = EmailMessage()
msg["Subject"] = "Rapport automatisé - Analyse des mesures"
msg["From"] = "votre_email@[Link]"
msg["To"] = destinataire
msg.set_content("Bonjour,\n\nVeuillez trouver ci-joint le rapport d'analyse "
"des mesures expérimentales.\n\nCordialement,\nSystème automatisé")
# Attacher le PDF
with open("rapport_mesures.pdf", "rb") as f:
file_data = [Link]()
msg.add_attachment(file_data, maintype="application",
subtype="pdf", filename="rapport_mesures.pdf")
# Envoyer via SMTP Gmail
try:
with smtplib.SMTP_SSL("[Link]", 465) as smtp:
[Link]("votre_email@[Link]", "mot_de_passe_application")
smtp.send_message(msg)
print(f"\n✓ Email envoyé avec succès à {destinataire}")
except Exception as e:
print(f"\n✗ Erreur lors de l'envoi : {e}")
# Exécution
envoyer_email("destinataire@[Link]")
Configuration Gmail : Pour utiliser l'envoi d'emails, activez l'authentification à 2 facteurs sur votre compte Gmail,
puis générez un "Mot de passe d'application" dans les paramètres de sécurité Google.
Livrables attendus
Code source Python commenté
Fichier de données ([Link])
Rapport PDF généré automatiquement
Documentation expliquant le processus d'automatisation