GitLab now enforces expiry dates on tokens that originally had no set expiration date. Those tokens were given an expiration date of one year later. Please review your personal access tokens, project access tokens, and group access tokens to ensure you are aware of upcoming expirations. Administrators of GitLab can find more information on how to identify and mitigate interruption in our documentation.
mot=choice(liste_mots)# prend au hasard un mot dans la liste
mot=mot.upper()# mot en majuscules
print("Bienvenue dans le jeu du pendu")
mot_devine="*"*len(mot)
print(mot_devine)
nbr_essais=0
# Tant que le mot n'a pas été trouvé
whilemot_devine!=mot:
lettre=input("Entrez une lettre ou '?' pour abandonner : ")
lettre=lettre[0]# évite des erreurs si un mot est entré au lieu d'une lettre
iflettre=='?':
print(f'Le mot était {mot}')
break
lettre=lettre.upper()
foriinrange(len(mot)):
iflettre==mot[i]:
mot_devine=mot_devine[:i]+lettre+mot_devine[i+1:]
print(mot_devine)
nbr_essais+=1
ifmot==mot_devine:
print('Bravo ! Le mot',mot,'a été trouvé en',nbr_essais,'coups')
```
%% Cell type:markdown id: tags:
## 4. La programmation <a name="programmation"></a>
### 4.A. Qu'est-ce que la programmation ? <a name="keske"></a>
L'objectif d'un **programme** est de résoudre un problème donné de manière systématique (par exemple, trier une liste de mots, ou identifier le maximum dans un ensemble de chiffres). Pour cela, il faut trouver la suite d'**instructions** (ou ordres) à donner à la machine pour trouver la solution : c'est ce qu'on appelle l'**algorithme**.
La phase de **programmation** consiste à traduire l'algorithme dans un **langage de programmation** pour obtenir un **programme**.
Un **logiciel** est un ensemble de programmes.
Pour les langages dits "interprétés", l'exécution d'un programme nécessite un **interpréteur**, qui va lire les instructions du programme et les exécuter.
### 4.B. Algorithmes de tous les jours : les recettes de cuisine <a name="recettes"></a>
On peut faire l'analogie entre un algorithme et une recette de cuisine : on liste tout d'abord tout ce dont on a besoin (les ingrédients) et on donne ensuite la suite des instructions que devra suivre la personne qui réalise la recette.
Prenons l'exemple d'une recette locale, le gâteau de santé ('Gsundheitsküeche'). Il suffit de prendre 250g de farine, 10 cl d'huile, 120 g de sucre, 200 g de yaourt nature, 5 cl de lait, 1 sachet de levure chimique et 1 gousse de vanille. On mélange tous les ingrédients, en commençant par l'huile, le sucre le yaourt, le lait et la vanille et on termine en ajoutant la farine et la levure. Faire cuire 45 minutes au four. C'est simple...
Si nous devions faire réaliser cette recette par un robot ou un ordinateur commandant une machine, il réaliserait la recette exactement comme nous l'avons décrite, c'est-à-dire :
* La gousse de vanille ira en entier dans le mélange, car il n'est pas spécifié de la fendre en 2 et gratter l'intérieur, pour ne garder que les grains.
* Idem pour le sachet de levure chimique, ce n'est pas précisé qu'il faut l'ouvrir et verser le contenu, puis jeter le sachet
* Enfin, ce n'est pas précisé qu'il faut allumer le four et verser la pâte dans un moule.
Tout ça paraît très logique, mais un robot ou un ordinateur ne comprend pas les instructions ambigues ou incomplètes, car il n'a pas de connaissances extérieures.
### 4.C. Un défi : comment "penser" comme un ordinateur ? <a name="penser"></a>
* Il faut s'entraîner à réfléchir aux problèmes d'une manière particulière ;
* Les ordinateurs ne sont pas intelligents, mais ils sont capables d'effectuer des tâches précises ;
* Il est nécessaire de leur donner des instructions précises, complètes et détaillées ;
* Ces instructions ne peuvent pas être communiquées en langue naturelle, mais doivent être traduites dans un langage de programmation ;
* Il faut penser à l'avance aux exceptions possibles.
### 4.D. Pourquoi apprendre à programmer ? <a name="pourquoi"></a>
#### Il y a beaucoup de bonnes raisons...
* Il n'existe pas de logiciel tout prêt capable de répondre à tous les besoins ;
* Savoir programmer permet de mieux comprendre le fonctionnement interne des logiciels, leurs limites, et donc les utiliser à bon escient ;
* L'utilisation de différents outils nécessite souvent de transformer le format de sortie de l'un en un format adéquat pour l'autre ;
* Cela permet de pouvoir effectuer soi-même des tâches qu'il faudrait sinon confier à d'autres ;
* La programmation est une activité qui s'avère généralement très passionnante, gratifiante, voire amusante ;
* La programmation est un bon entraînement pour la résolution de problèmes et le raisonnement logique, compétences utiles dans d'autres domaines ;
* C'est en phase avec l'importance grandissante du numérique dans la société, même dans les domaines relevant des sciences humaines et sociales.
### 4.E. Pourquoi le langage Python ? <a name="python"></a>
#### Caractéristiques de Python
Le langage Python a été créé par Guido von Rossum aux Pays-Bas. Le nom du langage fait référence aux Monty Python. La première version publique (0.9.0) date de 1991.
Le code Python est exécuté par une machine virtuelle installée sur la machine (l'interpréteur de commandes).
#### Un langage "facile" à apprendre
Par rapport à d'autres langages, Python est facile à apprendre, assez facile à lire et à manipuler. Et aussi à maintenir...
Il utilise peu de symboles comme les accolades ({ }), les symboles dollar ($) et dièse (\#).
#### Un langage avec de multiples avantages et utilisations
* Manipulation aisée de fichiers et de dossiers ;
* Syntaxe simple, proche du langage naturel (anglais)
* Langage réputé pour faciliter la qualité et la maintenabilité des programmes
* Nombreuses bibliothèques disponibles pour des tâches variées : calcul scientifique, travail avec des données textuelles, manipulation de bases de données, applications Web, etc.
* Écriture rapide de petits programmes (les moulinettes) ;
* Gratuit et disponible sous tous type de plateformes ;
* Utilisé dans de nombreuses entreprises (Google, YouTube, DropBox, et.), pour la recherche scientifique (notamment en traitement automatique des langues via le Natural Language Processing Toolkit) et l'enseignement ;
- Utilisant le raccourci `SHIFT+Entrée` (dans ce cas, la cellule suivante est séléectionné après l'exécution)
- Cliquant sur `Exécuter/Run`
%% Cell type:code id: tags:
``` python
print("Bonjour tout le monde !")
```
%% Cell type:markdown id: tags:
A votre avis, que fait la commande `print` ?
Exécutez maintenant l'instruction ci-dessous :
%% Cell type:code id: tags:
``` python
print("Bonjour tout le monde !"
```
%% Cell type:markdown id: tags:
Il manque une parenthèse fermante dans l'instruction ci-dessus, ce qui provoque une **erreur**. Lorsqu'on écrit un programme, il faut être très rigoureux·se : il suffit d'une faute d'orthographe, d'un caractère mal placé ou manquant pour que le programme ne fonctionne pas. Heureusement, le message d'erreur vous renseigne sur le type de problème et son emplacement : il faut alors lire attentivement ce message pour trouver où se situe l'erreur et la corriger.
%% Cell type:markdown id: tags:
Testez ensuite la suite d'instructions ci-dessous :
%% Cell type:code id: tags:
``` python
prenom=input("Comment vous appelez-vous ? ")
print("Bonjour "+prenom)
```
%% Cell type:markdown id: tags:
Que fait la commande `input` ?
Modifiez la commande ci-dessus pour afficher deux points d'exclamation après le prénom, par exemple : *Bonjour Marie !!*
Testez maintenant la suite d'instructions ci-dessous :
%% Cell type:code id: tags:
``` python
nom=input("Entrez un nom commun masculin singulier : ")
pluriel=nom+"s"
print("Les formes fléchies de '"+nom+"' sont : ")
print("un "+nom)
print("des "+pluriel)
```
%% Cell type:markdown id: tags:
A quoi sert le `+` ?
Modifiez le programme pour prendre en compte le cas des noms communs féminins, comme "maison" par exemple.