Cours

Les transparents du troisième cours sont disponibles ici. top

Exercice 1 - Cent mille milliards de poèmes

Cent mille milliards de poèmes, est une œuvre de poésie combinatoire de Raymond Queneau, publiée en 1961. Le livre est composé de dix feuilles, chacune séparée en quatorze bandes horizontales, chaque bande portant sur son recto un vers. Le lecteur peut donc, en tournant les bandes horizontales comme des pages, choisir pour chaque vers une des dix versions proposées par Queneau. Les dix versions de chaque vers ont la même scansion et la même rime, ce qui assure que chaque sonnet ainsi assemblé est régulier dans sa forme.

Supposons que l'on dispose d'un fichier vers.txt qui contient une séquence de 14 groupements de 10 vers séparés par des lignes vides.

  1. Écrire un script Python chargeant le fichier dans une liste associant aux entiers de 0 à 13, la liste des vers de chaque groupement.

  2. Modifier le script pour générer un poème de 14 vers en prenant un vers aléatoirement dans chaque groupement.

    Utiliser pour cela le module random de la bibliothèque standard de Python.

import os
import random

filein  = open('vers.txt','r')
fileout = open('poeme.txt','w')

liste=filein.readlines()  
    # cree une liste contenant chaque ligne de file

for i in range(0,14):
    fileout.write(liste[random.randint(11*i,11*i+9)])
    
fileout.write("\n\t\t\t\t Raymond Queneau")
top

Exercice 2 - Textométrie

  1. Écrire un script qui transforme un fichier texte en un fichier contentant une phrase du fichier par ligne.

  2. filein = open('Texte.txt','r')
    fileout = open('Phrases.txt','w')
    
    texte=filein.read()
    
    ligne=""
    for caractere in texte:
        ligne+=caractere
        if caractere in ['.','!','?','\n']:
            # Ne gere pas les '...', ni les acronymes, etc
            fileout.write(ligne.lstrip(' ' or '\n')+'\n')
            ligne=""
            
    filein.close()
    fileout.close()
    
  3. Écrire un script qui affiche la phrase la plus longue et la plus courte d'un fichier texte.

  4. file = open('Texte.txt','r')
    
    phrasemin=""
    phrasemax=""
    mini=10^5
    maxi=0
    
    texte=file.read()
    
    ligne=""
    for caractere in texte:
        ligne+=caractere
        if caractere in ['.','!','?','\n']:
            # Ne gere pas les '...', ni les acronymes, etc
            if 0 < len(ligne.lstrip(' ' or '\n'))<mini:
                phrasemin=ligne.lstrip(' ')
            if len(ligne.lstrip(' '))>maxi:
                phrasemax=ligne.lstrip(' ')
            ligne=""
            
    file.close()
    print '\n\n'
    print "La phrase la plus longue : \n" + phrasemax
    print "La phrase la plus courte : \n" + phrasemin
    
  5. Écrire un script qui compte le nombre d'occurrences des mots d'un fichier texte
    (rapporter la fréquence de chaque mot ordonné alphabétiquement).

  6. #!/usr/bin/python
    import os
    
    nomfichier = raw_input("Entrer le nom du fichier : ")
    fichierentree=open(nomfichier,'r')
    
    def indexmot(mot,liste):
        for mot_de_la_liste in liste:
            if mot==mot_de_la_liste[0]:
                return liste.index(mot_de_la_liste)
        return False
    
    liste_mots=[]
    nombre_mots=[]
    
    lignelue=' '
    while lignelue!='':
        lignelue=fichierentree.readline()
        ligne=lignelue.split()
        for mot in ligne:
            if indexmot(mot,liste_mots):
                liste_mots[indexmot(mot,liste_mots)][1]+=1
            else:
                liste_mots+=[[mot,1]]
        
    fichierentree.close()
    liste_mots.sort()
    
    for mot in liste_mots:
        print mot[0] +" : "+ `mot[1]`
    
  7. Une concordance donne pour un mot l'ensemble des passages d'un texte (ou d'un ensemble de textes) le contenant.

    Écrire un script qui prend un argument un mot et un fichier texte et retourne toutes les occurences de ce mot dans le document, précédées des trois mots précédents et suivis des trois mots suivants dans le texte.


top