{"id":3355,"date":"2020-09-07T11:25:36","date_gmt":"2020-09-07T09:25:36","guid":{"rendered":"https:\/\/www.mathweb.fr\/euclide\/?p=3355"},"modified":"2021-10-26T16:27:25","modified_gmt":"2021-10-26T14:27:25","slug":"le-jeu-du-pendu-en-python","status":"publish","type":"post","link":"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/","title":{"rendered":"Le jeu du pendu en Python"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">J&rsquo;ai fait un ex\u00e9cutable Windows du jeu du pendu r\u00e9alis\u00e9 en Python, que vous pouvez trouver <a href=\"https:\/\/www.mathweb.fr\/euclide\/download\/le-jeu-du-pendu\/\" target=\"_blank\" rel=\"noreferrer noopener\">sur cette page<\/a>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pou celles et ceux qui souhaitent savoir comment r\u00e9aliser un tel jeu, voici la d\u00e9marche que j&rsquo;ai adopt\u00e9e.<\/p>\n\n\n\n<!--more-->\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"192\" height=\"248\" src=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/09\/pendu-1.png\" alt=\"jeu pendu python\" class=\"wp-image-3356\"\/><\/figure><\/div>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_87 counter-hierarchy ez-toc-counter ez-toc-white ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Au menu sur cette page...<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/#Le_jeu_du_pendu_en_Python_le_principe\" >Le jeu du pendu en Python : le principe<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/#Le_jeu_du_pendu_le_script_Python_sans_interface_graphique\" >Le jeu du pendu : le script Python sans interface graphique<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/#Choisir_au_hasard_un_mot_dans_une_liste\" >Choisir au hasard un mot dans une liste<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/#Mettre_des_underscores_a_la_place_des_lettres\" >Mettre des underscores \u00e0 la place des lettres<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/#Saisie_dune_lettre\" >Saisie d&rsquo;une lettre<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/#La_partie_principale\" >La partie principale<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/#Compter_le_nombre_derreurs\" >Compter le nombre d&rsquo;erreurs<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/#Le_script_complet_du_jeu_du_pendu_en_Python\" >Le script complet du jeu du pendu en Python<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/#Interface_graphique\" >Interface graphique<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Le_jeu_du_pendu_en_Python_le_principe\"><\/span>Le jeu du pendu en Python : le principe<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Avant tout, il faut rappeler le principe du jeu. Un mot est choisi au hasard et le joueur doit le deviner en proposant des lettres. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si la lettre propos\u00e9e est pr\u00e9sente dans le mot, elle s&rsquo;affiche aux endroits ad\u00e9quats; sinon, un \u00e9l\u00e9ment du dessin appara\u00eet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il y a 11 \u00e9l\u00e9ments sur le dessin. 4 \u00e9l\u00e9ments de la potence, 1 corde et 6 \u00e9l\u00e9ment du pendu lui-m\u00eame. La personne qui joue ne doit donc pas faire plus de 10 erreurs, la onzi\u00e8me lui \u00e9tant fatale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c0 travers ce principe, on voir alors se dessiner (sans jeu de mots) un semblant de script:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Choisir au hasard un mot dans une liste.<\/li><li>Mettre des underscores \u00e0 la place des lettres.<\/li><li>Tant que le mot n&rsquo;est pas trouv\u00e9 et tant que le nombre d&rsquo;erreurs est inf\u00e9rieur strictement \u00e0 11, demander une lettre.<\/li><li>Si la lettre est dans le mot, l&rsquo;afficher aux bons endroits; sinon, incr\u00e9menter le nombre d&rsquo;erreur d&rsquo;une unit\u00e9 et dessiner un \u00e9l\u00e9ment du dessin.<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Le_jeu_du_pendu_le_script_Python_sans_interface_graphique\"><\/span>Le jeu du pendu : le script Python sans interface graphique<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Il faut bien commencer par quelque chose. J&rsquo;ai toujours commenc\u00e9 mes scripts par leur c\u0153ur, c&rsquo;est-\u00e0-dire par ce qui d\u00e9finit r\u00e9ellement le programme.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Je vais donc suivre les points de l&rsquo;algorithme naturel pr\u00e9sent\u00e9 pr\u00e9c\u00e9demment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour tout ce qui est programme avec interface graphique, j&rsquo;ai l&rsquo;habitude d&rsquo;utiliser la Programmation Orient\u00e9e Objet (POO). Cependant, pour simplifier les choses, je ne vais pas faire \u00e7a dans cette partie non graphique.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Choisir_au_hasard_un_mot_dans_une_liste\"><\/span>Choisir au hasard un mot dans une liste<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Il nous faut une fonction qui retourne un mot en lettres majuscules, pris au hasard dans une liste.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">J&rsquo;ai r\u00e9cup\u00e9r\u00e9 sur la page <a href=\"http:\/\/www.pallier.org\/liste-de-mots-francais.html\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/www.pallier.org\/liste-de-mots-francais.html<\/a>, le fichier texte suivant : <\/p>\n\n\n\n<div class=\"wp-block-file aligncenter\"><a href=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/09\/liste.de_.mots_.francais.frgut_.txt\">liste.de_.mots_.francais.frgut_<\/a><a href=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/09\/liste.de_.mots_.francais.frgut_.txt\" class=\"wp-block-file__button\" download>T\u00e9l\u00e9charger<\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Il contient 336 531 mots du fran\u00e7ais (encod\u00e9s en utf-8) en minuscules. Tous ne sont pas bons \u00e0 prendre. Ceux avec trait d&rsquo;union ou ceux \u00e0 moins de 5 lettres par exemple sont \u00e0 exclure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il y a ici deux fa\u00e7ons de raisonner :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li> une liste de tous les mots qui nous int\u00e9ressent (sans trait d&rsquo;union, avec au moins 5 lettres) est construite;<\/li><li>une ligne du fichier est choisie au hasard et on v\u00e9rifie que le mot correspondant rentre dans nos crit\u00e8res.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Dans le programme que j&rsquo;ai fait, j&rsquo;ai opt\u00e9 pour la premi\u00e8re solution. Cependant, je vais ici vous exposer la seconde, plus rapide.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voici donc une fonction qui retourne un mot au hasard:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from random import choice\nfrom unidecode import unidecode\n\ndef word():\n    f = open('mots.txt', 'r' , encoding = 'utf8')\n    contenu = f.readlines()\n    return unidecode( choice(contenu) ).upper().replace('\\n','')\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Je fais ici appel \u00e0 deux modules :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/docs.python.org\/fr\/3\/library\/random.html\" target=\"_blank\" rel=\"noreferrer noopener\">random<\/a>, et sa fonction <em>choice<\/em> qui retourne pseudo-al\u00e9atoirement un \u00e9l\u00e9ment de la liste <em>contenu<\/em>, qui n&rsquo;est autre que la liste des mots contenus dans le fichier texte;<\/li><li><a href=\"https:\/\/pypi.org\/project\/Unidecode\/\" target=\"_blank\" rel=\"noreferrer noopener\">unidecode<\/a>, et sa fonction \u00e9ponyme qui retourne la cha\u00eene de caract\u00e8res sans accents.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">J&rsquo;utilise ensuite la m\u00e9thode <strong>upper()<\/strong> pour mettre en majuscules.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De plus, chaque ligne du fichier se termine par \u00ab\u00a0\\n\u00a0\u00bb. J&rsquo;ai donc utilis\u00e9 la m\u00e9thode <strong>replace()<\/strong> pour supprimer le \u00ab\u00a0\\n\u00a0\u00bb.<\/p>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p>Si vous souhaitez conserver les accents, comme c&rsquo;est le cas dans mon programme ex\u00e9cutable, il suffit de ne pas \u00f4ter les accents et donc de ne pas utiliser <strong><em>unidecode<\/em><\/strong> dans cette fonction.<\/p><\/blockquote><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Mettre_des_underscores_a_la_place_des_lettres\"><\/span>Mettre des underscores \u00e0 la place des lettres<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">On va ici \u00e9crire une fonction <strong>underscore(mot)<\/strong> retournant une cha\u00eene de caract\u00e8res o\u00f9 les lettres sont remplac\u00e9es par des \u00ab\u00a0_\u00a0\u00bb (des underscores). Pour plus de lisibilit\u00e9, on s\u00e9parera les underscores avec une espace.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">def underscore(mot):\n    r = '_ ' * len( mot )\n    return r[:-1]<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">D\u00e9finie ainsi, la fonction est simple. On r\u00e9p\u00e8te le motif \u00ab\u00a0_ \u00a0\u00bb autant de fois qu&rsquo;il y a de lettres dans le mot. Ne pas oublier l&rsquo;espace \u00e0 la fin du motif.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ensuite, cette cha\u00eene est retourn\u00e9e sans le dernier caract\u00e8re (qui est une espace et qui ne sert \u00e0 rien).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous verrons plus loin que cette fonction devra \u00eatre modifi\u00e9e.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Saisie_dune_lettre\"><\/span>Saisie d&rsquo;une lettre<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">def saisie():\n    lettre = input('Entrez une lettre : ')\n    if len( lettre ) > 1 or ord(lettre) &lt; 65 or ord(lettre) > 122:\n        return saisie()\n    else:\n        return lettre.upper()<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La fonction de saisie est simple : un simple <strong><em>input<\/em><\/strong> et on retourne la lettre saisie en majuscule. On fait tout de m\u00eame une v\u00e9rification afin de voir si la saisie ne contient qu&rsquo;un caract\u00e8re et si elle correspond \u00e0 une lettre de l&rsquo;alphabet (le \u00ab\u00a065\u00a0\u00bb correspond au code ASCII de \u00ab\u00a0A\u00a0\u00bb et le \u00ab\u00a0122\u00a0\u00bb \u00e0 celui de \u00ab\u00a0z\u00a0\u00bb).<\/p>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p>Remarquez que cette fonction est r\u00e9cursive dans le cas o\u00f9 la saisie n&rsquo;est pas une lettre. Il faut donc penser \u00e0 la condition d&rsquo;arr\u00eat, qui est de retourner le caract\u00e8re saisi dans le cas o\u00f9 c&rsquo;est bien une lettre de l&rsquo;alphabet.<\/p><\/blockquote><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"La_partie_principale\"><\/span>La partie principale<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">On peut imaginer un d\u00e9but de script comme ceci :<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">mot_a_deviner = word()\naffichage = underscore( mot_a_deviner )\nprint( 'Mot \u00e0 deviner : ' , affichage )\nlettre = saisie()\nif lettre in mot_a_deviner:<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Mais au moment de tester si la lettre est dans le mot, un dilemme se pr\u00e9sente : que faire ? Il faut que l&rsquo;affichage change en fonction de la lettre propos\u00e9e. Nous devons donc changer la fonction <strong>underscore()<\/strong>. Elle doit recevoir non pas une lettre en argument, mais une <em>liste de lettres<\/em> (celles d\u00e9j\u00e0 propos\u00e9es).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cela donne un script comme ceci:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">lettres_deja_proposees = []\nmot_a_deviner = word()\naffichage = underscore( mot_a_deviner )\nprint( 'Mot \u00e0 deviner : ' , affichage )\n\nwhile '_' in affichage:\n    lettre = saisie()\n    if lettre not in lettres_deja_proposees:\n        lettres_deja_proposees += [ lettre ]\n            \n    affichage = underscore( mot_a_deviner , lettres_deja_proposees )\n    print( 'Mot \u00e0 deviner : ' , affichage )<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">en changeant la fonction <strong>underscore()<\/strong> ainsi :<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">def underscore(mot , L = []):\n    r = ''\n    for i in mot:\n        if i in L:\n            r += i + ' '\n        else:\n            r += '_ '\n            \n    return r[:-1]<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Compter_le_nombre_derreurs\"><\/span>Compter le nombre d&rsquo;erreurs<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Il nous reste en effet \u00e0 mettre un peu de piment \u00e0 tout \u00e7a en limitant le nombre d&rsquo;erreurs \u00e0 11.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">lettres_deja_proposees = []\nmot_a_deviner = word()\naffichage = underscore( mot_a_deviner )\nprint( 'Mot \u00e0 deviner : ' , affichage )\nnb_erreurs = 0\n\nwhile '_' in affichage and nb_erreurs &lt; 11:\n    lettre = saisie()\n    if lettre not in lettres_deja_proposees:\n        lettres_deja_proposees += [ lettre ]\n        \n    if lettre not in mot_a_deviner:\n        nb_erreurs += 1\n            \n    affichage = underscore( mot_a_deviner , lettres_deja_proposees )\n    print( '\\nMot \u00e0 deviner : ' , affichage , ' '*10 , 'Nombre d\\'erreurs maximum :' , 11-nb_erreurs )<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"760\" height=\"254\" src=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/09\/pendu_terminal.png\" alt=\"jeu pendu python terminal\" class=\"wp-image-3358\" srcset=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/09\/pendu_terminal.png 760w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/09\/pendu_terminal-300x100.png 300w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/09\/pendu_terminal-600x201.png 600w\" sizes=\"auto, (max-width: 760px) 100vw, 760px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Le_script_complet_du_jeu_du_pendu_en_Python\"><\/span>Le script complet du jeu du pendu en Python<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from random import choice\nfrom unidecode import unidecode\n\n# un mot au hasard\n\ndef word():\n    f = open('mots.txt', 'r' , encoding = 'utf8')\n    contenu = f.readlines()\n    return unidecode( choice(contenu) ).upper().replace('\\n','')\n\n# remplacement par des underscores\n\ndef underscore(mot , L = []):\n    r = ''\n    for i in mot:\n        if i in L:\n            r += i + ' '\n        else:\n            r += '_ '\n            \n    return r[:-1]\n\n# saisie d'une lettre\n\ndef saisie():\n    lettre = input('Entrez une lettre : ')\n    if len( lettre ) > 1 or ord(lettre) &lt; 65 or ord(lettre) > 122:\n        return saisie()\n    else:\n        return lettre.upper()\n    \n\n# programme principal\n\nlettres_deja_proposees = []\nmot_a_deviner = word()\naffichage = underscore( mot_a_deviner )\nprint( 'Mot \u00e0 deviner : ' , affichage )\nnb_erreurs = 0\n\nwhile '_' in affichage and nb_erreurs &lt; 11:\n    lettre = saisie()\n    if lettre not in lettres_deja_proposees:\n        lettres_deja_proposees += [ lettre ]\n        \n    if lettre not in mot_a_deviner:\n        nb_erreurs += 1\n            \n    affichage = underscore( mot_a_deviner , lettres_deja_proposees )\n    print( '\\nMot \u00e0 deviner : ' , affichage , ' '*10 , 'Nombre d\\'erreurs maximum :' , 11-nb_erreurs )<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Interface_graphique\"><\/span>Interface graphique<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nous sommes tous d&rsquo;accords pour dire que maintenant que nous avons vu l&rsquo;essentiel, il serait int\u00e9ressant d&rsquo;avoir une interface plus sympathique.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">J&rsquo;utilise <em>tkinter<\/em> pour cela, car bien plus simple que d&rsquo;autres modules graphiques comme QT5.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Comme mentionn\u00e9 en d\u00e9but d&rsquo;article, j&rsquo;utilise la POO : je consid\u00e8re que le jeu est un objet auquel j&rsquo;attribue des m\u00e9thodes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les abonn\u00e9\u00b7e\u00b7s de mathweb.fr trouveront le script dans un fichier zip, contenant aussi le fichier texte ci-dessous:<\/p>\n\n\n\n<div class=\"wp-block-file aligncenter um_article\"><a href=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2021\/01\/pendu.zip\">pendu<\/a><a href=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2021\/01\/pendu.zip\" class=\"wp-block-file__button\" download>T\u00e9l\u00e9charger<\/a><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1002\" height=\"327\" src=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/09\/pendu-tkinter.png\" alt=\"jeu pendu python tkinter\" class=\"wp-image-3359\" srcset=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/09\/pendu-tkinter.png 1002w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/09\/pendu-tkinter-300x98.png 300w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/09\/pendu-tkinter-600x196.png 600w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/09\/pendu-tkinter-768x251.png 768w\" sizes=\"auto, (max-width: 1002px) 100vw, 1002px\" \/><figcaption>Aper\u00e7u de l&rsquo;interface graphique tkinter<\/figcaption><\/figure><\/div>\n","protected":false},"excerpt":{"rendered":"<p>J&rsquo;ai fait un ex\u00e9cutable Windows du jeu du pendu r\u00e9alis\u00e9 en Python, que vous pouvez trouver sur cette page. Pou celles et ceux qui souhaitent savoir comment r\u00e9aliser un tel jeu, voici la d\u00e9marche que j&rsquo;ai adopt\u00e9e.<\/p>\n","protected":false},"author":1,"featured_media":3720,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,5],"tags":[68],"class_list":["post-3355","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-informatique","category-python","tag-jeu"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Le jeu du pendu en Python - Mathweb.fr - D\u00e9marche et script<\/title>\n<meta name=\"description\" content=\"J&#039;ai fait un ex\u00e9cutable Windows du jeu du pendu r\u00e9alis\u00e9 en Python. Vous trouverez dans cet article la d\u00e9marche que j&#039;ai adopt\u00e9e et le script.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Le jeu du pendu en Python - Mathweb.fr - D\u00e9marche et script\" \/>\n<meta property=\"og:description\" content=\"J&#039;ai fait un ex\u00e9cutable Windows du jeu du pendu r\u00e9alis\u00e9 en Python. Vous trouverez dans cet article la d\u00e9marche que j&#039;ai adopt\u00e9e et le script.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/\" \/>\n<meta property=\"og:site_name\" content=\"Mathweb.fr\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-07T09:25:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-10-26T14:27:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/09\/pendu-head.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"740\" \/>\n\t<meta property=\"og:image:height\" content=\"198\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"St\u00e9phane Pasquet\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"St\u00e9phane Pasquet\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/09\\\/07\\\/le-jeu-du-pendu-en-python\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/09\\\/07\\\/le-jeu-du-pendu-en-python\\\/\"},\"author\":{\"name\":\"St\u00e9phane Pasquet\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#\\\/schema\\\/person\\\/e4d3bb07968238378f0d5052a70dcd69\"},\"headline\":\"Le jeu du pendu en Python\",\"datePublished\":\"2020-09-07T09:25:36+00:00\",\"dateModified\":\"2021-10-26T14:27:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/09\\\/07\\\/le-jeu-du-pendu-en-python\\\/\"},\"wordCount\":1043,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#\\\/schema\\\/person\\\/e4d3bb07968238378f0d5052a70dcd69\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/09\\\/07\\\/le-jeu-du-pendu-en-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/pendu-head.jpg\",\"keywords\":[\"jeu\"],\"articleSection\":[\"Informatique\",\"Python\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/09\\\/07\\\/le-jeu-du-pendu-en-python\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/09\\\/07\\\/le-jeu-du-pendu-en-python\\\/\",\"url\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/09\\\/07\\\/le-jeu-du-pendu-en-python\\\/\",\"name\":\"Le jeu du pendu en Python - Mathweb.fr - D\u00e9marche et script\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/09\\\/07\\\/le-jeu-du-pendu-en-python\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/09\\\/07\\\/le-jeu-du-pendu-en-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/pendu-head.jpg\",\"datePublished\":\"2020-09-07T09:25:36+00:00\",\"dateModified\":\"2021-10-26T14:27:25+00:00\",\"description\":\"J'ai fait un ex\u00e9cutable Windows du jeu du pendu r\u00e9alis\u00e9 en Python. Vous trouverez dans cet article la d\u00e9marche que j'ai adopt\u00e9e et le script.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/09\\\/07\\\/le-jeu-du-pendu-en-python\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/09\\\/07\\\/le-jeu-du-pendu-en-python\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/09\\\/07\\\/le-jeu-du-pendu-en-python\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/pendu-head.jpg\",\"contentUrl\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/pendu-head.jpg\",\"width\":740,\"height\":198},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/09\\\/07\\\/le-jeu-du-pendu-en-python\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Le jeu du pendu en Python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#website\",\"url\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/\",\"name\":\"Mathweb.fr\",\"description\":\"Math\u00e9matiques, LaTeX et Python\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#\\\/schema\\\/person\\\/e4d3bb07968238378f0d5052a70dcd69\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#\\\/schema\\\/person\\\/e4d3bb07968238378f0d5052a70dcd69\",\"name\":\"St\u00e9phane Pasquet\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-logo-mathweb.webp\",\"url\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-logo-mathweb.webp\",\"contentUrl\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-logo-mathweb.webp\",\"width\":74,\"height\":77,\"caption\":\"St\u00e9phane Pasquet\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-logo-mathweb.webp\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Le jeu du pendu en Python - Mathweb.fr - D\u00e9marche et script","description":"J'ai fait un ex\u00e9cutable Windows du jeu du pendu r\u00e9alis\u00e9 en Python. Vous trouverez dans cet article la d\u00e9marche que j'ai adopt\u00e9e et le script.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/","og_locale":"fr_FR","og_type":"article","og_title":"Le jeu du pendu en Python - Mathweb.fr - D\u00e9marche et script","og_description":"J'ai fait un ex\u00e9cutable Windows du jeu du pendu r\u00e9alis\u00e9 en Python. Vous trouverez dans cet article la d\u00e9marche que j'ai adopt\u00e9e et le script.","og_url":"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/","og_site_name":"Mathweb.fr","article_published_time":"2020-09-07T09:25:36+00:00","article_modified_time":"2021-10-26T14:27:25+00:00","og_image":[{"width":740,"height":198,"url":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/09\/pendu-head.jpg","type":"image\/jpeg"}],"author":"St\u00e9phane Pasquet","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"St\u00e9phane Pasquet","Dur\u00e9e de lecture estim\u00e9e":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/#article","isPartOf":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/"},"author":{"name":"St\u00e9phane Pasquet","@id":"https:\/\/www.mathweb.fr\/euclide\/#\/schema\/person\/e4d3bb07968238378f0d5052a70dcd69"},"headline":"Le jeu du pendu en Python","datePublished":"2020-09-07T09:25:36+00:00","dateModified":"2021-10-26T14:27:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/"},"wordCount":1043,"commentCount":2,"publisher":{"@id":"https:\/\/www.mathweb.fr\/euclide\/#\/schema\/person\/e4d3bb07968238378f0d5052a70dcd69"},"image":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/09\/pendu-head.jpg","keywords":["jeu"],"articleSection":["Informatique","Python"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/","url":"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/","name":"Le jeu du pendu en Python - Mathweb.fr - D\u00e9marche et script","isPartOf":{"@id":"https:\/\/www.mathweb.fr\/euclide\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/#primaryimage"},"image":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/09\/pendu-head.jpg","datePublished":"2020-09-07T09:25:36+00:00","dateModified":"2021-10-26T14:27:25+00:00","description":"J'ai fait un ex\u00e9cutable Windows du jeu du pendu r\u00e9alis\u00e9 en Python. Vous trouverez dans cet article la d\u00e9marche que j'ai adopt\u00e9e et le script.","breadcrumb":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/#primaryimage","url":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/09\/pendu-head.jpg","contentUrl":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/09\/pendu-head.jpg","width":740,"height":198},{"@type":"BreadcrumbList","@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/09\/07\/le-jeu-du-pendu-en-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.mathweb.fr\/euclide\/"},{"@type":"ListItem","position":2,"name":"Le jeu du pendu en Python"}]},{"@type":"WebSite","@id":"https:\/\/www.mathweb.fr\/euclide\/#website","url":"https:\/\/www.mathweb.fr\/euclide\/","name":"Mathweb.fr","description":"Math\u00e9matiques, LaTeX et Python","publisher":{"@id":"https:\/\/www.mathweb.fr\/euclide\/#\/schema\/person\/e4d3bb07968238378f0d5052a70dcd69"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mathweb.fr\/euclide\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":["Person","Organization"],"@id":"https:\/\/www.mathweb.fr\/euclide\/#\/schema\/person\/e4d3bb07968238378f0d5052a70dcd69","name":"St\u00e9phane Pasquet","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2025\/06\/cropped-logo-mathweb.webp","url":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2025\/06\/cropped-logo-mathweb.webp","contentUrl":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2025\/06\/cropped-logo-mathweb.webp","width":74,"height":77,"caption":"St\u00e9phane Pasquet"},"logo":{"@id":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2025\/06\/cropped-logo-mathweb.webp"}}]}},"_links":{"self":[{"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/posts\/3355","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/comments?post=3355"}],"version-history":[{"count":0,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/posts\/3355\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/media\/3720"}],"wp:attachment":[{"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/media?parent=3355"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/categories?post=3355"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/tags?post=3355"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}