{"cells":[{"metadata":{},"cell_type":"markdown","source":"# 5. Les variables 2 (entrée-sortie, type)\n"},{"metadata":{},"cell_type":"markdown","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### 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"},{"metadata":{},"cell_type":"markdown","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"},{"metadata":{},"cell_type":"raw","source":"Ma réponse: "},{"metadata":{},"cell_type":"markdown","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>"},{"metadata":{},"cell_type":"markdown","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>"},{"metadata":{},"cell_type":"raw","source":"Ma réponse: "},{"metadata":{},"cell_type":"markdown","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>"},{"metadata":{},"cell_type":"markdown","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>"},{"metadata":{},"cell_type":"raw","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 : "},{"metadata":{},"cell_type":"markdown","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>"},{"metadata":{"trusted":false},"cell_type":"markdown","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"},{"metadata":{"trusted":true},"cell_type":"code","source":"x = input('Entrez votre nom: ')\nprint('Bonjour', x)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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"},{"metadata":{"trusted":true},"cell_type":"code","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","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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 `\"Bienvenu Prénom Nom\"`\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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"},{"metadata":{"trusted":true},"cell_type":"code","source":"x = input('Entrez un nombre: ')\nprint(type(x))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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>"},{"metadata":{},"cell_type":"markdown","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"},{"metadata":{"trusted":true},"cell_type":"code","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","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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:"},{"metadata":{"trusted":true},"cell_type":"code","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)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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"},{"metadata":{"trusted":true},"cell_type":"code","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)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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"},{"metadata":{"trusted":true},"cell_type":"code","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 =', ...)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 4 </h3>Complétez le programme pour afficher le périmètre et la diagonale.\n\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"print('Rectangle')\na = float(input('Entrez la largeur: '))\nb = float(input('Entrez la longueur: '))\n\nprint('surface =', a * b)\nprint('périmètre =', ...)\nprint('diagonale =', ...)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"<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** "},{"metadata":{"trusted":true},"cell_type":"code","source":"int(input(\"premier nombre: \"))\nint(input(\"deuxième nombre: \"))\nprint(premier*deuxième)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Programme B**"},{"metadata":{"trusted":true},"cell_type":"code","source":"x=input(\"premier nombre: \")\ny=input(\"deuxième nombre: \")\nx*y","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Programme C**"},{"metadata":{"trusted":true},"cell_type":"code","source":"x=int(\"premier nombre : \")\ny=int(\"deuxième nombre: \")\nz=x*y\nprint(“z”)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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"},{"metadata":{"trusted":true},"cell_type":"code","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 :\",___________)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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 deux nombres n, et écrire les n premiers multiples de 100. Corriger les erreurs de chaque programme afin qu’il fonctionne.\n\n\n**Programme A** "},{"metadata":{"trusted":true},"cell_type":"code","source":"n = int(input(“Nombre de multiples: ”))\nfor _ in range(n):\n print(x)\n x+100\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Programme B**"},{"metadata":{"trusted":true},"cell_type":"code","source":"x = int(input(“Nombre de multiples: “))\nn = 100\nfor _ in range(x):\n print(x)\n x = x+100","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Programme C**"},{"metadata":{"trusted":true},"cell_type":"code","source":"x = int(input(“Nombre de multiples: “))\nn = 100\nfor _ in range(x):\n print(n)\nn = n+n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Programme D**"},{"metadata":{"trusted":true},"cell_type":"code","source":"x = int(input(“Nombre de multiples:”))\nfor _ in range(x):\n n = 100\n print(n)\n n = n+100","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Programme E**"},{"metadata":{"trusted":true},"cell_type":"code","source":"x=int(input(“Nombre de multiples:”))\nn = 100\nfor _ in range (x):\n n = n + 100\n print(n)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 8 </h3>\n\nCpméàtez 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."},{"metadata":{"trusted":true},"cell_type":"code","source":"n = input(...)\nmot = input(...)\nfor #à compléter\n #à compléter","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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 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)`."},{"metadata":{"trusted":true},"cell_type":"code","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()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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 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:"},{"metadata":{"trusted":true},"cell_type":"code","source":"# votre programme complet...\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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 et qui dessine un carré ayant cette longueur comme côté.\n\n"},{"metadata":{"trusted":true},"cell_type":"code","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()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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"},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"}},"nbformat":4,"nbformat_minor":2}
{"cells":[{"metadata":{},"cell_type":"markdown","source":"<div style=\"padding:20px;background-color:papayawhip;\" >\n \n<h3 style=\"color:chocolate\"> <i class=\"fa fa-info\" aria-hidden=\"true\"> </i> Remarque introductive <i class=\"fa fa-info\" aria-hidden=\"true\"></h3> \n<p> Ce fichier est fait pour être lu sur le site <a href=\"https://notebook.basthon.fr/\"><img src='https://notebook.basthon.fr/assets/efede5218c9087496f16.png' style=\"border: 0; display:inline; margin: 0 5px; height:30px\" alt=\"Basthon\"/></a>. <br>\n \nSi vous l'avez ouvert avec un autre programme, comme Jupyter notebook, vous riquez de rencontrer quelques bugs. <br>\nVeuillez cliquez sur <a href=\"https://notebook.basthon.fr/\">ce lien</a> et y charger ce fichier à l'aide du bouton \"Ouvrir\" <i class=\"fa fa-folder\" aria-hidden=\"true\"> </i>\n</p> \n</div>"},{"metadata":{},"cell_type":"markdown","source":"# 5. Les variables 2 (entrée-sortie, type)\n"},{"metadata":{},"cell_type":"markdown","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<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"},{"metadata":{"trusted":true},"cell_type":"code","source":"from IPython.display import HTML\nHTML(\"\"\"<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>\"\"\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### 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"},{"metadata":{},"cell_type":"markdown","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"},{"metadata":{},"cell_type":"raw","source":"Ma réponse: "},{"metadata":{},"cell_type":"markdown","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>"},{"metadata":{},"cell_type":"markdown","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>"},{"metadata":{},"cell_type":"raw","source":"Ma réponse: "},{"metadata":{},"cell_type":"markdown","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>"},{"metadata":{},"cell_type":"markdown","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>"},{"metadata":{},"cell_type":"raw","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 : "},{"metadata":{},"cell_type":"markdown","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>"},{"metadata":{"trusted":false},"cell_type":"markdown","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"},{"metadata":{"trusted":true},"cell_type":"code","source":"x = input('Entrez votre nom: ')\nprint('Bonjour', x)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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"},{"metadata":{"trusted":true},"cell_type":"code","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","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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 `\"Bienvenu Prénom Nom\"`\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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"},{"metadata":{"trusted":true},"cell_type":"code","source":"x = input('Entrez un nombre: ')\nprint(type(x))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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>"},{"metadata":{},"cell_type":"markdown","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"},{"metadata":{"trusted":true},"cell_type":"code","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","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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:"},{"metadata":{"trusted":true},"cell_type":"code","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)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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"},{"metadata":{"trusted":true},"cell_type":"code","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)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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"},{"metadata":{"trusted":true},"cell_type":"code","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 =', ...)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 4 </h3>Complétez le programme pour afficher le périmètre et la diagonale.\n\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"print('Rectangle')\na = float(input('Entrez la largeur: '))\nb = float(input('Entrez la longueur: '))\n\nprint('surface =', a * b)\nprint('périmètre =', ...)\nprint('diagonale =', ...)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"<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** "},{"metadata":{"trusted":true},"cell_type":"code","source":"int(input(\"premier nombre: \"))\nint(input(\"deuxième nombre: \"))\nprint(premier*deuxième)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Programme B**"},{"metadata":{"trusted":true},"cell_type":"code","source":"x=input(\"premier nombre: \")\ny=input(\"deuxième nombre: \")\nx*y","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Programme C**"},{"metadata":{"trusted":true},"cell_type":"code","source":"x=int(\"premier nombre : \")\ny=int(\"deuxième nombre: \")\nz=x*y\nprint(“z”)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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"},{"metadata":{"trusted":true},"cell_type":"code","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 :\",___________)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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 deux nombres n, et écrire les n premiers multiples de 100. Corriger les erreurs de chaque programme afin qu’il fonctionne.\n\n\n**Programme A** "},{"metadata":{"trusted":true},"cell_type":"code","source":"n = int(input(“Nombre de multiples: ”))\nfor _ in range(n):\n print(x)\n x+100\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Programme B**"},{"metadata":{"trusted":true},"cell_type":"code","source":"x = int(input(“Nombre de multiples: “))\nn = 100\nfor _ in range(x):\n print(x)\n x = x+100","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Programme C**"},{"metadata":{"trusted":true},"cell_type":"code","source":"x = int(input(“Nombre de multiples: “))\nn = 100\nfor _ in range(x):\n print(n)\nn = n+n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Programme D**"},{"metadata":{"trusted":true},"cell_type":"code","source":"x = int(input(“Nombre de multiples:”))\nfor _ in range(x):\n n = 100\n print(n)\n n = n+100","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Programme E**"},{"metadata":{"trusted":true},"cell_type":"code","source":"x=int(input(“Nombre de multiples:”))\nn = 100\nfor _ in range (x):\n n = n + 100\n print(n)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 8 </h3>\n\nCpméàtez 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."},{"metadata":{"trusted":true},"cell_type":"code","source":"n = input(...)\nmot = input(...)\nfor #à compléter\n #à compléter","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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 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)`."},{"metadata":{"trusted":true},"cell_type":"code","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()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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 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:"},{"metadata":{"trusted":true},"cell_type":"code","source":"# votre programme complet...\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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 et qui dessine un carré ayant cette longueur comme côté.\n\n"},{"metadata":{"trusted":true},"cell_type":"code","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()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","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"},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"}},"nbformat":4,"nbformat_minor":2}
<p> Ce fichier est fait pour être lu sur le site <ahref="https://notebook.basthon.fr/"><imgsrc='https://notebook.basthon.fr/assets/efede5218c9087496f16.png'style="border: 0; display:inline; margin: 0 5px; height:30px"alt="Basthon"/></a>. <br>
Si vous l'avez ouvert avec un autre programme, comme Jupyter notebook, vous riquez de rencontrer quelques bugs. <br>
Veuillez cliquez sur <ahref="https://notebook.basthon.fr/">ce lien</a> et y charger ce fichier à l'aide du bouton "Ouvrir" <iclass="fa fa-folder"aria-hidden="true"></i>
</p>
</div>
%% Cell type:markdown id: tags:
# 5. Les variables 2 (entrée-sortie, type)
# 5. Les variables 2 (entrée-sortie, type)
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## Types de Données
## Types de Données
Python 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.
Python 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.
<p><spanstyle="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>
Ecrire 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>
Ecrire 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>
`"Bienvenu Prénom Nom"`
`"Bienvenu Prénom Nom"`
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## Demander un nombre
## Demander un nombre
La fonction `input()` permet d'obtenir une entrée de l'utilisateur. Mais attention !
La fonction `input()` permet d'obtenir une entrée de l'utilisateur. Mais attention !
La valeur retournée est une chaine de caractères (de type string `str`). Nous pouvons le prouver avec la fonction `type()`.
La valeur retournée est une chaine de caractères (de type string `str`). Nous pouvons le prouver avec la fonction `type()`.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
x = input('Entrez un nombre: ')
x = input('Entrez un nombre: ')
print(type(x))
print(type(x))
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
<div class="alert alert-block alert-info">
<div class="alert alert-block alert-info">
<b>⚡ A retenir : </b> <br>
<b>⚡ A retenir : </b> <br>
Une 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.
Une 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.
</ul>
</ul>
</div>
</div>
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
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()`.
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()`.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
x = '1.5'
x = '1.5'
print(type(x)) # la variable x contient une chaîne
print(type(x)) # la variable x contient une chaîne
print(type(float(x))) # la fonction float(x) renvoie un nombre
print(type(float(x))) # la fonction float(x) renvoie un nombre
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
### Exemple
### Exemple
On 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:
On 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 id: tags:
%% Cell type:code id: tags:
``` python
``` python
#Demande à l'utilisateur deux nombres puis calcule et affiche leur somme
#Demande à l'utilisateur deux nombres puis calcule et affiche leur somme
nombre1 = input("Taper un premier nombre : ")
nombre1 = input("Taper un premier nombre : ")
nombre2 = input("Taper un deuxième nombre : ")
nombre2 = input("Taper un deuxième nombre : ")
moyenne = (nombre1 + nombre2)/2
moyenne = (nombre1 + nombre2)/2
print("La somme de ces deux nombres est ",moyenne)
print("La somme de ces deux nombres est ",moyenne)
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
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 !
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 !
Pour 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é :
Pour 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é :
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
#Demande à l'utilisateur deux nombres puis calcule et affiche leur somme
#Demande à l'utilisateur deux nombres puis calcule et affiche leur somme
nombre1 = float(input("Taper un premier nombre : ")) #float() permet de convertir la valeur entrée en flottant
nombre1 = float(input("Taper un premier nombre : ")) #float() permet de convertir la valeur entrée en flottant
nombre2 = float(input("Taper un deuxième nombre : "))
nombre2 = float(input("Taper un deuxième nombre : "))
moyenne = (nombre1 + nombre2)/2
moyenne = (nombre1 + nombre2)/2
print("La moyenne de ces deux nombres est ",moyenne)
print("La moyenne de ces deux nombres est ",moyenne)
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
<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.
<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.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
print('Circle')
print('Circle')
r = float(input('Entrez le rayon: '))
r = float(input('Entrez le rayon: '))
pi = 3.14
pi = 3.14
print()
print()
print('rayon =', r)
print('rayon =', r)
print('diamètre =', 2 * r)
print('diamètre =', 2 * r)
print('circonférence =', pi * 2 * r)
print('circonférence =', pi * 2 * r)
print('surface =', ...)
print('surface =', ...)
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
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.
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.
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> Exercice 4 </h3>Complétez le programme pour afficher le périmètre et la diagonale.
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> Exercice 4 </h3>Complétez le programme pour afficher le périmètre et la diagonale.
Chacun 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
Chacun 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
Chacun des programmes devrait demander à l’utilisateur deux nombres n, et écrire les n premiers multiples de 100. Corriger les erreurs de chaque programme afin qu’il fonctionne.
Chacun des programmes devrait demander à l’utilisateur deux nombres n, et écrire les n premiers multiples de 100. Corriger les erreurs de chaque programme afin qu’il fonctionne.
1. Tester le programme ci-dessus, puis modifiez le en définissant une fonction `polygone(lg, n)` qui permet de tracer des polygones 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)`.
1. Tester le programme ci-dessus, puis modifiez le en définissant une fonction `polygone(lg, n)` qui permet de tracer des polygones 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 id: tags:
%% Cell type:code id: tags:
``` python
``` python
from turtle import *
from turtle import *
n = 10
n = 10
angle = int(360 / n)
angle = int(360 / n)
for k in range(n):
for k in range(n):
forward(100)
forward(100)
right(angle)
right(angle)
done()
done()
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
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 puis trace ce polygone.
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 puis trace ce polygone.