2021-2022/2nd/13_Programmation/5E_boucles_while.ipynb

289 lines
7.6 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "78c29ed0",
"metadata": {},
"source": [
"# Étape 5: boucle while\n",
"\n",
"`While` signifie `tant que` en anglais. Cette instruction va répéter **tant que** quelque chose est vrai.\n",
"\n",
"1. Exécuter puis décrire le programme suivant"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "779f540b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"i vaut 0 . C'est plus petit que 10 je continue\n",
"i vaut 1 . C'est plus petit que 10 je continue\n",
"i vaut 2 . C'est plus petit que 10 je continue\n",
"i vaut 3 . C'est plus petit que 10 je continue\n",
"i vaut 4 . C'est plus petit que 10 je continue\n",
"i vaut 5 . C'est plus petit que 10 je continue\n",
"i vaut 6 . C'est plus petit que 10 je continue\n",
"i vaut 7 . C'est plus petit que 10 je continue\n",
"i vaut 8 . C'est plus petit que 10 je continue\n",
"i vaut 9 . C'est plus petit que 10 je continue\n",
"i vaut 10 . C'est plus grand que 10. Je suis sorti de la boucle\n"
]
}
],
"source": [
"i = 0\n",
"while i < 10:\n",
" print(\"i vaut\", i, \". C'est plus petit que 10 je continue\")\n",
" i = i + 1\n",
"print(\"i vaut \", i, \". C'est plus grand que 10. Je suis sorti de la boucle\")"
]
},
{
"cell_type": "raw",
"id": "1f129756",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "de655c11",
"metadata": {},
"source": [
"2. Proposer un variante où l'on répète jusqu'à ce que `i` depasse 20 et où `i` augmente de 2 en 2."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "832e7f8c",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "66641818",
"metadata": {},
"source": [
"Dès que l'on veut faire quelque chose **jusqu'à ce que**, on utilisera un boucle `while`. \n",
"\n",
"3. Exécuter le programme et essayer de trouver mon mot de passe."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "53d5932c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Quel est mon mot de passe?les maths c bon\n",
"Arf bien joué, tu l'as trouvé. J'ai plus qu'à le changer...\n"
]
}
],
"source": [
"mdp = input(\"Quel est mon mot de passe?\")\n",
"while mdp != \"les maths c bon\":\n",
" mdp = input(\"Raté! Tu ne trouveras jamais. Quel est mon mot de passe?\")\n",
"print(\"Arf bien joué, tu l'as trouvé. J'ai plus qu'à le changer...\")"
]
},
{
"cell_type": "markdown",
"id": "e69e925f",
"metadata": {},
"source": [
"4. Écrire une programme qui pose la même question tant que la bonne réponse n'est pas trouvée (vous devez inventer la question et la réponse)."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ae7497cb",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "9748b12c",
"metadata": {},
"source": [
"## 1- Jeux de devinette\n",
"\n",
"Dans cette section, vous programmerez un jeu où l'utilisateur va chercher deviner un nombre choisi au hasard par l'ordinateur.\n",
"\n",
"1. *Programmation du coeur du jeu*: coder le programme suivant\n",
"\n",
" L'ordinateur choisi un nombre au hasard\n",
" \n",
" L'utilisateur propose une réponse\n",
" Si la réponse est égale au nombre choisi par l'ordinateur\n",
" L'utilisateur est félicité\n",
" Sinon si la réponse est supérieur\n",
" On affiche que sa réponse est trop grande\n",
" Sinon\n",
" on affiche que sa réponse est trop petite"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6a7a82b0",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "eafa4b95",
"metadata": {},
"source": [
"2. *Programmation de la boucle de jeu*: reprendre le programme précédent et faire répéter *jusqu'à ce que* l'utilisateur trouve la bonne réponse."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1a3baf72",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "f5b4b59e",
"metadata": {},
"source": [
"3. Quelques propositions d'améliorations\n",
"\n",
" - À la fin, on le nombre de réponses données par l'utilisateur pour trouver le nombre.\n",
" - Limiter le nombre de réponses que l'utilisateur peut donner."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3f28fc8f",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "9ef8751b",
"metadata": {},
"source": [
"## 2- Simulation aléatoire\n",
"\n",
"La boucle `while` peut être utile pour simuler des phénomènes aléatoires et les arreter en fonction d'une condition."
]
},
{
"cell_type": "markdown",
"id": "0cdc9cab",
"metadata": {},
"source": [
"1. Le jeu est le suivant: on part avec 10 points. À chaque tour, on peut perdre un point, gagner un point, ne rien perdre ni gagner. Le jeu s'arrête quand on a plus de points.\n",
"\n",
"Le programme suivra l'algorithme suivant\n",
"\n",
" Notre score est de 10 points\n",
" Affiche le score\n",
" Tant que notre score est positif\n",
" Au hasard notre score gagne un point, perd un point ou rien ne se passe\n",
" Affiche le score\n",
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "771e137c",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "2d61bc8a",
"metadata": {},
"source": [
"2. Adapter le programme précédent pour qu'il calcule puis affiche le nombre de tours avant que notre score arrive à 0."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3f75a4c7",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "594596d0",
"metadata": {},
"source": [
"## 2- Investissement"
]
},
{
"cell_type": "markdown",
"id": "76f59bac",
"metadata": {},
"source": [
"Une banque nous propose le placement suivant: on place 100€ et chaque année ce placement augmente de 2%. On veut savoir combien d'année il faudra attendre pour que ce placement atteigne 10 000€.\n",
"\n",
"Programmer l'algorithme suivant pour répondre à cette question\n",
"\n",
" C'est l'année 0\n",
" Le placement est de 100\n",
" Tant que le placement est plus petit que 10000€\n",
" le placement est augmenté de 2%\n",
" l'année est augmentés de 1\n",
" Affiche le nombre d'année"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ff906802",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}