# Découvrir la programmation en Python Python est aujourd’hui un des langages de programmation les plus utilisés au monde. Il permet de réaliser des scripts, des sites web, d’analyser des données et même de construire des intelligences artificielles. À la fin de ce tutoriel, vous connaîtrez les premières notions du langage Python et de la programmation. Ces bases ont étés vues pendant le [livestream](https://youtu.be/-oeEa8yKVSk?t=227). ## Environnement Pour débuter, je vous recommande d'utiliser Repl.it. C'est un service en ligne qui permet d'écrire, exécuter et partager du code. Pas besoin de créer un compte pour essayer, il suffit de suivre [ce lien](https://repl.it/languages/python3). Créer un compte vous permettra de sauvegarder vos créations. Vous voyez à gauche les fichiers. Le principal fichier est main.py (*main* signifie principal en anglais). Au milieu se trouve l'éditeur de texte où nous écrirons le programme. À droite vous avez la console où le programme sera exécuté. ![](https://i.imgur.com/7IEaywM.png) ## Bonjour Python Première chose dont nous allons avoir besoin est une fonction pour afficher quelque chose dans la console. C'est la fonction `print()`, ce qui signifie afficher ou imprimer en anglais. Entre les parenthèses on donne à la fonction ce que l'on souhaite afficher. Ici, on souhaite afficher un texte tel quel. En informatique on parle de **chaîne de caractères** (*string* en anglais). ```python print("Bonjour toi") ``` Nous pouvons afficher un texte complet. Pour chaque appel à `print()` l'affichage revient à la ligne. ```python print("Bonjour toi !") print("Bienvenue dans ce premier tutoriel Python.") ``` ## Variables et valeurs Pour pouvoir enregistrer le texte et le réutiliser pendant l'exécution du programme, nous allons utiliser une variable. Une variable est une boîte dans laquelle on peut enregistrer une information. Ici, nous allons enregistrer le texte d'accueil "Bonjour toi". La valeur "Bonjour toi" est **affectée** à la variable `message` que nous venons de créer. ![](https://i.imgur.com/2olQmyl.png) Dès lors, nous pouvons afficher le contenu de la variable message: ```python message = "Bonjour toi" print(message) ``` > Nous avons choisi de nommer notre variable "message", car paraît approprié pour l'utilisation que nous comptons en faire. Mais nous aurions pu lui donner n'importe quel nom, comme "poulet" ou "xystfqt", à condition de respecter les règles définies par le langage Python: > - Le nom d'une variable commence par une lettre ou le caractère "\_", et peut contenir autant de lettre ou de "\_" que désiré. > - Le nom d'une variable peut contenir des chiffres, mais ne doit pas commencer par un chiffre. > - Le nom d'une variable peut contenir des lettres majuscules comme minuscules, mais nous devrons toujours réécrire ce nom de la même façon. Par exemple, notre variable s'appelle `message`, nous ne pourrons pas l'appeler `Message` dans la suite du programme, car Python ne comprendra pas qu'il s'agit de la même variable! On dit que le language est *sensible à la casse*. ## Interagir avec l'utilisateur Pour que le programme soit un peu plus personnalisé et interactif, nous allons demander à l'utilisateur son prénom. Pour ceci, nous allons utiliser la fonction `input()` (qui signifie "entrée" en anglais). La fonction prend en paramètre un texte à afficher, par exemple pour poser une question. ```python message = "Bonjour " prenom = input("Quel est ton prénom? ") print(message + prenom) ``` {% capture notice_concatenation %} Comme les variables sont des chaînes de caractères le symbole `+` signifie de les mettre bout à bout l'une après l'autre. On appelle cette action une **concaténation**. Si les deux variables contiennent un nombre, `+` opère une addition simple. {% endcapture %} {% include notice.html content=notice_concatenation %} ## Les conditions Enfin, pour être plus chaleureux, si le programme reconnaît le prénom il affichera un message d'accueil supplémentaire. Pour cela nous utiliserons le mot clé `if` ("si" en anglais). Si le prénom est "Xavier", nous dirons "ravi de te revoir". Vous pouvez écrire votre prénom si vous préferez... ```python message = "Bonjour " prenom = input("Quel est ton prénom? ") print(message + prenom) if prenom == "Xavier": print("Ravi de te revoir") ``` Il est important de noter la syntaxe propre au langage python. La première ligne indique la **condition** (SI le prénom de l'utilisateur est "Xavier"), puis après les deux points et l'espacement sur la gauche, les **instructions** à executer (affiche "Ravi de te revoir" et affiche "par contre tu es décoiffé"). Tout ce qui sera dans le même alignement sera exécuté dans les mêmes conditions. ```python message = "Bonjour " prenom = input("Quel est ton prénom? ") print(message + prenom) if prenom == "Xavier": print("Ravi de te revoir") print("par contre tu es décoiffé") ``` Le symbole `==` compare la variable `prenom` à la chaîne "Xavier". On écrit deux fois le symbole égal pour distinguer du `=` simple qui sert pour l'affectation d'une variable comme nous avons vu plus haut. Rien qu'avec ça, vous pouvez déjà construire votre propre jeu "Choisi ta propre aventure". Vous racontez une histoire avec des print(). Puis quand l'utilisateur doit faire un choix, par exemple porte de droite ou porte de gauche, vous racontez la suite de l'histoire en fonction du choix. Vous pouvez même compter les points de vie avec une variable ! > L'espacement sur la gauche s'appelle "l'**indentation**" (on peut utiliser 2 ou 4 espaces, ou la touche "tab"). C'est très important pour le langage Python car cela lui permet de comprendre les enchaînements logique des conditions. Dans notre exemple, c'est par ce que l'on indente l'appel à la fonction`print("Ravi de te revoir")`, que l'ordinateur comprendra qu'elle est liée à la condition `if prenom == "Xavier"`. Sinon, l'ordinateur afficherait "Ravi de te revoir" quel que soit le prénom de l'utilisateur ! ## Première analyse de texte en Python Un des principaux usages de ce langage est l'analyse de données, de textes, d'images... Ici, nous allons faire une analyse très simple du prénom de l'utilisateur. La première analyse porte sur le nombre de fois que l'on trouve la lettre 'e'. Pour commencer, nous allons parcourir les lettres du prénom. Nous recourons au mot clé `for` ("pour" en anglais) qui execute des instructions pour chaque lettre. ```python for x in prenom: print(x) ``` Pour chaque lettre contenue dans la variable `prenom`, ce code l'enregistre dans la variable nommée "x", puis affiche le contenu de la variable `x`. Comme les instructions sont répétées on parle de **boucle**. La syntaxe est similaires à celle de la condition `if`, avec une ligne qui contrôle le fonctionnement de cette partie, `:`, retour à la ligne et l'indentation (les deux espaces ou la tabulation vers la droite). Maintenant pour compter les "e" nous allons créer une nouvelle variable `compteur` à laquelle nous ajouterons 1 à chaque fois que nous rencontrons un "e" ou un "E". ```python for x in prenom: print(x) if x == 'e' or x == 'E': compteur = compteur + 1 ``` On peut alors afficher le résultat. La fonction `print()` peut afficher plusieurs éléments sur la même ligne, si on les sépare par une virgule. Le programme complet est alors : ```python print("Nombre de e :",compteur) ``` A la fin de l'exécution du programme, les variables contiennent les valeurs suivantes. Vous pouvez le tester en tapant dans la console `print()` avec le nom de la variable en paramètre `print(compteur)`. Par exemple avec le prénom Emilie: | Variable | Contenu | |---------- |------------ | | prenom | "Emilie" | | message | "Bonjour " | | compteur | 2 | | x | "e" | > L'instruction `compteur = compteur + 1` peut paraître étonnante de premier abord, mais il suffit de comprendre l'ordre dans lequel le programme résout les opérations: > 1. Le programme calcule de le résultat de l'addition `compteur + 1`, il s'agit de la valeur contenue dans la variable `compteur`, à laquelle on ajoute 1. > 2. Ce résultat est affecté à la variable `compteur` > > Cette opération est très courante en programmation, on l'appelle l'**incrémentation**. En Python, on peut l'écrire de manière alternative: > - `compteur = compteur + 1` > - `compteur += 1` > > Les deux syntaxes ont exactement le même effet, mais vous vous apercevrez que les développeuses et développeurs ont tendance à préferer les versions courtes. 🤷 ## Lister les lettres dans un mot Maintenant nous allons établir la liste des lettres utilisées dans le prénom. Pour ceci, nous créons une variable `liste`. ```python liste = "" ``` Puis, comme dans le cas précédent, pour chaque lettre du prénom, nous alors essayer d'évaluer si la lettre est dans notre liste. Plutôt que le `==`, cette fois nous utilisons le mot clé `in` qui permet de vérifier si l'élement est contenu dans la liste. Puisque l'on souhaite l'ajouter si il n'est pas dans la liste, on ajoute le mot clé de négation `not`. ```python for y in prenom: if y not in liste: liste = liste + y ``` Et voilà le programme complet ! ```python message = "Bonjour " prenom = input("Quel est ton prenom? ") print( message + prenom) compteur = 0 for lettre in prenom: if x == 'e' or x == 'E': compteur = compteur + 1 print("Nombre de e :",compteur) liste = "" for y in prenom: if y not in liste: liste = liste + y print("Lettres utilisées :",liste + " ") ``` Son exécution donne ``` Quel est ton prenom? Eleonore Nombre de e : 3 Lettres utilisées : Eleonr ``` > Notre programme considère les majuscules et les minuscules comme des lettres différentes. Une façon de résoudre le problème serait d'utiliser la méthode `prenom.lower()` qui nous donne la version en minuscules du contenu de `prenom`, mais nous le reverrons plus tard. ## Aller plus loin Dans la suite du livestream et l'article suivant nous voyons [comment réaliser un jeu du pendu](https://hackmd.io/yLSAFEn4SdG419pznfrSAA). Nous utiliserons les notions que nous venons de voir. Ensuite, je vous recommande fortement de vous donner un objectif, par exemple un petit programme qui compte le nombre de répétitions d'une lettre dans un texte... La programmation est beaucoup plus intéressante quand on crée en suivant sa propre créativité. En termes d'outils, si vous préférez un logiciel installé sur votre ordinateur, je vous recommande [spyder](https://www.spyder-ide.org/) qui propose un environnement complet, léger et gratuit. Vous pouvez l'installer avec [Anaconda](https://www.anaconda.com/distribution/) pour avoir toute la panoplie d'un "data scientist". Si vous souhaitez en apprendre plus sur la programmation en Python, et que vous vous intéressez également au *développement web*, je vous invite à consulter notre série [apprendre à coder en ligne](https://lesbricodeurs.fr/apprendre-a-coder-en-ligne/), qui va s'étoffer dans les semaines à venir.