EXERCICE NEUF
Demander une information depuis la ligne de commande, pour filtrer les informations et ne garder que celle dont le numero_ligne est supérieur au numero_ligne_initial indiqué par l’utilisateur.
Pour demander une variable, voici la commande
numero_ligne_initial = input('Numéro de ligne initial: ') numero_ligne_initial = int(numero_ligne_initial)
Normalement votre console va contenir ce message, avec le curseur pour attendre que vous indiquiez à partir de quel ligne on va traiter l’information
Numéro de ligne initial: _
Filtrer les informations à partir d’un numéro de ligne ->
numero_ligne_initial = input('Numéro de ligne initial: ') numero_ligne_initial = int(numero_ligne_initial) with open("traitement_fichier.txt", "r") as fichier: contenu = fichier.readlines() numero_ligne = 0 for ligne in contenu: ligne = ligne.rstrip("\n") data = ligne.split(";") if numero_ligne > 0: if numero_ligne == numero_ligne_initial: tzero = int(data[0]) if numero_ligne >= numero_ligne_initial: deltaTemps = int(data[0]) - tzero # le tzero est recaluler à chaque fois après utilisation par le deltaTemps tzero = int(data[0]) print(str(numero_ligne) + "," + str(deltaTemps) + "," + data[3]) numero_ligne = numero_ligne + 1 fichier.close()
HUITIEME TRUC
Les bibliothèques additionnelles sont très importantes dans python. Par défaut, python ne charge pas toutes les bibliothèques car cela prendrais trop de temps, cela chargerais en mémoire trop d’informations et même il y a risque d’incompatibilités entre certaines bibliothèques. Donc on charge que ce que l’on a besoin et on les importes individuellement.
Par exemple pour faire un graphisme, la bibliothèque que je propose est matplotlib.
Pour l’installer, il faut soit appeler en ligne de commande le logiciel pip par exemple via la commande du système d’exploitation (terminal sous MacOs, cmd sous Windows :
pip install requests
ou on trouve aussi la commande exprimée comme ceci:
python -m pip install <nom de la bibliothèque>
Ce que je conseille sinon c’est ce petit programme python qui exécute pip (qui est développé en python), à exécuté dans l’interpreteur python:
Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>import pip >>>pip.main(['list']) >>>pip.main(['install','<nom de la bibliothèque>'])
Mais ce qui est vraiment pratique avec PyCharm c’est que l’on peut faire via l’IDE tout cela:
Allez sur le Menu File > Settings…
NOTA: sous Mac Os le menu settings est déplacé dans le menu le plus à gauche portant le nom de l’application soit ici PyCharm > Settings…
Choisissez « Project: <votre projet> » puis « Project Interpreteur » et complètement à droite le bouton « + » puis vous pouvez chercher une bibliothèque (un package en VO) par exemple « matplotlib » pour l’installer.
Une fois l’installation terminé, on peut constater que matplotlib n’a pas été installé tout seul mais des bibliothèques additionnelles ont été aussi installé pour le faire fonctionner:
On peut constater que la bibliothèque numpy qui est très utile pour le calcul scientifique est aussi installé car elle est nécessaire à matplotlib.
NEUVIÈME TRUC
Pour l’utilisation de matplotlib et numpy pour faire une figure et des calculs, il faut en premier lieu importer les bibliothèques. Pourquoi indiquer dans un programme ce que l’on veut importer précisément, on pourrait penser que python va charger toutes les bibliothèques que l’on a installer, oui mais dans ce cas là on va avoir un long temps de chargement avant que notre programme ne s’exécute.
Pour importer l’objet qui gère dans la bibliothèque matplotlib l’objet qui gère les diagrammes, on peut écrire ceci:
from matplotlib import pyplot
Mais on trouve la version plus abrégé suivante:
import matplotlib.pyplot
Sauf qu’après on se retrouve à devoir faire préfixer toutes les fonctions de cet objet, par exemple ici la fonction figure() par le nom de la bibliothèque + le nom de l’objet:
matplotlib.pyplot.figure()
Donc on peut faire un alias (le mot après as) pour remplacer le préfixe par quelquechose de plus court
import matplotlib.pyplot as plt
et du coup l’appel se fait avec la version écourtée:
plt.figure()
Par exemple pour numpy la bibliothèque de calcul scientifique, son alias est souvent np.
Mais revenons à ce que nous avons besoin d’importer pour faire une courbe :
import matplotlib import pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D as ax3
Voici un petit morceau de programme pour tracer une courbe simple:
donnees = [18,22,4,15,15] fig = plt.figure() ax = fig.gca() ax.plot( donnees , label='parametric curve') plt.show()
Essayer d’afficher à l’écran cette courbe et modifier les données pour construire un autre exemple.
On peut faire une courbe avec deux dimensions :
donneesX = [1,2,3,15,18] donneesY = [18,22,4,15,15] fig = plt.figure() ax = fig.gca() ax.plot( donneesX, donneesY , label='parametric curve') plt.show()
EXERCICE DIX
Cette courbe est le début du vol du planeur enregistré par le GPS d’un smartphone.
Essayons de construire un programme pour l’afficher avec les données du fichier traitement_fichier.txt.
En premier lieu, importer matplotlib et numpy. Ensuite il faut créer trois tableaux pour stocker les informations:
#initialisation des tableaux de données longitude = [] latitude = [] altitude = []
Puis après avoir passé la première ligne du fichier traitement_fichier.txt qui contient les entête des colonnes. Nous pouvons ajouter les valeurs lu comme str en valeur de type float (nombre à virgule) via ces lignes:
#construction des tableaux de données latitude.append(float(data[1])) longitude.append(float(data[2])) altitude.append(float(data[3]))
Bien sur éviter de lire la colonne data[0] qui contient les timestamps peut utile pour ce diagramme.
A la fin de notre programme après avoir bien construit les 2 tableaux de données voici le code pour afficher le diagramme:
#dessin de la figure fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.plot(longitude, latitude, altitude, label='parametric curve') # Ajouter des labels aux axes ax.set_xlabel('longitude') ax.set_ylabel('lattitude') ax.set_ylabel('altitude') plt.show()
A vous de jouer.
Affichage des données longitude, latitude, altitude ->
from matplotlib import pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D as ax3 #initialisation des tableaux de données longitude = [] latitude = [] altitude = [] with open("traitement_fichier.txt", "r") as fichier: contenu = fichier.readlines() numero_ligne = 0 for ligne in contenu: ligne = ligne.rstrip("\n") data = ligne.split(";") if numero_ligne != 0: #construction des tableaux de données latitude.append(float(data[1])) longitude.append(float(data[2])) altitude.append(float(data[3])) # Ne pas oublier d'incrémenté le numéro de ligne numero_ligne = numero_ligne + 1 fichier.close() #dessin de la figure fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # Tracer les points ax.plot(longitude, latitude, altitude) # Ajouter des labels aux axes ax.set_xlabel('longitude') ax.set_ylabel('lattitude') ax.set_ylabel('altitude') # Afficher le graphique plt.show()
DIXIÈME TRUC
Si vous ne codez pas, tout cela ne va pas vraiment être utile.
Mettez des commentaires pour expliquer les morceaux du code.
Indiquez clairement ce que fait une variable, numero_ligne ou numeroLigne.
Faites des fichiers intermédiaires pour pouvoir rejouer l’intégralité ou une partie du processus.
Utilisez le débogage pour tracer l’enchainement du code et l’état des variables.
Installer pyinstaller avec la commande suivante :
pip install -U pyinstaller
Et vous pouvez ensuite créer un exécutable avec la commande suivante :
c:/Python311/Scripts/pyinstaller.exe --onefile ProjetPython\main.py -n projet.exe
L’exécutable se trouve alors dans le dossier dist/
Quatrième partie de la formation ⇒