Information

Author(s) Tanguy De Bels
Deadline No deadline
Submission limit No limitation

Sign in

[Q4] Message caché dans un texte

Un acrostiche est un jeu littéraire qui consiste à écrire un poème dont on peut lire un mot formé par les lettres initiales des vers. Ce mot est souvent le nom de l’auteur, le nom de celui à qui on dédie le poème ou un mot en rapport avec le titre du poème. Voici un exemple d’un tel poème en anglais, rédigé par l’écrivain Edgar Allan Poe :

Elizabeth it is in vain you say.
'Love not'-thou sayest it in so sweet a way:
In vain those words from thee or L.E.L.
Zantippe's talents had enforced so well:
Ah! if that language from thy heart arise,
Breath it less gently forth-and veil thine eyes.
Endymion, recollect, when Luna tried
To cure his love-was cured of all beside-
His follie-pride-and passion-for he died.

Définissez une fonction Python acrostiche(file_name) qui lit un fichier texte de nom file_name contenant un acrostiche et qui retourne le message caché dans le texte, en prenant la première lettre sur chaque ligne. Si une ligne ne commence pas par une lettre mais par un caractère blanc ou un autre caractère (comme ", ', ou un chiffre), on cherche le premier caractère sur cette ligne qui est une lettre. Les lignes vides ou ne contenant aucune lettre seront simplement ignorées. Si le fichier n'existe pas ou ne peut pas être lu, la fonction retourne -1.

Pour un fichier file_name contenant le poème ci-dessus, acrostiche(file_name) retournera la chaîne de caractères "ELIZABETH".

Remarque:

  • La méthode str.isalpha() vérifie si la chaîne str est constituée uniquement de caractères alphabétiques.

La fonction demandée est la suivante:

def acrostiche(file_name):
    """
    @pre:  file_name est le nom d'un fichier de texte
    @post: Retourne une chaîne de caractères contenant la première lettre
          de chaque ligne dans le fichier de texte,
          pour les lignes qui contiennent au moins un caractère.
          Retourne -1 en cas d'erreur d'accès au fichier.
    """
    # à compléter

Si nécessaire vous pouvez aussi définir des fonctions auxiliaires.


Question 1: acrostiche
Question 2: Zone de test

Insérez votre code de test optionnel ci-dessous. Vous pouvez utiliser print pour tester votre programme. Votre code de test sera exécuté à la suite de la définition de votre méthode acrostiche et d’éventuelles fonctions auxiliaires ci-dessus (il ne faut pas les recopier ici).

Vous pouvez générer un fichier de test portant le nom test.txt avec la fonction create_file(lines), lines étant une liste des lignes du fichier.

Exemple: