{"cells":[{"metadata":{},"cell_type":"markdown","source":"# TD - Premier pas en Python\n\n## 1. La console\n\nLa __console__ est un endroit où l'on peut écrire du code en Python.\n\nLe code sera exécuté immédiatement dès validation de la ligne, c'est-à-dire dès que vous appuyer sur le bouton Run.\n\n### 1.1. À Faire\n\n1. Éxécuter le code suivant (_sans les >>>_) :\n\n```python\n>>> 5 + 2\n```"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"2. Quel est le résultat obtenu ?"},{"metadata":{},"cell_type":"markdown","source":"#### Bilan 1.1\n\n- A travers ce premier exemple, on constate que Python sait faire des calculs !!\n- Lorsque l'on appuie sur le bouton Run, python lit le code 5 + 2, calcule l'opération associée et restitue le résultat."},{"metadata":{},"cell_type":"markdown","source":"### 1.2. À Faire\n\n1. Écrire et exécuter successivement les instructions suivantes (_sans les >>> et ???_) `\n\n```python\n>>> 5 - 2\n???\n>>> 5 * 2\n???\n>>> 5 / 2\n???\n>>> 5 // 2\n???\n>>> 5 % 2\n???\n>>> 5 ** 2\n???\n```"},{"metadata":{},"cell_type":"markdown","source":"2. Quels sont les résultats obtenus ? Compléter le tableau suivant en décrivant ce que fait l'opérateur de l'instruction."},{"metadata":{},"cell_type":"markdown","source":"| Opérateur | Description |\n| :--: | :-- |\n| - | | \n| * | |\n| / | |\n| // | |\n| % | |\n| * | |"},{"metadata":{},"cell_type":"markdown","source":"#### Bilan 1.2\n\n- Python permet l'utilisation des opérateurs arithmétiques usuelles $+, -, *, /$ sur les entiers,\n- Python permet l'utilisation d'opérateurs arithmétiques avec une syntaxe spécifique comme $//, \\%, **$ "},{"metadata":{},"cell_type":"markdown","source":"### 1.3. À Faire\n\nExécuter le code suivant. Que constatez-vous ?\n\n```python\n>>> # 3 + 2\n???\n```"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### 1.4. À Faire\n\n1. En prenant votre âge à votre prochaine date d'anniversaire (en nombre d'années), écrire une instruction qui calcule le nombre de jours équivalents (on considère qu'une année correspond à 365 jours)"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"2. Sachant qu'à mon prochain anniversaire j'aurai 9490 jours, écrire une instruction qui calcule mon âge, en nombre d'années :"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"3. Sachant que mon logement se situe au 256 de la rue (dont je tairais le nom pour ne pas être localisé ;-)) et que toutes les maisons font 12 mètres et demi de longueur, à quelle distance se situe ma maison par rapport au début de la rue ?"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"#### Bilan 1.4\n\n- Outre des entiers, Python permet d'utiliser des nombres décimaux en utilisant le symbole \".\" pour séparer la partie entière et la partie décimale."},{"metadata":{},"cell_type":"markdown","source":"## 2. Les variables\n\nEn informatique, il est indispensable de conserver des informations de natures diverses. Par exemple, votre smartphone enregistre dans sa mémoire votre numéro de téléphone, les numéros de téléphones de vos contacts, vos messages (SMS), vos photos, vos applications, etc. Chacune de ces informations est stockée à un endroit précis dans la mémoire dans ce qu’on appelle une variable.\n\n### 2.1. Définition\n\n> Une __variable__ est un __espace de stockage__ de la mémoire (une case mémoire). Chaque variable est caractérisée par son __nom__, son __type__ et sa __valeur__.\n\n## 3. Valeur des variables\n\n### 3.1. Affecter une valeur à une variable\n\n#### 3.1.1. À Faire\n\nCopier et exécuter les instructions suivantes\n\n```python\n>>> a = 5\n>>> b = 2\n>>> a + b\n???\n```"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"#### Bilan 3.1.1\n\n1. La syntaxe pour déclarer et affecter une valeur a une variable est `nom_de_la_variable = valeur`\n2. Pour les instructions 1 et 2, Le signe `=` indique que la valeur 5 est affectée à la variable `a` et 2 à la variable `b`.\n3. Lorsque Python interprète l'instruction 3, il lit les valeurs associées aux variables et effectue l'opération."},{"metadata":{},"cell_type":"markdown","source":"## 4. Nom des variables\n\nChaque variable possède un nom qui permet d’identifier l’emplacement mémoire correspondant.\n\nDans le langage Python, il y a des règles à respecter pour nommmer les variables. Voici celles qui vous concernent :\n\n- __Règle 1__ : un nom ne peut contenir que des lettres __en minuscule__ (a-z), des chiffres (0 - 9) et le caractère _ (underscore).\n- __Règle 2__ : un nom ne peut pas commencer par un chiffre.\n- __Règle 3__ : les noms sont sensibles à la casse, cela signifie qu’il y a une distinction entre les minuscules et les majuscules : la variable nommée `nsi` est différente de la variable `Nsi`.\n- __Règle 4__ : il est préférable de toujours choisir un nom de variable représentatif : par exemple, si vous voulez stocker le nom d’une personne dans une variable, il est préférable de l’appeler nom plutôt que x.\n- __Règle 5__ : il est préférable de ne pas utiliser de caractères accentués dans le nom d’une variable (nous n’entrerons pas dans le pourquoi du comment)."},{"metadata":{},"cell_type":"markdown","source":"### 4.1. À Faire\n\n1. Quels sont les noms de variables incorrects parmi ceux proposés ? Vous indiquerez pourquoi.\n\n| Noms de variable | Correct ou Incorrect | Pourquoi (si Incorrect) |\n| :--: | :--: | :-- | \n| `prix achat` | | |\n| `prix_achat` | | |\n| `note` | | | \n| `2ndeG` | | |\n| `SecondeG` | | | \n| `Seconde:G`| | |\n| `dix-huit` | | |"},{"metadata":{},"cell_type":"markdown","source":"2. Proposez un nom de variable permettant de stocker :\n\n| Variable | Nom de variable |\n| :-- | :--: |\n| le nombre de personnes aux yeux bleus de Premiere G | |\n| le tarif d’un repas au self | |\n| l’aire d’un triangle (il n’y a qu’une seule figure) | |\n| la note à un devoir d’anglais | |"},{"metadata":{},"cell_type":"markdown","source":"## 5. Type des variables\n\nDans les travaux à faire précédent, nous avons manipulé essentiellement des entiers.\n\nPython gère différents types de variables. \n\nL'objet de cette section est d'expliciter la notion de type et les opérations associées :\n\n- le type __entier__ : il désigne les entiers relatifs (positifs ou négatifs). En Python on parle du type `int` (pour integer qui signifie « entier » en anglais) ;\n- le type __flottant__ : il désigne les nombres décimaux (à virgule). En Python on parle du type `float` (pour floating qui signifie « flottant » en anglais)\n- le type __chaîne de caractères__ : il désigne toute suite ordonnée de caractères. En Python on parle du type `str` (pour string qui signifie « chaîne » en anglais).\n\n### 5.1. À Faire\n\nIndiquez le type des variables permettant de stocker (sur votre smartphone) les informations suivantes :\n\n| Variable | Type identifié |\n| :--: | :-- |\n| le nom d’un contact | |\n| le numéro de téléphone d’un contact | |\n| un SMS | |\n| l’heure du réveil | |\n| le code de votre partage de connexion Wi-Fi | |\n| le pourcentage affiché de batterie restante | |\n| les notes aux deux derniers devoirs de Mathématiques de l'année dernière | |"},{"metadata":{},"cell_type":"markdown","source":"## 5.2. Type entier (int)\n\nPour affecter (on dit aussi assigner) la valeur 17 à la variable nommée `age`\n\n```python\n>>> age = 17\n```\n\nLa fonction `print` affiche la valeur de la variable :\n\n```python\n>>> print(age)\n17\n```\n\nLa fonction `type` renvoie le type de la variable :\n\n```python\n>>> type (age)\n\n```\n"},{"metadata":{},"cell_type":"markdown","source":"## 5.3. Type flottant (float)\n\nPour affecter (on dit aussi assigner) la valeur 1,70 à la variable nommée `taille`\n\n```python\n>>> taille = 1.7\n```\n\nLa fonction `print` affiche la valeur de la variable :\n\n```python\n>>> print(taille)\n1.7\n```\n\nLa fonction `type` renvoie le type de la variable :\n\n```python\n>>> type (taille)\n\n```\nLa notation scientifique est acceptée :\n```python\n>>> taille = 1.7e2 #taille en cm où 1m = 100cm = 10**2cm\n>>> print (taille)\n170.0\n```"},{"metadata":{},"cell_type":"markdown","source":"## 5.4. Type chaine de caractères (str)\n\nPour affecter (on dit aussi assigner) la valeur `lundi` à la variable nommée `jour`\n\n```python\n>>> jour = 'lundi' # autre possibilité jour = \"lundi\"\n```\n\nLa valeur doit être entre guillemet simple (autrement dit côte) ou guillemet double.\n\nLa fonction `print` affiche la valeur de la variable :\n\n```python\n>>> print(jour)\nlundi\n```\n\n```python\n>>> mois = \"septembre\"\n>>> print (jour, mois) # print permet d'afficher plusieurs valeurs à la suite, ne pas oublier la virgule\nlundi septembre\n```\n\nLa fonction `type` renvoie le type de la variable :\n\n```python\n>>> type (jour)\n\n```\n\nLa fonction `len` renvoie la longueur (length) de la chaîne de caractères :\n\n```python\n>>> print(len(jour))\n4\n```"},{"metadata":{},"cell_type":"markdown","source":"### 5.4.1 À Faire\n\nCopier et exécuter les instructions suivantes\n\n```python\n>>> a = \"Je suis\"\n>>> b = \" Yoda \"\n>>> a + b \n???\n>>> b + a\n???\n```"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Bilan 5.4.1\n\nComme vous le voyez, on peut ajouter deux chaînes : c'est une ___concaténation___, la mise bout à bout de plusieurs chaînes de caractères."},{"metadata":{},"cell_type":"markdown","source":"### 5.4.2 À Faire\n\nCopier et exécuter les instructions suivantes\n\n```python\n>>> mot = \"lycée\"\n>>> print(mot[0])\n???\n>>> print(mot[1])\n???\n>>> print(mot[1:4])\n???\n>>> print(mot[2:])\n???\n>>> print(mot[:2])\n???\n>>> print(mot[-1])\n???\n```"},{"metadata":{},"cell_type":"markdown","source":"### Bilan 5.4.2\n\nSelon les résultats obtenus, que permet d'obtenir l'utilisation des crochets sur une variable de type chaine de caractères :\n\n- variable[indice] : ???\n- variable[indice1:indice2] : ???\n- variable[indice:] : ???\n- variable[:indice] : ???\n- variable[-1] : ???\n\nPar convention, on appelle _indice_ les valeurs entre crochets."},{"metadata":{},"cell_type":"markdown","source":"## 5.5 Conversion de type\n\nCependant, on ne peut pas ajouter n'importe quoi.\n\nCopier et exécuter les instructions suivantes :\n\n```python\n>>> a = 'Je mesure '\n>>> b = 1.12\n>>> c = 'm'\n>>> a + b + c\n???\n```"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Cela ne marche pas car les variables ne sont pas du même *type*. Il faut les convertir en utilisant :\n\n- soit la fonction `str(nombre)` qui convertit le nombre en chaîne.\n- soit la fonction `int(chaîne)` qui convertit, si possible, la chaîne en entier.\n- soit la fonction `float(chaîne)` qui convertit, si possible ,la chaîne en flottant.\n\n```python\n>>> str(b)\n???\n>>> a + str(b) + c\n???\n>>> str(b) + c + a\n???\n```"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 6. Les fonctions mathématiques\n\nPour utiliser les fonctions mathématiques, il faut commencer par importer le module math :\n\n```python\n>>> import math\n```\n\nLa fonction `dir` renvoie la liste des fonctions et données d'un module :\n\n```python\n>>> dir(math)\n['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan',\n'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf',\n'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum',\n'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p',\n'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']\n```\n\nPour appeler une fonction d'un module, la syntaxe est la suivante : `module.fonction(arguments)`\n\nExemple :\n\n```python\n>>> math.sqrt(9)\n3.0\n```\n\nLa fonction `help` affiche l'aide, c'est-à-dire ce que fait la fonction\n\n```python\n>>> help(sqrt)\nHelp on built-in function sqrt in module math:\n\nsqrt(x, /)\n Return the square root of x.\n```"},{"metadata":{},"cell_type":"markdown","source":"## 7. Saisie utilisateur : fonction `input`\n\nCopier et exécuter l'instruction suivante :\n\n```python\n>>> input(\"As-tu un message ? \")\n???\n```"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Bilan : La fonction `input` permet d'obtenir une valeur saisie par l'utilisateur.\n\n___N.B : La valeur saisie est toujours du ___"},{"metadata":{},"cell_type":"markdown","source":"## 6. Exercices"},{"metadata":{},"cell_type":"markdown","source":"### Exercice 1\n\nL’indice de masse corporelle (IMC) est le seul indice validé par l’Organisation mondiale de la santé pour évaluer les éventuels risques pour la santé.\n\nIl s'exprime par la formule `IMC = poids (kg) / taille (m²)`\n\nJe mesure 170cm pour un poids de 3/4 de quintal. \n\n1. Exprimer les différentes données sous forme de variables et l'expression permettant de calculer l'IMC.\n2. Donner les instructions permettant de donner les types des différentes variables et du résultat obtenu."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Exercice 2\n\nAfficher la taille en octets et en bits d'un fichier de 536 kio.\n\nOn donne : \n\n- 1 kio (1 kibi octet) = 1024 octets !!!\n- 1 octet = 8 bits"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Exercice 3\n\nOn considère le programme Python suivant.\n\n```python\na = 8\nb = 3\na = a - 4\nb = 2 * b\na = a + b\nprint(a)\n```\n\n1. Combien de variables sont utilisées ? Combien de valeurs différentes ont-elles prises au cours de l’exécution du programme ?\n2. Quelle est la valeur finale de la variable `a` ?\n3. Il est possible d’afficher plusieurs valeurs avec la fonction `print`. Par exemple, si on veut afficher les valeurs des variables `a` et `b` on écrit simplement `print(a, b)`. Modifiez la dernière ligne du programme et exécutez-le."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Exercice 4\n\nOn considère le programme de calcul suivant.\n\n- a prend la valeur 5\n- Multiplier a par 3\n- Soustraire 4 au résultat\n- Elever le résultat au carré\n- Afficher le résultat\n\nÉcrire un programme Python permettant de coder ce programme de calcul. Vérifiez ensuite en l'exécutant."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Exercice 5\n\nSur un site de vente en ligne, on peut acheter différents articles. Un paquet de farine d'un kg coûte 1,15 € et une boîte de six oeufs coûte 1,50 €.\n\nÉcrire un programme Python qui utilise deux variables pour stocker le nombre de paquets de farine et de boîtes d'oeufs souhaités puis, qui calcule et affiche le prix total à payer pour la commande."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Exercice 6\n\nÀ partir de deux variables `prenom` et `nom`, afficher les initiales (par exemple LM pour Léa Martin)."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Exercice 7\n\nL'identifiant d'accès au réseau du lycée est construit de la manière suivante : initiale du prénom puis les 8 premiers caractères du nom.\n\nExemple : Alexandre Lecouturier → alecoutur\n\nA partir des deux variables `prenom` et `nom`, construire l'identifiant."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Exercice 8\n\nÉcrire un programme qui donne la pointure du pied demandé à l'utilisateur et affiche la taille du pied sachant qu'en France, la pointure correspond à 3/2 de la longueur du pied exprimée en centimètres et à laquelle on a au préalable ajouté un centimètre. (Vous pouvez vérifier votre résultat via ce [site](https://2-grande-taille.com/conversion-pointures)"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Exercice 9\n\n![Triangle rectangle, Source : Wikipedia](https://upload.wikimedia.org/wikipedia/commons/8/85/Triangle_aire.png)\n\nÉcrire un programme qui demande 2 entiers sous la forme \"a, h\" où a et h sont des nombres à 1 seule chiffre représentant respectivement la base et la hauteur d'une triangle rectangle. Afficher l'aire du triangle."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Exercice 10\n\n![Triangle quelconque, Source : Wikipedia](https://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/Triangle_with_notations.svg/320px-Triangle_with_notations.svg.png)\n\nÉcrire un programme qui demande 3 entiers sous la forme \"a, b, c\" où a, b et c sont des nombres à 1 seule chiffre et calculer l'aire du triangle quelconque formés par ces 3 longueurs.\n\n__N.B : Le calcul de l'aire d'un triangle quelconque s'effectue par l'application de la formule du Héron.__"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.9.7"}},"nbformat":4,"nbformat_minor":2}