.. _td1acenoncesession1rst: ============================= 1A.0 - Premiers pas en Python ============================= .. only:: html **Links:** :download:`notebook `, :downloadlink:`html `, :download:`python `, :downloadlink:`slides `, :githublink:`GitHub|_doc/notebooks/td1a/td1a_cenonce_session1.ipynb|*` Questions très simples pour ceux qui savent coder, quelques éléments principaux du langage Python pour les autres. .. code:: ipython3 from jyquickhelper import add_notebook_menu add_notebook_menu() .. contents:: :local: Partie 1 ~~~~~~~~ Un langage de programmation permet de décrire avec précision des opérations très simples sur des données. Comme tout langage, il a une grammaire et des **mot-clés**. La complexité d’un programme vient de ce qu’il faut beaucoup d’opérations simples pour arriver à ses fins. Voyons cela quelques usages simples. Il vous suffit d’exécuter chaque petit extrait en appuyant sur le triangle pointant vers la droite ci-dessus. N’hésitez pas à modifier les extraits pour mieux comprendre ce que le programme fait. **La calculatrice** .. code:: ipython3 x = 5 y = 10 z = x + y print(z) # affiche z .. parsed-literal:: 15 On programme sert souvent à automatiser un calcul comme le calcul mensuel du taux de chômage, le taux d’inflation, le temps qu’il fera demain… Pour pouvoir répéter ce même calcul sur des valeurs différentes, il faut pouvoir décrire ce calcul sans savoir ce que sont ces valeurs. Un moyen simple est de les nommer : on utilise des variables. Une variable désigne des données. ``x=5`` signifie que la variable ``x``\ contient 5. ``x+3`` signifie qu’on ajoute 3 à ``x`` sans avoir besoin de savoir ce que ``x`` désigne. **L’addition, l’incrémentation** .. code:: ipython3 x = 2 y = x + 1 print(y) x += 5 print(x) .. parsed-literal:: 3 7 Lorsqu’on programme, on passe son temps à écrire des calculs à partir de variables pour les stocker dans d’autres variables voire dans les mêmes variables. Lorsqu’on écrit ``y=x+5``, cela veut dire qu’on doit ajouter 5 à ``x`` et qu’on stocke le résultat dans ``y``. Lorsqu’on écrit ``x += 5``, cela veut dire qu’on doit ajouter 5 à ``x`` et qu’on n’a plus besoin de la valeur que ``x`` contenait avant l’opération. **La répétition ou les boucles** .. code:: ipython3 a = 0 for i in range (0, 10) : a = a + i # répète dix fois cette ligne print (a) .. parsed-literal:: 45 Le mot-clé ``print`` n’a pas d’incidence sur le programme. En revanche, il permet d’afficher l’état d’une variable au moment où on exécute l’instruction ``print``. **L’aiguillage ou les tests** .. code:: ipython3 a = 10 if a > 0 : print(a) # un seul des deux blocs est pris en considération else: a -= 1 print(a) .. parsed-literal:: 10 **Les chaînes de caractères** .. code:: ipython3 a = 10 print(a) # quelle est la différence print("a") # entre les deux lignes s = "texte" s += "c" print(s) .. parsed-literal:: 10 a textec Toute valeur a un type et cela détermine les opérations qu’on peut faire dessus. ``2 + 2`` fait ``4`` pour tout le monde. ``2 + "2"`` fait quatre pour un humain, mais est incompréhensible pour l’ordinateur car on ajoute deux choses différentes (``torchon + serviette``). .. code:: ipython3 print("2" + "3") print(2+3) .. parsed-literal:: 23 5 Partie 2 ~~~~~~~~ Dans cette seconde série, partie, il s’agit d’interpréter pourquoi un programme ne fait pas ce qu’il est censé faire ou pourquoi il provoque une erreur, et si possible, de corriger cette erreur. **Un oubli** .. code:: ipython3 a = 5 a += 4 print(a) # on voudrait voir 9 mais c'est 5 qui apparaît .. parsed-literal:: 9 **Une erreur de syntaxe** .. code:: ipython3 a = 0 for i in range (0, 10): # il manque quelque chose sur cette ligne a = a + i print(a) .. parsed-literal:: 45 **Une autre erreur de syntaxe** .. code:: ipython3 a = 0 for i in range (0, 10): a = a + i # regardez bien print(a) .. parsed-literal:: 45 **Une opération interdite** .. code:: ipython3 a = 0 s = "e" print(a + s) # petit problème de type :: --------------------------------------------------------------------------- TypeError Traceback (most recent call last) in () 1 a = 0 2 s = "e" ----> 3 print (a + s) TypeError: unsupported operand type(s) for +: 'int' and 'str' **Un nombre impair de…** .. code:: ipython3 a = 0 for i in range (0, 10) : a = (a + (i+2)*3 ) # comptez bien print(a) .. parsed-literal:: 195 Partie 3 ~~~~~~~~ Il faut maintenant écrire trois programmes qui : - Ecrire un programme qui calcule la somme des 10 premiers entiers au carré. - Ecrire un programme qui calcule la somme des 5 premiers entiers impairs au carré. - Ecrire un programme qui calcule la somme des qui 10 premières factorielles : :math:`\sum_{i=1}^{10} i!`. A propos de la parité : .. code:: ipython3 14%2, 233%2 .. parsed-literal:: (0, 1) Tutor Magic ~~~~~~~~~~~ Cet outil permet de visualiser le déroulement des programmes (pas trop grand, site original `pythontutor.com `__). .. code:: ipython3 %load_ext tutormagic .. code:: ipython3 %%tutor --lang python3 a = 0 for i in range (0, 10): a = a + i .. raw:: html Arriverez-vous à résoudre le première exercice du site `CodinGame `__ ?