Vous êtes sur la page 1sur 4

TP Programmation Orientée Objet Python

Polytech Lyon - gbm3A

Exercice 7 - Récupérer une ressource sur internet


Dans un fichier geturl.py importez le module urllib.request
Tentez d’obtenir les ressources internet suivantes.
• https://www.rfc-editor.org/rfc/rfc1738.txt
• https://perdu.com/
• https://www.polytech-reseau.org/page-sitemap.xml
• https://mdn.github.io/learning-area/javascript/oojs/json/superheroes.json
Exemple d’implémentation pour la ressource 2.
import requests

response=requests.get('https://perdu.com')
print(response.text)

Exercice 8 - Arguments en cli


Découverte
Créez un fichier arguments_cli.py.
Importez le module sys et affichez sys.argv
Que se passe-t-il quand vous invoquez le programme de la manière suivante ?
# python arguments_cli.py
Et avec ?
# python arguments_cli.py une suite d arguments
Et là ?
# python arguments_cli.py "une autre suite d'arguments"
Autrement dit, combien avez-vous d’éléments dans la liste ? À quoi correspondent-
ils ?
Maintenant vous pouvez donc faire des programmes qui peuvent interagir avec
l’extérieur par une méthode plus subtile que input qui est faite pour interagir
avec un utilisateur.

Mise en Pratique
Écrivez un programme qui affiche systématiquement la liste des arguments
numérotés et qui ajoute la phrase Ça fait beaucoup là. si il y plus de cinq

1
arguments passés au programme.
Attention, le premier élément de la liste sys.args n’est pas un argument.
Si il n’y a pas d’arguments, affichez uniquement La liste d'arguments est
vide et quittez avec le statut 1.
# python mes_args.py
La liste d'aguments est vide

# python mes_args.py un deux


1: un
2: deux

# python mes_args.py un deux 3 quatre V "S I X"


1: un
2: deux
3: 3
4: quatre
5: V
6: S I X
Ça fait beaucoup là.

Exercice 9 - Ouvrir un fichier


Écrivez un programme qui ouvre en lecture seule votre fichier gbm3A.py. (Celui
qui contient la classe vecteur).
Pour vous simplifier la tache faites en une copie dans le même dossier
que votre programme
Itérer sur les lignes du fichier, et n’afficher que celle qui contiennent la chaine de
caractères def.
Exemple d’ouverture de fichier
with open("gbm3A.py", "r") as f:
print(f.realines()[2][4])
f.close()
Cet exemple ouvre un fichier et affiche le 5e caractère de la 3e ligne du fichier.
N’oubliez pas de fermer le fichier en partant !
Essayer de manipuler f.read() et f.readlines().

Exercice 10 - Le format .csv


Téléchargez la ressource biostats.csv sur le site : https://people.sc.fsu.edu/~jburkardt/data/csv/csv.html
Ouvrez le dans votre éditeur de texte préféré.
Constatez sa structure.

2
Un fichier .csv contient des séparateur entre les données.
Ici ce sont des virgules pour les colonnes et des saut de lignes pour les lignes.
Les données qui le nécessitent sont encadrées par des guillemets doubles.
Ce n’est pas toujours le cas. Il faut bien repérer les séparateurs avant de
manipuler ce genre de fichiers.
Exemple d’ouverture de .csv
>>> import csv
>>> with open('biostats.csv', newline='') as csvfile:
... data = csv.reader(csvfile, delimiter=',', quotechar='"')
... for row in data:
... print(', '.join(row))
Vous pouvez convertir votre .csv ainsi lu en une liste à deux dimension.
list(data)
Écrivez un programme qui classe les données de biostats par age. Puis par
taille dans du plus grand au plus petit. Vous pouvez passer par la fonction
sort().
Allez voir la page https://www.programiz.com/python-programming/methods/list/sort
pour vous aider.

Exercice 11 - Générer des listes et des dictionnaires en


compréhension
Tentez de manipuler les données de biostats avec la syntaxe des list
comprehensions.
Écrivez une génération de liste qui permet d’obtenir uniquement les données des
femmes.
Puis écrivez une génération de liste qui permet d’obtenir les données des
personnes faisant plus de 69 pouces inclus.

Exercice 12 - OpenData - All together now


Écrire un programme en cli (Command Line Interface).
Il devra permettre d’interroger les données sidep sur l’évolution du Covid.
Votre travail se basera sur le jeu de données sp-com-7j-cage65-opendata-2023-06-30-16h28.csv
Il est disponible sur https://data.gouv.fr/fr/datasets/r/f2c020ea-807a-44a4-b4f2-
f7391eb7e478
Votre programme devra :
• Récupérer les données sur internet à chaque lancement.
Nous simulons l’époque où ces données étaient mises à jour continuellement
dans le même fichier.

3
• Permettre de connaitre la commune ayant le plus haut taux d’incidence
pour une période donnée (comportement par défaut),
Si la date est omise c’est la date courante qui s’applique. Si plusieurs
communes ont la même valeur, vous fournirez le résulat sous forme des 10
premières communes triée par ordre alphabétique, séparée par des sauts
de lignes.
• Permettre de connaitre la commune ayant le plus faible taux d’incidence
pour une période donnée,
Même consignes que précédement en cas de multiples communes ayant le
même résultat.
• Permettre d’obtenir les données d’une commune pour une période donnée,
Vous ferrez apparaitre le résultat sous la forme clé: valeur, en respectant
un saut de ligne entre chaque paire.
• Permettre d’obtenir un taux d’incidence pour un département donné sur
une période donnée,
• La commune devra être affichée par son nom (il existe certainement de
l’open data pour cela ;) )
Ces données étant non évolutives, n’hésitez pas à les stocker sur l’ordinateur
plutôt que de les recharger sans cesse.
• Le programme devra proposer une aide, précisant la syntaxe.
Cette aide doit être affiché en cas de ligne de commande imparsable ou via
les options -h ou –help.
Vous n’utiliserez pas de librairies hors des librairies standards. Autrement dit,
vous n’installerez pas de modules par pip.
Vous devrez utiliser les listes en compréhension.
Vous êtes libre du nom des options.
Lignes de commandes possibles :
$ gbm3A_covid.py --date 2022-10-10 --dep 69
$ gbm3A_covid.py --min
$ gbm3A_covid.py --max --date 2022-12-31

Pour aller plus loin :


Créez une interface graphique qui vous permettra de sélectionner les périodes de
dates, les communes ou département.

Vous aimerez peut-être aussi