diff --git a/Notebooks/05b_Les_variables2.ipynb b/Notebooks/05b_Les_variables2.ipynb index 50b9d1c5b6decb653269e3a449c880dcb21b2e08..59c917fe37cf5fd4e5899ee39e7e1604f57520a4 100644 --- a/Notebooks/05b_Les_variables2.ipynb +++ b/Notebooks/05b_Les_variables2.ipynb @@ -188,7 +188,7 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "trusted": true + "trusted": false }, "outputs": [ { @@ -356,7 +356,7 @@ { "cell_type": "markdown", "metadata": {}, - "source": "2. Modifiez le programme précédant afin d’obtenir un programme qui demande à l’utilisateur⋅trice la taille et le nombre de côtés du polygone régulier puis trace ce polygone.\n\nExemple d’exécution du programme: \n\n```\nQuel est la nombre de côtés de votre polygone : 8\nQuel est la taille de votre polygone : 100\n```\nqui devrait générer un hexagone de côté 100:" + "source": "2. Modifiez le programme précédant afin d’obtenir un programme qui demande à l’utilisateur⋅trice la taille et le nombre de côtés du polygone régulier puis trace ce polygone.\n\nExemple d’exécution du programme: \n\n```\nQuel est la nombre de côtés de votre polygone : 8\nQuelle est la taille de votre polygone : 100\n```\nqui devrait générer un hexagone de côté 100:" }, { "cell_type": "code", @@ -379,7 +379,7 @@ "trusted": false }, "outputs": [], - "source": "from turtle import *\n\nn = 10\nangle = int(360 / n)\n\nfor k in range(n):\n forward(100)\n right(angle)\n\ndone()" + "source": "from turtle import *\n\n# à compléter\n\ndone()" }, { "cell_type": "markdown", diff --git a/Notebooks/05b_Les_variables2_corrige.ipynb b/Notebooks/05b_Les_variables2_corrige.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..d7a271dee3541e14e30a2236d9ee589e4c1821f8 --- /dev/null +++ b/Notebooks/05b_Les_variables2_corrige.ipynb @@ -0,0 +1,563 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-danger\"> \n \n# Cours avec solution\n</div>\n\n<div class = \"alert alert-block alert-warning\"> \n\n### A faire avant de commençer\n**Cliquez sur Exécuter tout** dans le menu **Cellule**.\n</div>" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "# 5.2 Les variables, Types et entrée-sortie" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "## Types de Données\nPython est un langage à typage dynamique, ce qui signifie que vous n'avez pas besoin de spécifier le type de données d'une variable lorsque vous la créez.\n\n\n\n<blockquote class=\"alert alert-info\" style=\"background-color:rgb(220,240,255); margin:10px 10%;\">\n <p><span style=\"font-size:1.5em\">❔</span> C'est quoi le type d'une variable ? Exécutez la cellule ci-dessous pour voir une petite introduction sur la notion de type d'une variable</p>\n</blockquote>\n\n\n<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/5zA8_3YDXb4?si=3V95fi6wa24ddwW_\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen></iframe>\n\n\n### Principaux types de données en Python\n- `int` : pour les nombres entiers\n- `float` : pour les nombres à virgule flottante\n- `str` : pour les chaînes de caractères\n- `bool` : pour les valeurs booléennes (True ou False)\n\n```python\n# Exemple de différents types de données\nentier = 10\nchaine = \"Bonjour\"\nflottant = 12.85\nbooleen = True\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:chocolate;background-color:papayawhip;\" > <i class=\"fa fa-question\" aria-hidden=\"true\"> </i> Quizz </h3> \n\n\nQue stocke la variable `pi` dans le code suivant ?\n\n```python\npi = 3.14159\n\n```\n\n<ol style=\"list-style-type: upper-alpha\">\n <li>Une chaîne de caractères</li>\n <li>Un entier</li>\n <li>Un nombre à virgule flottante</li>\n <li>Une valeur booléenne</li>\n</ol>\n" + }, + { + "cell_type": "raw", + "metadata": {}, + "source": "Ma réponse: " + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<details>\n<summary style=\"border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8\"> \nSolution\n</summary> \n\n<div style=\"border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8\">\nC. Un nombre à virgule flottante\n</div>\n</details>" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:chocolate;background-color:papayawhip;\" > <i class=\"fa fa-question\" aria-hidden=\"true\"> </i> Question </h3> \n\n \n```\nEn informatique, `int` est l'abréviation pour\n\nA) international\nB) entier\nC) interne\nD) intelligent\n```\n \n</div>" + }, + { + "cell_type": "raw", + "metadata": {}, + "source": "Ma réponse: " + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<details>\n<summary style=\"border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8\"> \nSolution\n</summary> \n\n<div style=\"border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8\">\nB) entier\n</div>\n</details>" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:chocolate;background-color:papayawhip;\" > <i class=\"fa fa-question\" aria-hidden=\"true\"> </i> Question </h3> \n\nIndiquez le type des variables (entier, flottant ou chaîne de caractères) permettant de stocker sur votre smartphone les informations suivantes :\n\n- le nom d’un contact\n- le numéro de téléphone d’un contact\n- un SMS\n- le prix d'un croissant\n- le code de votre partage de connexion Wi-Fi\n- le pourcentage _affiché_ de batterie restante\n- ma note à la dernière épreuves de Mathématiques\n\n\n \n</div>" + }, + { + "cell_type": "raw", + "metadata": {}, + "source": "Mes réponses :\n\n- le nom d’un contact : \n- le numéro de téléphone d’un contact : \n- un SMS :\n- le prix d'un croissant : \n- le code de votre partage de connexion Wi-Fi : \n- le pourcentage affiché de batterie restante :\n- ma note à la dernière épreuves de Mathématiques : " + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<details>\n<summary style=\"border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8\"> \nSolutions\n</summary> \n\n<div style=\"border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8\">\n- le nom d’un contact : Une chaîne de caractères\n \n- le numéro de téléphone d’un contact : Une entier\n \n- un SMS : Une chaîne de caractères\n \n- le prix d'un croissant : Un nombre à virgule flottante\n \n- le code de votre partage de connexion Wi-Fi : Une chaîne de caractères\n \n- le pourcentage affiché de batterie restante : Une entier\n \n- ma note à la dernière épreuves de Mathématiques : Un nombre à virgule flottante\n \n</div>\n</details>" + }, + { + "cell_type": "markdown", + "metadata": { + "trusted": false + }, + "source": "## Demander à l'utilisateur d'entrer une valeur : `input` \n\nLa fonction `input('question')` permet de demander une entrée (input) à l'utilisateur.\nL'utilisateur voit le texte `question` affiché à la console et doit répondre à cette question. Il termine son entrée avec la touche Enter.\n\nLa réponse de l'utilisateur est ensuite mémorisée dans une variable que nous appelons `x` dans cet exemple.\nEnsuite, nous pouvons utiliser cette variable `x` dans la suite du programme, par exemple comme argument dans une fonction `print()`.\n" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "x = input('Entrez votre nom: ')\nprint('Bonjour', x)" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 1 </h3>\n\nAjoutez une troisième question et utilisez la réponse dans un `print()`.\n\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "nom = input('Entrez votre nom: ')\nprint('Bonjour', nom)\n\nage = input('Entrez votre âge: ')\nprint('Très bien', nom, 'vous avez', age, 'ans')\n\nnationalite = input('Quelle est votre nationalité ')\nprint('Très bien', nom, ', vous avez', age, 'ans, vous a êtes', nationalite)" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 2 </h3>\n\nEcrire un code qui demande à l’utilisateur son prénom dans une première question puis qui demande dans une deuxième question son nom de famille et qui écrit ensuite:<br>\n\t\n `\"Bienvenue Prénom Nom\"`\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "prenom = input('Entrez votre prenom: ')\nnom = input('Entrez votre nom: ')\nprint('Bienvenue', prenom, nom)" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "## Demander un nombre\n\nLa fonction `input()` permet d'obtenir une entrée de l'utilisateur. Mais attention !\nLa valeur retournée est une chaine de caractères (de type string `str`). Nous pouvons le prouver avec la fonction `type()`.\n" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "x = input('Entrez un nombre: ')\nprint(type(x))" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class=\"alert alert-block alert-info\">\n<b>⚡ A retenir : </b> <br>\nUne variable entrée au clavier par un <i>input</i> est toujours du type <i>str</i> c'est à dire considéré comme une chaine de caractères.\n</ul>\n</div>" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "Pour pouvoir utiliser cette valeur dans un calcul, nous devons la transformer en nombre. Pour convertir une chaine de caractères en un nombre à virgule flottante nous utilisons la fonction de conversion `float()`.\n" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "x = '1.5'\nprint(type(x)) # la variable x contient une chaîne\nprint(type(float(x))) # la fonction float(x) renvoie un nombre" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "### Exemple\n\nOn souhaite avoir un programme qui permet de calculer la moyenne de deux nombres qui sont fournis par l'utilisateur. Tester la proposition de programme suivante:" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "#Demande à l'utilisateur deux nombres puis calcule et affiche leur somme\nnombre1 = input(\"Taper un premier nombre : \")\nnombre2 = input(\"Taper un deuxième nombre : \")\nmoyenne = (nombre1 + nombre2)/2\nprint(\"La somme de ces deux nombres est \",moyenne)" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "On comprend le problème : pour python `nombre1` et `nombre2` sont en fait des chaines de caractères par conséquent, calculer leur moyenne n'a pas de sens ! \n\nPour résoudre ce problème nous devons convertir `nombre1` et `nombre2` en nombre à virgule, cela se fait grâce à l'instruction `float`. Voici le programme corrigé :\n" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "#Demande à l'utilisateur deux nombres puis calcule et affiche leur somme\nnombre1 = float(input(\"Taper un premier nombre : \")) #float() permet de convertir la valeur entrée en flottant\nnombre2 = float(input(\"Taper un deuxième nombre : \")) \nmoyenne = (nombre1 + nombre2)/2\nprint(\"La moyenne de ces deux nombres est \",moyenne)" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 3</h3>Complétez le programme pour afficher la surface du cercle.\n\n" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "print('Circle')\nr = float(input('Entrez le rayon: '))\npi = 3.14\nprint()\nprint('rayon =', r)\nprint('diamètre =', 2 * r)\nprint('circonférence =', pi * 2 * r)\nprint('surface =', ...)" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "Nous pouvons également créer des programmes où nous demandons plusieurs valeurs à l'utilisateur. Cette fois, nous permettons seulement l'utilisation de nombres entiers, et donc transformons la chaine obtenue avec `int()` en nombre entier.\n\n<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "print('Circle')\nr = float(input('Entrez le rayon: '))\npi = 3.14\nprint()\nprint('rayon =', r)\nprint('diamètre =', 2 * r)\nprint('circonférence =', pi * 2 * r)\nprint('surface =', pi * r**2)" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "\n\n<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 4 </h3>\n\nComplétez le programme pour afficher le périmètre et la diagonale." + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "from math import sqrt\n\nprint('Rectangle')\na = float(input('Entrez la largeur: '))\nb = float(input('Entrez la longueur: '))\n\nprint('surface =', a * b)\nprint('périmètre =', 2*a+2*b)\nprint('diagonale =', sqrt(a**2+b**2))" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "!!! info utiliser des fonctions mathématiques comme la fonction racine carrée $\\sqrt{x}$.\nPour calculer la racine carrée d'un nombre $\\sqrt{x}$, il faut utiliser la fonction `sqrt` du module `math`. Pour ce faire, votre programme doit commencer par `from math import sqrt` (pour importer la fonction `sqrt` du module `math`). Pour l'utiliser, il suffit de mettre la valeur dont on veut trouver la racine en argument de la fonction `sqrt`. Par exemple, l'instruction `print(sqrt(25))` affichera 5.\n!!!\n\n<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 5 </h3>\n\nChacun des programmes suivants devrait demander à l’utilisateur deux nombres, et écrire le produit de ces deux nombres mais il contient au moins une erreur. Corrigez chacun des programmes puis testez les.\n\n**Programme A** " + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "int(input(\"premier nombre: \"))\nint(input(\"deuxième nombre: \"))\nprint(premier*deuxième)\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "# Explications : il faut stoquer les réponses des input dans \n# des variables\npremier = int(input(\"premier nombre: \"))\ndeuxième = int(input(\"deuxième nombre: \"))\nprint(premier*deuxième)\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "**Programme B**" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "x=input(\"premier nombre: \")\ny=input(\"deuxième nombre: \")\nx*y" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "# Explications : Il faut afficher le résultat \nx= int(input(\"premier nombre: \")) # ajouter le int (ou float)\ny= int(input(\"deuxième nombre: \")) # ajouter le int (ou float)\nprint(x*y) # oubli du print" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "**Programme C**" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "x=int(\"premier nombre : \")\ny=int(\"deuxième nombre: \")\nz=x*y\nprint(\"z\")" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "x=int(input(\"premier nombre : \")) # ajouter un imput\ny=int(input(\"deuxième nombre: \")) # ajouter un imput\nz=x*y\nprint(z) # enlever les guillemets" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 6 </h3>\n\nComplétez le programme Python ci-dessous qui calcule la surface d'un rectangle après avoir demandé sa largeur et sa longueur.\n\n\nIndication: Il faut remplacer les `_____` par ce qu'il convient" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "# Programme pour calculer la surface d'un rectangle à partir de sa longueur et de sa largeur\nlongueur = _____(input(\"Entrer la longueur du rectangle : \")) #longueur doit être un flottant utiliser la conversion !\nlargeur = _____(_____(\"Entrer la largeur du rectangle : \"))\nsurface = _______*_________\n_____(\"La surface du rectangle est :\",___________)" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "# Programme pour calculer la surface d'un rectangle à partir de sa longueur et de sa largeur\nlongueur = float(input(\"Entrer la longueur du rectangle : \")) #longueur doit être un flottant utiliser la conversion !\nlargeur = float(input(\"Entrer la largeur du rectangle : \"))\nsurface = longueur*largeur\nprint(\"La surface du rectangle est :\",surface)" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 7 </h3>\n\nChacun des programmes devrait demander à l’utilisateur un nombre `n`, et écrire les n premiers multiples de 100. Corriger les erreurs de chaque programme afin qu’il fonctionne.\n\n\n**Programme A** " + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "n = int(input(\"Nombre de multiples: \"))\nfor _ in range(n):\n print(x)\n x+100\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "n = int(input(\"Nombre de multiples: \"))\nx = 100 # première valeur de x\nfor _ in range(n):\n print(x)\n x = x + 100 # mofifier la veleur de x après avoir calculé\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "**Programme B**" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "x = int(input(\"Nombre de multiples: \"))\nn = 100\nfor _ in range(x):\n print(x)\n x = x+100" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "# confusion entre le rôle de x et n\nn = int(input(\"Nombre de multiples: \"))\nx = 100\nfor _ in range(n):\n print(x)\n x = x+100" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "**Programme C**" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true, + "trusted": true + }, + "outputs": [], + "source": "x = int(input(\"Nombre de multiples: \"))\nn = 100\nfor _ in range(x):\n print(n)\nn = n+n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "x = int(input(\"Nombre de multiples: \"))\nn = 100\nfor _ in range(x):\n print(n)\n n = 100+n # problème d'indentation et d'affetation" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "**Programme D**" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "x = int(input(\"Nombre de multiples:\"))\nn = 100\nfor _ in range(x):\n print(n)\n n = n+100" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "**Programme E**" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "x=int(input(\"Nombre de multiples:\"))\nn = 100\nfor _ in range (x):\n n = n + 100\n print(n)\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "x=int(input(\"Nombre de multiples:\"))\nn = 0 # METTRE À 0\nfor _ in range (x):\n n = n + 100\n print(n)\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 8 </h3>\n\nCompléter le programme Python qui demande à l’utilisateur un mot, et un nombre n et qui écrit n fois de suite le mot donné par l’utilisateur." + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "n = input(...)\nmot = input(...)\nfor #à compléter\n #à compléter" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "n = int(input(\"Nombre de répétitions : \"))\nmot = input(\"Le mot à répéter : \")\nfor _ in range(n):\n print(mot)" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 9 </h3>\n\nOn considère le programme suivant:\n\n```python\n\nfrom turtle import *\n\nn = 10\nangle = int(360 / n)\n\nfor k in range(n):\n forward(100)\n right(angle)\n \ndone()\n```\n\n1. Tester le programme ci-dessus, puis modifiez le en définissant une fonction `polygone(lg, n)` qui permet de tracer des polygones réguliers avec `n` côtés et de longueur `lg`. Le programme doit produire la même figure mais en utilisant la fonction `polygone(lg, n)`." + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "from turtle import *\n\nn = 10\nangle = int(360 / n)\n\nfor k in range(n):\n forward(100)\n right(angle)\n\ndone()" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "2. Modifiez le programme précédant afin d’obtenir un programme qui demande à l’utilisateur⋅trice la taille et le nombre de côtés du polygone régulier puis trace ce polygone.\n\nExemple d’exécution du programme: \n\n```\nQuel est la nombre de côtés de votre polygone : 8\nQuelle est la taille de votre polygone : 100\n```\nqui devrait générer un hexagone de côté 100:" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "from turtle import *\n\ndef polygone(lg, n):\n n = 10\n angle = int(360 / n)\n\n for k in range(n):\n forward(lg)\n right(angle)\n\nn_cotes = int(input(\"Quel est la nombre de côtés de votre polygone : \"))\nlongueur = int(input(\"Quelle est la taille de votre polygone : \"))\npolygone(longueur, n_cotes)\n \ndone()\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 10 </h3>\n\nCompléter le programme pour avoir un programme qui demande un nombre à l’utilisateur⋅trice et qui dessine un carré ayant cette longueur comme côté.\n\n" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "from turtle import *\n\nl = int(input(\"La taille de votre carré : \"))\n\nfor _ in range(4):\n forward(l)\n right(90)\n\ndone()" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "# 🟥 Fin\n\n<div class=\"alert alert-danger\" style=\"border-left:5px solid #a94442;border-radius: 5px;\">\n \n- **Ne pas Oublier de sauvegarder son travail.**\n \n- **Pour effectuer** une sauvegarde personnelle du document obtenu :\n - utilisez le menu `Fichier / Enregistrer sous…`.\n - nomez le fichier `variables1.ipynb`\n - choisissez de sauver votre fichier dans `Documents/1IN/Programmation/Les_variables`.\n\n </div>\n\n---\n\n#### Remarque générale\n\nCe document c'est inspiré des notebook trouvé sur\n- Les ressources pédagogiques du catalogue modulo https://modulo-info.ch/. \n- Les ressources pédagogiques du [Lycée Mounier](https://info-mounier.fr/snt/python/) \n\nLe notebook est sous license Creative Commons [BY-NC-SA](https://creativecommons.org/licenses/?lang=fr)\n" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "" + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Notebooks/06_Les_conditions_partie1.ipynb b/Notebooks/06_Les_conditions_partie1.ipynb index a08d487007ffc9e9e135e367c5e460162619d514..e6bff117cd982c4a43b34f20d997985934ece168 100644 --- a/Notebooks/06_Les_conditions_partie1.ipynb +++ b/Notebooks/06_Les_conditions_partie1.ipynb @@ -33,7 +33,7 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], "source": "print(\"10\" > 2)" @@ -52,10 +52,10 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], - "source": "a = 5\nb = 18 \nc = 12.3\nmot1=\"Hello\"\nmot2=\"World\"\n# L'instruction suivante va afficher ...\nprint(a > b)\n# L'instruction suivante va afficher ...\nprint(b//a == 3)\n# L'instruction suivante va afficher ...\nprint(b%a == 3)\n# L'instruction suivante va afficher ...\nprint(a - b > 2)\n# L'instruction suivante va afficher ...\nprint(type(c) == float)\n# L'instruction suivante va afficher ...\nprint(mot1 != mot2)\n# L'instruction suivante va afficher ...\nprint(mot1 < mot2)\n# L'instruction suivante va afficher ...\nprint(mot1 > 2)\n# L'instruction suivante va afficher ...\nprint(\"a\" > \"b\")" + "source": "a = 5\nb = 18 \nc = 12.3\nmot1=\"Hello\"\nmot2=\"World\"\n# L'instruction suivante va afficher ...\nprint(a > b)\n# L'instruction suivante va afficher ...\nprint(b//a == 3)\n# L'instruction suivante va afficher ...\nprint(b%a == 3)\n# L'instruction suivante va afficher ...\nprint(a - b > 2)\n# L'instruction suivante va afficher ...\nprint(type(c) == float)\n# L'instruction suivante va afficher ...\nprint(mot1 != mot2)\n# L'instruction suivante va afficher ...\nprint(mot1 < mot2)\n# L'instruction suivante va afficher ...\nprint(\"a\" > \"b\")\n# L'instruction suivante va afficher ...\nprint(mot1 > 2)" }, { "cell_type": "markdown", @@ -66,7 +66,7 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], "source": "# Variable x\nx = 3\nprint('x =', x)\n\n# 6 exemples de comparaisons\nprint('(x < 2) =', x < 2)\n\n\n\n\n" @@ -93,7 +93,7 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], "source": "x = 2 # affectation\nx == 2 # comparaison\n" @@ -131,7 +131,7 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], "source": "n = int(input(\"Quelle est ta moyenne générale au premier semestre\"))\n\nif n >= 5.3 :\n print(\"Bravo, tu peux faire un extra-muros!\")" @@ -155,7 +155,7 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], "source": "n = int(input('Entrez un nombre: '))\n\nif n > 0:\n print('positif')\nelse:\n print('négatif')" @@ -163,27 +163,32 @@ { "cell_type": "markdown", "metadata": {}, - "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 3 </h3>\n\n1. Complète le programme ci-dessous qui affiche `C'est un triangle rectancle` ou `Ce n'est pas un triangle rectancle` en fonction des longeurs des côtés du triangle rentré.\n\n*Rappel : Selon la réciproque du théorème de Pythagore, un triangle de longeur $a$, $b$ et $c$ ($c$ le plus grand côté) est rectangle si $a^2+b^2=c^2$*" + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 3 </h3>\n\n1. Complètez le programme ci-dessous qui affiche `C'est un triangle rectancle` ou `Ce n'est pas un triangle rectancle` en fonction des longeurs des côtés du triangle rentré.\n\n2. Testez votre programme pour vérifier si le triangle où a=9, b=12 et c= 15 est un triangle rectangle.\n\n*Rappel : Selon la réciproque du théorème de Pythagore, un triangle de longeur $a$, $b$ et $c$ ($c$ le plus grand côté) est rectangle si $a^2+b^2=c^2$*" }, { "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], - "source": "a = floatinput((\"La longeur du côté a vaut : \"))\nb = floatinput((\"La longeur du côté a vaut : \"))\nc = floatinput((\"La longeur du côté a vaut : \"))\nif ... :\n print(\"...\")\nelse:\n print(\"...\")" + "source": "a = float(input(\"La longeur du côté a vaut : \"))\nb = float(input(\"La longeur du côté a vaut : \"))\nc = float(input(\"La longeur du côté a vaut : \"))\nif ... :\n print(\"...\")\nelse:\n print(\"...\")" + }, + { + "cell_type": "raw", + "metadata": {}, + "source": "Le triangle où a=9, b=12 et c= 15 est-il un triangle rectangle?\n\n Réponse : " }, { "cell_type": "markdown", "metadata": {}, - "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 4 </h3>\n\nComplétez le programme qui demande son âge à l'utilisatrice et affiche si elle est mineure ou majeure.\n\nRappel : la fonction `int` transforme la réponse textuelle du `input` en nombre entier.\n\n" + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 4 </h3>\n\nComplétez le programme qui demande son âge à l'utilisatrice et affiche `vous êtes majeure` si elle est mineure ou `vous êtes mineure` dans le cas contraire.\n\n*Rappel : la fonction `int` transforme la réponse textuelle du `input` en nombre entier.*\n\n" }, { "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], "source": "age = int(input(\"Bonjour, quel est votre âge ?\"))\n\n" @@ -206,7 +211,7 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], "source": "n = int(input('Entrez un nombre: '))\n\nif n > 0:\n print('positif')\nelif n < 0:\n print('négatif')\nelse:\n print('zéro')\n" @@ -220,7 +225,7 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], "source": "# !!! Exemple à éviter !!!!\nn = int(input('Entrez un nombre: '))\n\nif n > 0:\n print('positif')\nelse:\n if n < 0:\n print('négatif')\n else:\n print('zéro')\n" @@ -234,10 +239,10 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], - "source": "# Programme A\na = 7\nb = 12\nif a > 5:\n b = b - 4\nif b >= 10:\n b = b + 1" + "source": "# Programme A\na = 7\nb = 12\nif a > 5:\n b = b - 4\nif b >= 8:\n b = b + 1" }, { "cell_type": "raw", @@ -253,10 +258,10 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], - "source": "# Programme B\na = 7\nb = 12\nif a > 5:\n b = b - 4\nelif b >= 10:\n b = b + 1" + "source": "# Programme B\na = 7\nb = 12\nif a > 5:\n b = b - 4\nelif b >= 8:\n b = b + 1 " }, { "cell_type": "raw", @@ -272,7 +277,7 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], "source": "# Programme C\na = 7\nb = 12\nif a > 5:\n b = b - 4\nelse:\n b = b + 1" @@ -281,7 +286,7 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], "source": "La variable b vaut : " @@ -295,7 +300,7 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], "source": "# Programme D\na = 10\nif a < 5:\n a = 20\nelif a < 100:\n a = 500\nelse:\n a = 0" @@ -314,7 +319,7 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], "source": "a = 10\nif a == 5:\na = 2" @@ -328,7 +333,7 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], "source": "a = 10\nelif a == 5:\n a = 2" @@ -342,25 +347,11 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], "source": "a = 10\nif a = 5:\n a == 2" }, - { - "cell_type": "markdown", - "metadata": {}, - "source": "**Programme D**" - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "trusted": true - }, - "outputs": [], - "source": "a = 10\nif a == 5:\na = 2" - }, { "cell_type": "markdown", "metadata": {}, @@ -375,10 +366,10 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], - "source": "a = float(input(\"Entrer le coefficient a = \"))\nb = float(input(\"Entrer le coefficient a = \"))\nc = float(input(\"Entrer le coefficient a = \"))\ndelta = ...\nif ... :\n x1 = ...\n x2 = ...\n print(\"Deux solutions, x1= \",x1, \"; x2 = \", x2)\nelif ... :\n x = ...\n print(\"...\")\nelse :\n print(\"...\")" + "source": "a = ...(input(\"Entrer le coefficient a = \"))\nb = ...(input(\"Entrer le coefficient a = \"))\nc = ...(input(\"Entrer le coefficient a = \"))\ndelta = ...\nif ... :\n x1 = ...\n x2 = ...\n print(\"Deux solutions, x1= \",x1, \"; x2 = \", x2)\nelif ... :\n x = ...\n print(\"...\")\nelse :\n print(\"...\")" }, { "cell_type": "raw", @@ -388,13 +379,13 @@ { "cell_type": "markdown", "metadata": {}, - "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 8 </h3>\n\nÉcrivez un programme qui demande à l'utilisateur·ice s'il faut dessiner un triangle, un cercle ou un carré, puis qui fait le bon dessin.\n\n" + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 8 </h3>\n\nÉcrivez un programme qui demande à l'utilisateur·ice s'il faut dessiner un triangle, un cercle ou un carré de dimension 100, puis qui fait le bon dessin.\n\n" }, { "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], "source": "from turtle import *\n\n\n\n\n\ndone()" @@ -408,7 +399,7 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], "source": "def temperature(t):\n ...\n \n \n \n \ntemp = int(input(\"Entrez une température entre -20 et 50 : \"))\ntemperature(temp)" @@ -422,7 +413,7 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], "source": "# programme à compléter\n\n\n" @@ -436,7 +427,7 @@ "cell_type": "code", "execution_count": null, "metadata": { - "trusted": true + "trusted": false }, "outputs": [], "source": "age == 18\nrevenu == 25000\n\nif age >= 18\nif revenu < 25000\nprint(\"Vous êtes éligible à la subvention.\")\nelif revenu < 26000\nprint(\"Vous êtes presque éligible à la subvention, vous gagnez 1'000.- de trop.\")\nelse:\nprint(\"Vous n'êtes pas éligible à cause de vos revenus trop élevés.\")\nelse:\nif revenu < 25000\nprint(\"Vous n'êtes pas éligible à cause de votre âge, mais le seriez si vous étiez majeur·e.\")\nelse:\nprint(\"Vous n'êtes pas éligible à cause de vos revenus trop élevés et de votre âge.\")\n \n" diff --git a/Notebooks/06_Les_conditions_partie1_correction.ipynb b/Notebooks/06_Les_conditions_partie1_correction.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..d01bf9682d9013657c9c5f6ae3f2cb3cd5ea90c3 --- /dev/null +++ b/Notebooks/06_Les_conditions_partie1_correction.ipynb @@ -0,0 +1,554 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-danger\"> \n \n# Cours avec solution\n</div>\n\n<div class = \"alert alert-block alert-warning\"> \n\n### A faire avant de commençer\n**Cliquez sur Exécuter tout** dans le menu **Cellule**.\n</div>" + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false + }, + "source": "# 6 - Les Conditions, partie 1\n\nDans ce chapitre, nous allons voir comment un programme peut faire des choix, et comment il peut exécuter du code de façon sélective.\n\n<blockquote class=\"alert alert-info\" style=\"background-color:rgb(220,240,255); margin:10px 10%;\">\n <p><span style=\"font-size:1.5em\">❔</span> C'est quoi une instruction conditionnelle? Exécutez la cellule ci-dessous pour voir une petite introduction sur la notion de type d'instruction conditionnelle</p>\n</blockquote>\n\n<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/c0cm031r_eo?si=Apy9aC8a9HoHcHfv\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen></iframe>" + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false + }, + "source": "## I) Comparaisons\n\nUn programme doit parfois comparer deux valeurs.\nPython connait six types de comparaisons :\n\n- plus petit (`<`),\n- plus petit ou égal (`<=`),\n- égal (`==`),\n- différent (`!=`),\n- plus grand (`>`),\n- plus grand ou égal (`>=`).\n\nDans des formules mathématiques nous utilisons les symboles ≤, ≥ et ≠. En Python vous devez utiliser deux symboles: `<=`, `>=` et `!=` à la place.\n\nLe résultat d'une comparaison est une valeur **booléenne**, soit `True` (vrai) soit `False` (faux).\n\n\n**Remarque** Il est impossible de comparer des données de différentes nature (par exemple une chaîne de caractère avec un nombre)\n\n" + }, + { + "cell_type": "markdown", + "metadata": { + "editable": false + }, + "source": "<h3 style=\"color:chocolate;background-color:papayawhip;\" > <i class=\"fa fa-question\" aria-hidden=\"true\"> </i> Quizz </h3> \n \nQu'affiche le programme suivant " + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "print(\"10\" > 2)" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<details>\n<summary style=\"border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8\"> \nRéponse\n</summary> \n\n<div style=\"border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8\"> Une erreur car il est impossible de comparer la chaîne de caractère \"10\" (type str) avec le nombre 2 (type int).\n</div>\n</details>\n " + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 2 </h3>\n\n1. Remplace les `...` de chaque commentaire avec la valeur qui devrait être affichée.\n\n*Indication: chaque print affiche un `bool` : `True` ou `False`*" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "a = 5\nb = 18 \nc = 12.3\nmot1=\"Hello\"\nmot2=\"World\"\n# L'instruction suivante va afficher False\nprint(a > b)\n# L'instruction suivante va afficher True\nprint(b//a == 3)\n# L'instruction suivante va afficher True\nprint(b%a == 3)\n# L'instruction suivante va afficher False\nprint(a - b > 2)\n# L'instruction suivante va afficher True\nprint(type(c) == float)\n# L'instruction suivante va afficher True\nprint(mot1 != mot2)\n# L'instruction suivante va afficher True\nprint(mot1 < mot2)\n# L'instruction suivante va afficher False\nprint(\"a\" > \"b\")\n# L'instruction suivante va afficher une erreur car on ne peut \n# pas comparer une chaîne de caractère avec un nombre\nprint(mot1 > 2)\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "2. Exécute le programme ci-dessus et corrige, si besoin, les commentaires afin qu'ils correspondent aux valeurs affichées\n\n<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 2 </h3>Testez les lignes ci-dessous et ajoutez des exemples avec les autres 5 comparateurs.\n\n" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "# Variable x\nx = 3\nprint('x =', x)\n\n# 6 exemples de comparaisons\nprint('(x < 2) =', x < 2)\n\n\n\n\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "# Variable x\nx = 3\nprint('x =', x)\n\n# 6 exemples de comparaisons\nprint('(x < 2) =', x < 2)\nprint('(x == 5) =', x ==5)\nprint('(x <= 5) =', x <=5)\nprint('(x >= 5) =', x >=5)\nprint('(x > 5) =', x >5)\nprint('(x != 5) =', x !=5)\n" + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false + }, + "source": "<h3 style=\"color:chocolate;background-color:papayawhip;\" > <i class=\"fa fa-question\" aria-hidden=\"true\"> </i> Quizz </h3> \n \nL'expression `x == 2` : \n\n A) <input type=\"checkbox\" > met la valeur 2 dans la variable x\n \n B) <input type=\"checkbox\" > compare deux valeurs\n \n C) <input type=\"checkbox\" > affecte la variable x avec une valeur\n \n D) <input type=\"checkbox\" > retourne True ou False" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<details>\n<summary style=\"border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8\"> \nRéponse\n</summary> \n\n<div style=\"border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8\">D) retourne True ou False\n</div>\n</details>\n " + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "!!! warning \nIl ne faut pas confondre l'opérateur d'affectation (`x = 2`) avec l'opérateur de comparaison (`x == 2`)\n!!!\n\n<h3 style=\"color:chocolate;background-color:papayawhip;\" > <i class=\"fa fa-question\" aria-hidden=\"true\"> </i> Quizz </h3> \n \n\n\nQue se passe-t-il si vous échangez les deux éléments dans `x == 2` ? \nEt si vous échangez les deux éléments dans `x = 2` ?\n\nEssayer pour voir..." + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "x = 2 # affectation\nx == 2 # comparaison\n" + }, + { + "cell_type": "raw", + "metadata": {}, + "source": "Ma réponse : " + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<details>\n<summary style=\"border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8\"> \nRéponse\n</summary> \n\n<div style=\"border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8\">Si on écrit 2 = x à la place de x = 2 il y aura une erreur car on ne peut affecter x à 2. Dans l'autre cas, c'est égal de tester si x est égal à 2 (x==2) ou de tester si 2 est égal à x (2==x)\n</div>\n</details>\n " + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "breakpoint" + ] + }, + "source": "#### Ctrl+enter pour continuer ..........." + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "## II) Conditions (`if`)\n\nAfin d'exécuter du code de façon sélective, on utilise le mot-clé `if`.\n\nNous allons voir que :\n\n- le mot-clé `if` permet une exécution conditionnelle,\n- le mot-clé `if-else` permet de choisir entre deux alternatives,\n- le mot-clé `elif` (else if) permet d'ajouter différentes conditions.\n\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "### Exécution conditionnelle `if`\n\nLa structure `if` ci-dessous permet d'exécuter une action seulement si `condition` est `True`.\n\n``` python\nif condition:\n action\n```\n\n#### Exemple \n\nLe programme suivant demande la moyenne générale obtenue au premier semestre est affiche `Bravo, tu peux faire un extra-muros!\")` si la moyenne est supérieure ou égale à 5.3.\n" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "n = int(input(\"Quelle est ta moyenne générale au premier semestre\"))\n\nif n >= 5.3 :\n print(\"Bravo, tu peux faire un extra-muros!\")" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:chocolate;background-color:papayawhip;\" > <i class=\"fa fa-question\" aria-hidden=\"true\"> </i> Quizz </h3> \n \n\nEn Python, `if` est suivi\n\nA) <input type=\"checkbox\" > d'un bloc\n\nB) <input type=\"checkbox\" > d'une condition\n\nC) <input type=\"checkbox\" > de parenthèses\n\nD) <input type=\"checkbox\" > d'un deux-points\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<details>\n<summary style=\"border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8\"> \nRéponse\n</summary> \n\n<div style=\"border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8\">B) d'une condition (Et ensuite de D), un deux-points)\n</div>\n</details>\n \n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "### Choix binaire `if - else`\n\nLa structure `if - else` ci-dessous permet d'exécuter une **action_1** seulement si une **condition** est vraie et une **action_2** sinon : \n\n``` python\nif condition:\n action_1\nelse:\n action_2\n```\n\n#### Exemple 1\nDans l'exemple ci-dessous, on affiche si un nombre entré est positif ou négatif :\n\n" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "n = int(input('Entrez un nombre: '))\n\nif n > 0:\n print('positif')\nelse:\n print('négatif')" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 3 </h3>\n\n1. Complète le programme ci-dessous qui affiche `C'est un triangle rectancle` ou `Ce n'est pas un triangle rectancle` en fonction des longeurs des côtés du triangle rentré.\n\n2. Testez votre programme pour vérifier si le triangle où a=9, b=12 et c= 15 est un triangle rectangle.\n\n*Rappel : Selon la réciproque du théorème de Pythagore, un triangle de longeur $a$, $b$ et $c$ ($c$ le plus grand côté) est rectangle si $a^2+b^2=c^2$*" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "a = float(input(\"La longeur du côté a vaut : \"))\nb = float(input(\"La longeur du côté a vaut : \"))\nc = float(input(\"La longeur du côté a vaut : \"))\nif a**2 + b**2 == c**2 :\n print(\"C'est un triangle rectancle\")\nelse:\n print(\"Ce n'est pas un triangle rectange\")" + }, + { + "cell_type": "raw", + "metadata": {}, + "source": "Le triangle où a=9, b=12 et c= 15 est-il un triangle rectangle?\n\n Réponse : OUI" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 4 </h3>\n\nComplétez le programme qui demande son âge à l'utilisatrice et affiche `vous êtes majeure` si elle est mineure ou `vous êtes mineure` dans le cas contraire.\n\n*Rappel : la fonction `int` transforme la réponse textuelle du `input` en nombre entier.*\n\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "age = int(input(\"Bonjour, quel est votre âge ?\"))\n\nif age < 18:\n print(\"Vous êtes mineure\")\nelse:\n print(\"Vous êtes majeure\")" + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [ + "breakpoint" + ] + }, + "source": "#### Ctrl+enter pour continuer ..........." + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "### Choix multiple (`if - elif - else`)\n\nLe mot-clé `elif` est une contraction de **else if** et permet de continuer à tester d'autres conditions : \n\n``` python\nif condition1 :\n action_1\nelif condition2 :\n action_2\nelse:\n action_3\n```\n\nDans l'exemple ci-dessous, on affiche si un nombre entré est positif, négatif ou nul :\n\n" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "n = int(input('Entrez un nombre: '))\n\nif n > 0:\n print('positif')\nelif n < 0:\n print('négatif')\nelse:\n print('zéro')\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "Sans le mot-clé `elif` nous devrions mettre le bloc `if` à l'intérieur du bloc `else` en indentation.\nAvec multiples conditions, les blocs se décalent de plus en plus et rendent le programme illisible, comme ci-dessous.\n\n" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "# !!! Exemple à éviter !!!!\nn = int(input('Entrez un nombre: '))\n\nif n > 0:\n print('positif')\nelse:\n if n < 0:\n print('négatif')\n else:\n print('zéro')\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 5 </h3>\nPour chacun des programme:\n\n1. Sans exécuter les programme, donnez la valeur des variables demandées. \n2. Vérifier votre réponse en ajoutant un print à la fin des programmes et en les éxecutants.\n\n<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>\n\n**Programme A**" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "# Programme A\na = 7\nb = 12\nif a > 5:\n b = b - 4\nif b >= 8:\n b = b + 1\n \nprint(b)" + }, + { + "cell_type": "raw", + "metadata": {}, + "source": "La variable b vaut : 9" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "**Programme B**" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "# Programme B\na = 7\nb = 12\nif a > 5:\n b = b - 4\nelif b >= 8:\n b = b + 1 \n \nprint(b)" + }, + { + "cell_type": "raw", + "metadata": {}, + "source": "La variable b vaut : 8" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "**Programme C**" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "# Programme C\na = 7\nb = 12\nif a > 5:\n b = b - 4\nelse:\n b = b + 1\n \nprint(b)" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "La variable b vaut : 8" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "**Programme D**" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "# Programme D\na = 10\nif a < 5:\n a = 20\nelif a < 100:\n a = 500\nelse:\n a = 0\n \nprint(a)" + }, + { + "cell_type": "raw", + "metadata": {}, + "source": "La variable a vaut : 500" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 6 </h3>\n\nLes programmes suivants sont-ils valides (on ne demande pas ce qu’ils font) ? S’ils sont invalides, corrigez les.\n\n**Programme A**" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "a = 10\nif a == 5:\na = 2" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "# version corrigée\na = 10\nif a == 5:\n a = 2 # oubli de l'indentation" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "**Programme B**" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "a = 10\nelif a == 5:\n a = 2" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "# version corrigée\na = 10\nif a == 5: # elif seulement possible après un if\n a = 2" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "**Programme C**" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "a = 10\nif a = 5:\n a == 2" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "# version corrigée\na = 10\nif a == 5: # confusion = avec ==\n a = 2" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 7 </h3>\n\n1. Complétez le programme ci-dessous qui demande à l'utilisateur·ice les coefficients d'une équation du second degré $ax^2+bx+c=0$ et qui affiche les solutions.\n\n2. Testez votre programme sur les équations $5x^2-5x-15=0$, $5x^2-5x+15=0$ et $10x^2-20x+10=0$. " + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "!!! info utiliser des fonctions mathématiques comme la fonction racine carrée $\\sqrt{x}$.\nPour calculer la racine carrée d'un nombre $\\sqrt{x}$, il faut utiliser la fonction `sqrt` du module `math`. Pour ce faire, votre programme doit commencer par `from math import sqrt` (pour importer la fonction `sqrt` du module `math`). Pour l'utiliser, il suffit de mettre la valeur dont on veut trouver la racine en argument de la fonction `sqrt`. Par exemple, l'instruction `print(sqrt(25))` affichera 5.\n!!!\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "a = float(input(\"Entrer le coefficient a = \"))\nb = float(input(\"Entrer le coefficient a = \"))\nc = float(input(\"Entrer le coefficient a = \"))\ndelta = b**2 - 4*a*c\nif delta > 0 :\n x1 = (-b-delta)/(2*a)\n x2 = (-b+delta)/(2*a)\n print(\"Deux solutions, x1= \",x1, \"; x2 = \", x2)\nelif delta == 0 :\n x = (-b)/(2*a)\n print(\"Une solution, x=\", x)\nelse :\n print(\"Aucune solution\")" + }, + { + "cell_type": "raw", + "metadata": {}, + "source": "Quel est l'ensemble des solution de 5x²-5x-15=0?\n\n Réponse: S = {-32, 33}\n \n \nQuel est l'ensemble des solution de 5x²+5x+15=0=0?\n\n Réponse: S = {}\n \n \nQuel est l'ensemble des solution de 10x²-20x+10=0?\n\n Réponse: S = {1}\n " + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 8 </h3>\n\nÉcrivez un programme qui demande à l'utilisateur·ice s'il faut dessiner un triangle, un cercle ou un carré de dimension 100, puis qui fait le bon dessin.\n\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "from turtle import *\n\nforme = input(\"Quelle forme voulez-vous dessiner? \")\n\nif forme == \"triangle\":\n for _ in range(3):\n forward(100)\n left(120)\nelif forme == \"carre\":\n for _ in range(4):\n forward(100)\n left(90)\nelif forme == \"cercle\":\n circle(100)\nelse:\n print(\"La forme demandée n'est pas écrite correctement (choix possible triangle/carre*cercle)\")\n \ndone()" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 9 </h3> \n\nDéfinissez une fonction `temperature()` qui prend en paramètre une température entre -20 et 50 et affiche si cette température est :\n* glaciale\n* froide\n* normale\n* chaude\n* bouillante\n\n(à vous de choisir les bornes de chaque catégorie)\n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "def temperature(t):\n if t < -5 :\n print(\"glaciale\")\n elif t < 10:\n print(\"froide\")\n elif t < 20:\n print(\"normale\")\n elif t < 35:\n print(\"chaude\")\n else:\n print(\"bouillante\")\n \ntemp = int(input(\"Entrez une température entre -20 et 50 : \"))\ntemperature(temp)" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 10 </h3> \n\nDéfinissez une fonction `compare` qui prend en paramètres deux nombres `a` et `b`, puis qui dit lequel est le plus grand :\n- si le premier nombre est plus grand que le deuxième, le programme affichera « Le premier ! »\n- si le deuxième nombre est plus grand que le premier, le programme affichera « Le deuxième ! »\n- s'ils sont égaux, le programme affichera « Ils sont égaux. ».\n\n\nTestez-la avec deux nombres de votre choix." + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "trusted": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": "Le deuxième !\nLe premier !\nIls sont égaux.\n" + } + ], + "source": "def compare(a,b):\n if a > b:\n print(\"Le premier !\")\n elif a < b:\n print(\"Le deuxième !\")\n else:\n print(\"Ils sont égaux.\")\n\n# test de la fonction\ncompare(3, 8)\ncompare(11, 8)\ncompare(22, 22)" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 11 </h3>\nCorrigez le programme suivant :" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": true + }, + "outputs": [], + "source": "age == 18\nrevenu == 25000\n\nif age >= 18\nif revenu < 25000\nprint(\"Vous êtes éligible à la subvention.\")\nelif revenu < 26000\nprint(\"Vous êtes presque éligible à la subvention, vous gagnez 1'000.- de trop.\")\nelse:\nprint(\"Vous n'êtes pas éligible à cause de vos revenus trop élevés.\")\nelse:\nif revenu < 25000\nprint(\"Vous n'êtes pas éligible à cause de votre âge, mais le seriez si vous étiez majeur·e.\")\nelse:\nprint(\"Vous n'êtes pas éligible à cause de vos revenus trop élevés et de votre âge.\")\n \n" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "<div class = \"alert alert-block alert-warning\"> \n\n### Solution\n</div>" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "trusted": false + }, + "outputs": [], + "source": "age == 18\nrevenu == 25000\n\nif age >= 18\n if revenu < 25000\n print(\"Vous êtes éligible à la subvention.\")\n elif revenu < 26000\n print(\"Vous êtes presque éligible à la subvention, vous gagnez 1'000.- de trop.\")\n else:\n print(\"Vous n'êtes pas éligible à cause de vos revenus trop élevés.\")\nelse:\n if revenu < 25000\n print(\"Vous n'êtes pas éligible à cause de votre âge, mais le seriez si vous étiez majeur·e.\")\n else:\n print(\"Vous n'êtes pas éligible à cause de vos revenus trop élevés et de votre âge.\")\n " + } + ], + "metadata": { + "celltoolbar": "Éditer les Méta-Données", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}