0% ont trouvé ce document utile (0 vote)
12 vues6 pages

TP Python PDF

Le document présente un TP sur les bases de Python, incluant des exercices sur les types de données, les structures conditionnelles, les boucles et la manipulation de fichiers. Il aborde également un mini-projet d'automatisation pour analyser des données expérimentales, générer des rapports en PDF et envoyer des emails. Les livrables incluent le code source, les fichiers de données et la documentation du processus.

Transféré par

roumaissa akacha
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)
12 vues6 pages

TP Python PDF

Le document présente un TP sur les bases de Python, incluant des exercices sur les types de données, les structures conditionnelles, les boucles et la manipulation de fichiers. Il aborde également un mini-projet d'automatisation pour analyser des données expérimentales, générer des rapports en PDF et envoyer des emails. Les livrables incluent le code source, les fichiers de données et la documentation du processus.

Transféré par

roumaissa akacha
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

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

Vous aimerez peut-être aussi