Skip to content

Poésie en Python (1)

23 juin 2011

Python est un langage très expressif.
Python permet des styles variés de programmation (procédural, objet, fonctionnel).
Python est livré avec de nombreuses bibliothèques qui simplifie la vie au quotidien.
Python est… « Si c’est si puissant, tu pourrais écrire de la poésie en Python ? » La demande est plutôt inattendue mais ce n’est pas une excuse pour se défiler !

Les contraintes connues sont :

  • un style poétique
  • du code syntaxiquement valide

Pour réaliser le plus simplement l’objectif, un haïku semble tout indiqué.

Résumons les principales spécifications indiquées par wikipedia concernant les haïkus :

  • trois lignes
  • une référence à la nature ou à une saison (règle du kigo)
  • peu de conjugaison ou d’article
  • la dernière ligne doit être une sorte de chute
  • il n’y a de rimes

Avec ces contraintes en tête et environ une demi-heure d’acharnement, j’ai écrit trois haïkus (présentés dans l’ordre de leur création). J’y ajoute quelques commentaires pour chacun, on n’est jamais aussi bien servi que par soi-même…

("""au clair de lune,
tous deux enlacés""")
lambda : "amoureux anonymes"

Ils sont enlacés, avec une représentation grâce aux parenthèses du n-uplet (tuple). La dernière ligne fait référence aux deux personnes enlacées ; elles sont « anonymes » qui est le retour d’un fonction lambda (aussi appelée fonction anonyme).

def _(ocean="déchainé"):
    """écume jusqu'à l'horizon, """
    _("et pour l'éternité")

Ici, on définit une fonction appelée « _ ». La deuxième ligne est une docstring (la documentation est prévue pour être insérée dans le code par Python lui-même). Enfin, la première et dernière instruction de la fonction s’appelle elle-même. On a donc une fonction récursive qui fait valoir « océan » « pour l’éternité ». En réalité, c’est un peu de la publicité mensongère car si cette fonction est exécutée, l’interpréteur Python va détecter la récursion et lèvera une exception :

>>> def _(ocean="déchainé"):
>>>     """écume jusqu'à l'horizon, """
>>>     _("et pour l'éternité")
>>> _()
File "", line 3, in _
[...]
File "", line 3, in _
File "", line 3, in _
RuntimeError: maximum recursion depth exceeded

C’est justement fait pour éviter une récursion infinie qui ferait planter l’interpréteur. Là il s’arrête tout seul, comme un grand. Il est possible de connaître le nombre de récursion acceptée grâce à la fonction sys.getrecursionlimit. Il est aussi possible de modifier cette valeur avec sys.setrecursionlimit.

{"la nuit survient":
"une chouette s'éveille",
3: "souris pleurent."}

On utilise un dictionnaire dont les deux clefs de type différent. C’est relativement joli mais ça me semble être le plus faible des trois. Je me suis arrêté là et préféré soumettre le résultat à la sagacité du jury.

Le jury est d’un enthousiasme assez relatif car les haïkus ne font rien donc alors qu’un programme est prévu pour faire quelque chose. Cette demande implicite du client n’était pas prévue.:-/ Après recueil du besoin auprès du jury, la contrainte est définie comme « le programme doit faire quelque chose en rapport avec la poésie ».

Résoudre cette nouvelle contrainte dans un haïku me semblant trop difficile, il fallait passer par un texte plus long donc de la poésie classique. Le thème est un amour déçu – sujet très bateau donc adapté :

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import os

_ = ("où souhaiterais-tu que nous allions",
    "si jamais nous avions encore un avenir?",
    ".je ne veux pas que nous nous reperdions;",
    "reconstruisons ensemble de nouveaux souvenirs.",

    "en me rappellant de toi,",
    "mes yeux se remplissent de larmes.",
    "oubliés les causes, les pourquois",
    "voulais-tu que je subisse un tel blâme?",

    "ennamourés tous les deux",
    "(juste nous, le reste du monde",
    "_disparu_ à nos yeux)",
    "_mes espoirs_ s'effondrent.",

    "furtivement, tu t'éclipses.",
    "insensible lorsque tu me quittes à",
    "la douleur dans mes synapses",
    "et je sais bien que je ne te reverrai pas.",

    "_ma vie_ devenue bien trop grande",
    "_sans toi_ (juste remplie de pleurs",
    ") n'est plus rien que des cendres."
    )

ute = "".join([v[0] for v in _])

"Ma décision est prise: une fin "
"Rapide plutôt qu'une longue chute."
"J'aurai assez de courage pour que je m";exec(ute)

Je vous laisse réfléchir à ce que fait la poésie ; commentaires, explications et réaction du jury dans un prochain article.

(à suivre…)

From → Python

4 commentaires
  1. public class PythonCEtBeau {
    public static void main(String[] args) {
    System.out.println(« Les ronces se fannent »);
    System.out.println(« Python est beau »);
    System.out.println(« Bravo Stéphane »);
    }
    }

    Exercice : qu’affiche ce code ? Attention ! Il y a un piège !

  2. Oh mais alors que voilà le deuxième effet kiss-cool !
    Mission Impossible n’aurait pas fait mieux.
    C’est encore plus beau comme ça.

  3. Je me suis prêté au jeu:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import os
    
    _ = ("Le printemps vient après l'hiver",
    	 "après tout ce blanc vient le vert",
    	 " la grive insouciante",
    	 "Pour qu’elle sache chanter",
    	 "ouvre son coeur et écoute l'hirondelle",
    	 "entends-tu mon cri",
    	 "s'écrie-t-elle",
    	 "intense et voluptueux ?",
    	 "sans doute répond la dernière",
    	 " Il n'y a bête ni oiseau qui",
    	 "exprime aussi bien l'arrivée du printemps.",
    	 "sacré saison n'est-ce pas?",
    	 "toi aussi tu es intrigante",
    	 " regarde toi sur cette",
    	 "branche, frêle et fière",
    	 "entre terre et ciel",
    	 "là où le vent s'entretient",
    	 "là ou la pluie te caresse",
    	 "ecoute la saison qui approche",
    	 )
    		
    emps = "".join([v[0] for v in _])
    
    "Ma décision est prise"
    "Mon choix est fait"
    "Ma saison préférée est vraiment le ";print(emps)
    

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :