TP 5 - Free

publicité
PTSI2 – 2016/2017 – Info
Lycée La Martinière-Monplaisir – Lyon
TP 5. Manipulation de fichiers avec Python.
Créez, comme d’habitude, un sous-répertoire TP05 dans votre répertoire personnel Python ou Info.
Allez sur le site delphine.sembely.free.fr/tp.html et téléchargez les fichiers suivants dans votre
sous-répertoire TP05 :
toto.txt,
premiers-1000.csv,
voc_anglais.csv, run.csv, Vers_Queneau.txt.
CONSEILS
H Avant de commencer un exercice :
Ouvrir les fichiers correspondants (.txt et .csv), dans un tableur tel que Excel ou LibreOffice
(on peut aussi prendre un éditeur de texte pour les .txt).
Ensuite, bien, fermer les fichiers, sinon le programme python risque de donner des erreurs.
H Pour voir à quoi ressemble chaque ligne (en particulier, pour repérer les éventuels \t ou \n
invisibles dans un tableur) :
Si on a récupéré les lignes dans une variable les_lignes avec la syntaxe vue en cours (mode
lecture, méthode readlines), on pourra faire print(les_lignes).
Si le résultat est trop long, faire par exemple print(les_lignes[:3]) (slicing) pour avoir la
sous-liste des 3 premières lignes.
Exercice 1. 1◦ ) Écrire un script permettant d’afficher chaque ligne du fichier toto.txt, accompagnée du nombre de caractères de la ligne en question.
2◦ ) Vérifiez en comptant les caractères à la main. Modifier si nécessaire votre script pour que le
résultat devienne correct.
Exercice 2. 1) À l’aide de premiers-1000.csv, calculer la somme des 1000 premiers nombres premiers.
2) Créer un fichier carre_aleatoire.csv contenant un carré de taille 10 × 10 rempli de chiffres
aléatoires. On se servira de la fonction randint(0,9) de la bibliothèque random, qui renvoie un nombre
aléatoire entre 0 et 9.
Exercice 3. Le fichier voc_anglais.csv contient deux colonnes : dans la première se trouvent des
mots ou expressions en français, et dans la deuxième se trouve leur traduction en anglais.
1◦ ) Récupérer les mots en français et les stocker dans une liste les_mots_fr ; stocker de même les
mots en anglais dans une liste les_mots_ang.
2◦ ) Un étudiant souhaite s’entraîner chaque soir sur cette liste de vocabulaire. Écrire un programme
qui fait les actions suivantes :
— Afficher le nombre de mots disponibles et demander à l’étudiant de choisir un nombre k de
mots à réviser.
— Créer une liste les_indices contenant k indices distincts de mots à tester ; on s’aidera de la
fonction sample de la bibliothèque random.
— Pour chacun des k mots choisis, afficher le mot en français, et demander à l’étudiant de taper
sa réponse ; on affichera alors s’il s’est trompé ou non, et la bonne réponse si nécessaire.
— On pourra terminer par un affichage du nombre de bonnes réponses.
Exercice 4. Ouvrir dans un tableau le fichier run.csv pour découvrir son contenu (résultats du
marathon de Lyon 2012).
Écrire une suite d’instructions qui lit ce fichier et qui détermine le nombre de femmes et le nombre
d’hommes ayant participé.
1
Exercice 5. Au marathon de Lyon 2012, les candidats ont mis entre 2h28 et 5h41 à arriver.
Créer des fichiers pour chaque tranche horaire, regroupant les noms et prénoms des femmes ayant
terminé dans cette tranche horaire (entre 2h et 3h ; entre 3h et 4h ; ...), ainsi que leur temps de course.
Exercice 6. Cent mille milliards de poèmes est un livre de "poésie combinatoire" écrit par Raymond
Queneau en 1961, permettant au lecteur de composer lui-même des sonnets.
Pour chacun des 14 vers, Queneau propose 10 versions.
Concrètement, le livre est composé de 10 pages chacune découpées en 14 bandelettes pour les 14 vers. Par exemple les dix
bandelettes du haut, qui sont les unes au-dessus des autres,
forment les dix vers no 1 possibles.
Le lecteur choisit les différents vers en tournant ces bandelettes.
Cela donne au total
poèmes possibles (cent
1
mille milliards) .
Ouvrir le fichier Vers_Queneau.txt qui contient les 10 × 14 vers proposés par Queneau. On souhaite
utiliser ce fichier pour créer un poème aléatoire sauvegardé dans un fichier texte.
1◦ ) Créer une matrice, c’est-à-dire une liste de listes, contenant les données : le premier élément sera
la liste des vers no 1 possibles, le deuxième sera la liste des vers no 2 possibles...
2◦ ) Se servir de cette matrice pour écrire une fonction poeme_aleatoire, qui prend pour argument une chaîne de caractères nom_du_poeme, et qui écrit un poème aléatoire dans le fichier
nom_du_poeme.txt créé à cette occasion.
On se servira de la bibliothèque random, qui comporte par exemple la fonction randint permettant de tirer un nombre entier aléatoire entre deux bornes.
1. Comme le fait remarquer Raymond Queneau, "en comptant 45 secondes pour lire un sonnet et 15 secondes pour
changer les volets, à 8 heures par jour, 200 jours par an, on a pour plus de dix millions de siècles de lecture".
2
Téléchargement