Maintenant que vous avez appris différentes techniques d'alignement, appliquons-les pour créer des tableaux bien formatés. Les tableaux sont un moyen courant d'afficher des données structurées de manière lisible, et un alignement correct est crucial pour présenter efficacement les informations tabulaires.
Tableau simple avec colonnes de largeur fixe
Commençons par créer un tableau simple avec des colonnes de largeur fixe.
- Créez un nouveau fichier nommé
simple_table.py
dans le répertoire /home/labex/project
:
## simple_table.py
print("Tableau simple à largeur fixe")
print("-" * 50)
## Définir certaines données
header = ["Nom", "Âge", "Ville", "Profession"]
data = [
["John Smith", 34, "New York", "Médecin"],
["Sarah Johnson", 28, "San Francisco", "Ingénieur"],
["Michael Brown", 42, "Chicago", "Enseignant"],
["Emily Davis", 31, "Boston", "Scientifique"]
]
## Afficher l'en-tête
print(f"{header[0]:<20} {header[1]:<8} {header[2]:<15} {header[3]:<15}")
print("-" * 60)
## Afficher les lignes
for row in data:
print(f"{row[0]:<20} {row[1]:<8} {row[2]:<15} {row[3]:<15}")
- Enregistrez le fichier et exécutez-le :
python3 ~/project/simple_table.py
- Vous devriez voir un tableau bien formaté comme celui-ci :
Tableau simple à largeur fixe
--------------------------------------------------
Nom Âge Ville Profession
------------------------------------------------------------
John Smith 34 New York Médecin
Sarah Johnson 28 San Francisco Ingénieur
Michael Brown 42 Chicago Enseignant
Emily Davis 31 Boston Scientifique
Tableau dynamique avec différents types d'alignement
Différents types de données sont souvent mieux présentés avec différents styles d'alignement. Par exemple, le texte est souvent aligné à gauche, tandis que les nombres sont alignés à droite. Créons un tableau plus sophistiqué avec un alignement mixte.
- Créez un nouveau fichier nommé
dynamic_table.py
dans le répertoire /home/labex/project
:
## dynamic_table.py
print("Tableau dynamique avec alignement mixte")
print("-" * 50)
## Définir certaines données
header = ["Produit", "Prix", "Quantité", "Total"]
products = [
["Ordinateur portable", 1299.99, 3, 3899.97],
["Souris", 24.50, 10, 245.00],
["Moniteur", 349.95, 2, 699.90],
["Clavier", 49.99, 5, 249.95],
["Casque", 89.95, 4, 359.80]
]
## Calculer les largeurs des colonnes en fonction du contenu
col_widths = [
max(len(str(header[0])), max(len(str(row[0])) for row in products)) + 2,
max(len(str(header[1])), max(len(f"${row[1]:.2f}") for row in products)) + 2,
max(len(str(header[2])), max(len(str(row[2])) for row in products)) + 2,
max(len(str(header[3])), max(len(f"${row[3]:.2f}") for row in products)) + 2
]
## Afficher l'en-tête
print(f"{header[0]:<{col_widths[0]}}"
f"{header[1]:>{col_widths[1]}}"
f"{header[2]:>{col_widths[2]}}"
f"{header[3]:>{col_widths[3]}}")
print("-" * sum(col_widths))
## Afficher les lignes avec l'alignement approprié
for product in products:
print(f"{product[0]:<{col_widths[0]}}",
f"${product[1]:.2f}".rjust(col_widths[1]),
f"{product[2]}".rjust(col_widths[2]),
f"${product[3]:.2f}".rjust(col_widths[3]))
## Afficher le résumé
total_quantity = sum(product[2] for product in products)
total_cost = sum(product[3] for product in products)
print("-" * sum(col_widths))
print(f"{'TOTAL':<{col_widths[0]}}",
f"".rjust(col_widths[1]),
f"{total_quantity}".rjust(col_widths[2]),
f"${total_cost:.2f}".rjust(col_widths[3]))
... (le reste du code est identique à l'original)