:PROPERTIES: :ID: 4c6e26e5-7ec2-4af3-a3c6-fd138db6d96b :END: #+title: ecrire-une-comptine-en-python-bonjour-le-jour #+post_ID: 73 #+post_slug: ecrire-une-comptine-en-python-bonjour-le-jour #+post_url: https://cil-gometz.org/2020/ecrire-une-comptine-en-python-bonjour-le-jour #+post_title: écrire une comptine en python - Bonjour le jour! #+post_tags: null #+post_type: post #+post_mime_types: #+post_guid: undefined #+post_status: publish #+post_date_published: <2020-08-03T12:43:44> #+post_date_modified: <2020-08-03T12:48:40> #+post_index_page_roam_id: 9d3b75d3-cc12-475e-9bd4-de537191408a #+retrieved_from_db_at: <2024-11-18 16:25:11> * écrire une comptine en python - Bonjour le jour! :PROPERTIES: :CUSTOM_ID: écrire-une-comptine-en-python---bonjour-le-jour :END: Salut les Cilleux et cilleuses, Georges est en vacances, mais je vous propose de pratiquer le python en fabriquant une comptine que ma fille chantait à la crèche, histoire de ne pas trop rouiller pendant l'été et de voir comme on peut faire de la réutilisation. (et pourquoi pas, faire du python avec les enfants :D) Cette comptine étant habituellement utilisée en crèche ou ailleurs pour que tous les enfants retiennent le prénom des autres. On va donc revoir plusieurs éléments déjà vu à la MJC de Gometz: les fonctions, les boucles et les listes. Créez votre fichier python dans votre éditer de texte préféré, perso je recommande PyCharm, version communautaire qui est donc gratuit et très complet. *=sudo snap install pycharm-community --classic=* donc, dans un fichier comptine_python.py, on veut faire notre comptine qui va chanter ceci: #+begin_quote /#### c'est l'heure de la chanson #####/ /- Par la fenêtre ouverte/ // /- bonjour, bonjour/ // /- Par la fenêtre ouverte/ /- bonjour, le jour/ / / /- bonjour les pythons!/ /- bonjour les abeilles!/ /- bonjour les fleurs!/ / / /- Par la fenêtre ouverte/ // /- bonjour, bonjour/ // /- Par la fenêtre ouverte/ // /- bonjour, le jour/ #+end_quote nous avons donc une première ligne, un refrain, une suite de bonjours, et un refrain. Le plus simple est de commencer par la première ligne, qu'il suffit d'imprimer avec print. #+begin_quote #+begin_example print("##### c'est l'heure de la chanson #####") #+end_example #+end_quote Ensuite, nous avons notre refrain. Au lieu de faire plein de print, nous pouvons faire une fonction qui va imprimer toutes les lignes de ce refrain , comme ça on pourra l'appeler deux fois pour faire notre comptine. Définissons donc la fonction refrain. On va écrire notre chaîne de caractères entre une triple paire de guillemets afin de pouvoir écrire sur plusieurs lignes le contenu de notre print. #+begin_src EnlighterJSRAW :enlighter-language generic def refrain():print("""- Par la fenêtre ouverte- bonjour, bonjour- Par la fenêtre ouverte- bonjour, le jour""") #+end_src   Ensuite nous avons plusieurs bonjours dit à un destinataire différent. Nous pouvons donc faire une fonction qui dit bonjour, définir une liste de destinataires, et dire bonjour à chacun d'eux avec une boucle. Commençons par la liste de destinataires que sont les pythons, les abeilles et les fleurs. On utilise des crochets pour définir une liste et l'attribuer à une variable. #+begin_src EnlighterJSRAW :enlighter-language generic destinataires = ['les pythons', 'les abeilles', 'les fleurs'] #+end_src Pour leur dire bonjour on définit une fonction qui va avoir en paramètre un destinataire, et on va imprimer dans la console un bonjour avec le nom du destinataire. Pour mélanger ensemble une chaîne de caractère et une variable, on va utiliser la substitution. ça consiste à écrire dans la chaîne un %s, et après la chaîne à lui donner quoi substituer avec un symbole pourcent % et le nom de la variable à substituer. Ici on veut dire bonjour au destinataire, donc on écrit *% destinataire*. il existe plusieurs façons de mélanger des variables en python, le terme correct étant "concaténer". Je vous laisse creuser le sujet si ça vous intéresse. En tous cas, voici ce que donne notre fonction pour dire bonjour. def dire_bonjour(destinataire): print('- bonjour %s!' % destinataire) Nous n'avons plus qu'a rassembler le puzzle pour que lors de l'éxécution de notre fichier de comptine on puisse voir la chanson en entier. Il nous faut donc encore réaliser une boucle sur chaque élément de notre liste de destinataires. On va utiliser la boucle *for in* et leur passer le bonjour. #+begin_src EnlighterJSRAW :enlighter-language generic for quelqun in destinataires:dire_bonjour(quelqun)Voilà! #+end_src Nous n'avons plus qu'à réorganiser nos lignes et demander au refrain de s'exécuter avant et après la boucle. #+begin_src EnlighterJSRAW :enlighter-language python # comptine de la chanson du bonjourdestinataires = ['les pythons', 'les abeilles', 'les fleurs'] def refrain():print("""- Par la fenêtre ouverte- bonjour, bonjour- Par la fenêtre ouverte- bonjour, le jour""") def dire_bonjour(destinataire):print('- bonjour %s!' % destinataire) print("##### c'est l'heure de la chanson #####") refrain() for quelqun in destinataires:dire_bonjour(quelqun) refrain() # et voilà! #+end_src exécuter le fichier python devrait donc nous faire apparaître en console la chanson complète. Dans pycharm vous pouvez voir ce que ça donne avec votre script juste en appuyant sur F6. Vous pouvez tester ce fichier sur le site repl.it [[https://repl.it/@tykayn/comptinebonjour#main.py]] et le lancer avec le bouton "run" pour voir la comptine en console. Il existe bien sûr tout un tas de façons de faire cette comptine en python. Vous pouvez essayer aussi en ajoutant d'autres destinataires dans la liste. J'espère que ce petit exercice vous aura amusé. N'hésitez pas si vous avez des questions :) Bon Lundi!