{"nbformat":4,"nbformat_minor":0,"metadata":{"hide_input":false,"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.7.3"},"latex_envs":{"LaTeX_envs_menu_present":true,"autocomplete":true,"bibliofile":"biblio.bib","cite_by":"apalike","current_citInitial":1,"eqLabelWithNumbers":true,"eqNumInitial":1,"hotkeys":{"equation":"Ctrl-E","itemize":"Ctrl-I"},"labels_anchors":false,"latex_user_defs":false,"report_style_numbering":false,"user_envs_cfg":false},"toc":{"base_numbering":1,"nav_menu":{"height":"512px","width":"252px"},"number_sections":true,"sideBar":false,"skip_h1_title":false,"title_cell":"Table of Contents","title_sidebar":"Contents","toc_cell":false,"toc_position":{"height":"350px","left":"1px","right":"1475px","top":"107px","width":"302px"},"toc_section_display":"block","toc_window_display":false},"varInspector":{"cols":{"lenName":16,"lenType":16,"lenVar":40},"kernels_config":{"python":{"delete_cmd_postfix":"","delete_cmd_prefix":"del ","library":"var_list.py","varRefreshCmd":"print(var_dic_list())"},"r":{"delete_cmd_postfix":") ","delete_cmd_prefix":"rm(","library":"var_list.r","varRefreshCmd":"cat(var_dic_list()) "}},"types_to_exclude":["module","function","builtin_function_or_method","instance","_Feature"],"window_display":false},"colab":{"name":"python_seconde.ipynb","provenance":[]}},"cells":[{"cell_type":"code","metadata":{"deletable":false,"editable":false,"id":"67-NUa1quqCT","colab_type":"code","outputId":"4d2096b0-726e-4adc-f5ef-c65ec8b464f4","executionInfo":{"status":"ok","timestamp":1588567576416,"user_tz":-120,"elapsed":1196,"user":{"displayName":"Stephan Vanzuijlen","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhM2qdZOb0hAJajYruc1IJlwd8M7ZjHZga-9Io-=s64","userId":"10362041636713858492"}},"colab":{"base_uri":"https://localhost:8080/","height":17}},"source":["# Charge ma feuille de style pour nbviewer\n","from IPython.core.display import HTML\n","from urllib.request import urlopen\n","# import urllib.request, urllib.parse, urllib.error\n","\n","url='https://github.com/debimax/cours-debimax/raw/master/static/custom.css'\n","with urlopen(url) as response:\n"," styles = response.read().decode(\"utf8\")\n","styles=\"\".format(styles)\n","HTML(styles)"],"execution_count":1,"outputs":[{"output_type":"execute_result","data":{"text/html":[""],"text/plain":[""]},"metadata":{"tags":[]},"execution_count":1}]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"HVyuakfGuqCf","colab_type":"text"},"source":["Ce notebook est un document interactif, il contient différentes cellules:\n","\n","On navigue entre les cellules avec les touches UP: ↑ et DOWN: ↓\n","\n","Les cellules identifiées par **Entrée**, contiennent du **code python** et il faut les **exécuter** pour voir le résultat \n","Il y a plusieurs méthodes pour exécuter les cellules\n"," - Au clavier **Majuscule+Entrée** ou **Ctrl+Entrée**.\n"," - À la souris en cliquant dans la barre sur **▶Exécuter**.\n"," - On doit constater qu'il y a un numéro qui apprait (ou change), par exemple **Entree [1]:** \n"," Tester la cellule au dessus pour vérifier que tout fonctionne. Normalement les titres seront en couleur.\n"," \n"," \n","**Important**: Quand il y aura un problème n'hésitez pas de relancer le ***kernel*** (noyau): \n","- $\\quad$ ***Noyau $\\mapsto$ Redémarer & Effacer Les Sorties***"]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"k_xMccJmuqCj","colab_type":"text"},"source":["# Un peu d'histoire\n","\n","Le langage ***Python*** a été développé en 1989 par ***Guido Von Rossum***, à l'université d'Amsterdam. \n","Guido était un fan de la série télévisée ***[Monthy Python Flying Circus](https://fr.wikipedia.org/wiki/Monty_Python%27s_Flying_Circus)*** crée par les [Monty Python](https://fr.wikipedia.org/wiki/Monty_Python) d'où l'origine du nom. \n","La troupe était composée de six membres : Graham Chapman, John Cleese, Eric Idle, Michael Palin, Terry Jones et Terry Gilliam. \n","\n","On utilisera ce notebook pour apprendre les rudiments de python et faire des tests. \n","Cependant pour écrire des programmes plus complets on utilisera ***pyzo*** qui est libre de droit. Il existe d'autres excellents éditeurs pour écrire du code python. En voici une liste:\n","\n","- [pyzo](https://pyzo.org/start.html) (Au lycée, il dispose de pip pour installer des modules python) Pensez à installer [miniconda](https://docs.conda.io/en/latest/miniconda.html).\n","- [anaconda](https://www.anaconda.com/distribution/) Qui dispose de tout (pyzo, spyder ...) mais il faut de beaucoup de place et d'un ordinateur véloce.\n","- spyder3 (spyder pour python3, très complet)\n","- geany (sous linux)\n","- idle (fourni avec python)\n","- winpython (pour windows)"]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"t-Etks-OuqCk","colab_type":"text"},"source":["## Variables\n","\n","\n","Les variables ont un ***type***. Il y en a trois à connaître:\n","- ***integer*** (entier)\n","- ***float*** (flottant ou nombre décimal)\n","- ***string*** (chaîne de caractères)\n","\n","Python utilise le symbole ***=*** pour affecter une valeur à une variable. par exemple:"]},{"cell_type":"code","metadata":{"id":"K0pkXZufuqCm","colab_type":"code","outputId":"053ebe10-05eb-45cc-c16d-d86599c28f75","executionInfo":{"status":"ok","timestamp":1576231750477,"user_tz":-60,"elapsed":600,"user":{"displayName":"Stephan Vanzuijlen","photoUrl":"https://lh3.googleusercontent.com/a-/AAuE7mBbqh8PuIOYO4e41ezjXLtmFZYRfIWZ_behthKp=s64","userId":"10362041636713858492"}},"colab":{"base_uri":"https://localhost:8080/","height":88}},"source":["a=2 # a prend la valeur 2, le type de la variable a est integer \n","print(a) # On affiche a\n","b=2.3 # b prend la valeur 2.3, le type de la variable b est float\n","print(b)\n","c=\"3\" # b prend la valeur \"3\", le type de la variable c est string\n","print(c)\n","d='Pablo Neruda' # On peut utiliser des simples quotes ou des doubles quotes.\n","print(d)"],"execution_count":0,"outputs":[{"output_type":"stream","text":["2\n","2.3\n","3\n","Pablo Neruda\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"XoyFUFsquqCz","colab_type":"text"},"source":["On utilise la fonction ***type()*** pour connaitre le type d'une variable."]},{"cell_type":"code","metadata":{"id":"6FmD0_bIuqC0","colab_type":"code","colab":{}},"source":["print(type(a))\n","print(type(b))\n","print(type(c))"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"xiIQnVp1uqC6","colab_type":"text"},"source":["On peut calculer avec python pour le calcul"]},{"cell_type":"code","metadata":{"id":"Rq4D_DwauqC9","colab_type":"code","colab":{}},"source":["a=2\n","print(a)\n","a=a+3\n","print(a)"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"NZxXd1rNuqDA","colab_type":"code","colab":{}},"source":["2+4"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"WJRIIcIJuqDF","colab_type":"code","colab":{}},"source":["2+\"3\""],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"9-jG4COzuqDL","colab_type":"text"},"source":["**On ne peut pas ajouter un nombre et une chaîne de caractères.** \n","Pour contourner ceci on change (si possible) le type des variables.\n","\n","\n","- ***int()*** permet de convertir, un nombre ou une chaîne de caractère en un entier. \n","- ***float()*** permet de convertir, un nombre ou une chaîne de caractère en un flottant.\n","- ***str()*** permet de convertir, un nombre en chaîne de caractère."]},{"cell_type":"code","metadata":{"id":"cZEBhTbRuqDN","colab_type":"code","colab":{}},"source":["int(2.3) # le nombre flotant 2.3 est transformé en entier (integer)."],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"6N9ngdzCuqDR","colab_type":"code","colab":{}},"source":["2+\"3\" # On obtient une erreur car les types sont différents"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"c6CF8Tz4uqDU","colab_type":"code","colab":{}},"source":["2+int(\"3\") # On transforme donc la chaîne \"3\" en un entier"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"PNnfkbmuuqDb","colab_type":"code","colab":{}},"source":["2+\"3.2\" # On obtient une erreur car les types sont différents"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"Uw4K3bMyuqDf","colab_type":"code","colab":{}},"source":["2+float(\"3.2\") # On transforme donc la chaîne \"3.2\" en un flotant."],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"rD_kdmB8uqDi","colab_type":"code","colab":{}},"source":["a=3\n","print(a,type(a))\n","print(a,type(str(a))) #On a transformé l'entier 3 en chaîne de caractère"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"qcPrhvhpuqDm","colab_type":"text"},"source":["Ne confondez pas ***a=2*** avec ***a==2***\n","\n","- ***a=2*** $\\quad$ signifie que a prend la valeur 2. $\\quad$ En algorithmique on écrit: $\\quad a\\leftarrow 2$.\n","- ***a==2*** $\\quad$ teste si le contenu de la variable a est égale à 2."]},{"cell_type":"code","metadata":{"id":"XVZ3PC-4uqDn","colab_type":"code","colab":{}},"source":["a==2"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"eY-fpR0wuqDt","colab_type":"code","colab":{}},"source":["a==3"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"vtXjxjyVuqDw","colab_type":"text"},"source":["## Afficher (print)\n","\n","Pour afficher en python on utilise la fonction ***print()***"]},{"cell_type":"code","metadata":{"id":"GVfHcRnCuqDx","colab_type":"code","colab":{}},"source":["print(\"Bonjour\")\n","print(\"Ceci est du texte\")\n","print(3)\n","print(2.5)\n","print(\"Le\",\"lycée\",\"pablo\",\"Neruda\")"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"SvxPK2fDuqD0","colab_type":"text"},"source":["Pour afficher le contenu d'une variable dans du texte il existe plusieurs méthodes\n","\n","### Méthode 1: "]},{"cell_type":"code","metadata":{"id":"2MW7N-JzuqD1","colab_type":"code","colab":{}},"source":["a='cinq'\n","print(\"Le contenu de la variable a est\",a,\".\")"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"IHAdgzh6uqD4","colab_type":"code","colab":{}},"source":["b=5\n","print(\"Le contenu de la variable b est\",b,\".\")"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"H8wgAsXhuqD-","colab_type":"text"},"source":["Cette méthode est parfois limité, il est alors préférable d'utiliser la deuxième méthode.\n","\n","### Méthode 2: en utilisant le ***formatage***\n","\n","On met la lettre ***f*** devant le texte indiquer le formatage. \n","On utilise des accolades autour des variables. Par exemple ***{a}***. \n","Le résultat qui sera affiché est le contenu de la variable ***a***. \n","Peu importe si ***a*** est un texte, un flottant ou un entier, le résultat sera affiché."]},{"cell_type":"code","metadata":{"id":"dql5s52nuqD_","colab_type":"code","colab":{}},"source":["a=\"5\"\n","print(f\"La valeur de la variable a est {a}.\") # a est de type string"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"COrVJJ29uqED","colab_type":"code","colab":{}},"source":["b=5\n","print(f\"La valeur de la variable a est {b}.\") # a est de type integer"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"EfI1hLjnuqEF","colab_type":"code","colab":{}},"source":["a=4\n","b=5\n","print(f\"Le produit de {a} par {b} est {a*b}\")"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"dpOySMJ9uqEI","colab_type":"code","colab":{}},"source":["a=4\n","b=5\n","print(f\"{a}*{b}={a*b} et {a}/{b}={a/b}\")"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"yET8Q37vuqEN","colab_type":"text"},"source":["## Les opérateurs\n","\n","Il existe de nombreux opérateurs comme l'addition ***+*** la soustraction ***-*** la multiplication ***\\**** et la division ***\\\\*** \n","\n","En voici d'autre que l'on utilise souvent.\n","\n","7***//***2 est le ***quotient*** de la division euclidienne de 7 par 2"]},{"cell_type":"code","metadata":{"id":"4nyrblRCuqEO","colab_type":"code","colab":{}},"source":["7//2"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"q4LJEJA1uqEQ","colab_type":"text"},"source":["7***%***2 est le ***reste*** de la division euclidienne."]},{"cell_type":"code","metadata":{"id":"0aJU9s_UuqES","colab_type":"code","colab":{}},"source":["7%2"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"RAE4g5q9uqEU","colab_type":"text"},"source":["7\\*\\*2 pour 7 à la ***puissance*** 2"]},{"cell_type":"code","metadata":{"id":"KPeeUifkuqEV","colab_type":"code","colab":{}},"source":["7**2"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"Kxk0b6zpuqEY","colab_type":"text"},"source":["***sqrt(2)*** pour la ***racine carré*** de 2. \n","Attention il faut auparavant importer la librairie ***math***"]},{"cell_type":"code","metadata":{"id":"yhiEohXXuqEY","colab_type":"code","colab":{}},"source":["import math\n","math.sqrt(2)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"0Fcbrs5kuqEc","colab_type":"text"},"source":["ou alors"]},{"cell_type":"code","metadata":{"id":"pDXtBhASuqEd","colab_type":"code","colab":{}},"source":["from math import sqrt\n","sqrt(2)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"LRG5FlRvuqEf","colab_type":"text"},"source":["**Attention**: Le phénomène que je m'apprête à souligner est vrai pour absolument tous les langages, mais il est bien souvent oublié. \n","Quel est le résultat d'une opération simple telle que 0.7 + 0.1 ?\n","\n","Vous pensez que le résultat est 0.8 ? Testons donc en Python :"]},{"cell_type":"code","metadata":{"id":"qN0UIWbsuqEg","colab_type":"code","colab":{}},"source":["0.7+0.1"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"RbCNGYDWuqEi","colab_type":"text"},"source":["On dirait qu'il y a un problème ... En fait cela provient de la représentation des flottants en machine : \n","ils sont arrondis !\n","En Python, la solution consistera a utiliser un module spécial, le module **_decimal_**."]},{"cell_type":"code","metadata":{"id":"ZE6AQwk6uqEj","colab_type":"code","colab":{}},"source":["from decimal import *\n","Decimal('0.1')+Decimal('0.7')"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"CB4-NnckuqEl","colab_type":"text"},"source":["**Si vous manipulez des flottants pour des calculs précis, méfiez vous ! **"]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"XKFj_0KouqEl","colab_type":"text"},"source":["### Les commentaires\n","\n","Pour écrire un commentaire sans qu'il soit interprété utilise le caractère ***\\#***. \n","On utlilise les commentaires pour expliquer ce que l'on fait."]},{"cell_type":"code","metadata":{"id":"iJWCOXryuqEm","colab_type":"code","colab":{}},"source":["print(\"Bonjour\")\n","print(\"Ceci est du texte\")\n","# print(\"Celui ci n'est pas interprété\")"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"h1qe8fjvuqEo","colab_type":"text"},"source":["Vous voyez qu'après le symbol ***\\#*** la couleur n'est pas la même. \n","Tout ce qui suit \\# n'est pas interprété par ***python***"]},{"cell_type":"markdown","metadata":{"id":"GMod-QfyuqEo","colab_type":"text"},"source":["## retenir\n","\n","- ***a=2*** $\\quad$ signifie que a prend la valeur 2.\n","- ***a==2*** $\\quad$ teste si le contenu de la variable a est égale à 2.\n","- Il existe plusieurs types pour les variables en python. \n","- ***type()*** permet connaître le type d'une variable.\n"," - ***str*** (***string***): C'est une ***chaine de caractère***. \n"," - \"Pablo neruda\", 'Pablo neruda', \"5\", \"3.14\" sont des chaînes de caractères. \n"," - On utilise des ***simples quotes*** (') ou ***doubles quotes*** (\").\n"," - ***int*** (***integer***): C'est un ***entier relatif***.\n"," - 5, 100, -4 sont des entiers.\n"," - ***float*** (***flottant***): C'est un ***nombre décimal***.\n"," - 3.14, 1.414, 5.0 sont des flotants. \n"," - On utilise un point pour la virgule comme les anglo saxons.\n","\n","\n","\n","- On utilise le caractère ***\\#*** pour écrire un commentaire\n","- Python utilise le symbole ***=*** pour affecter une valeur à une variable (Attention à ne pas confondre a=12 et a==12). \n","- On utilise pour afficher du texte et des variables la fonction ***`print()`***. \n","```python\n","print(\"Le produit de \",a,\" par \",b, \" est \",a*b,\".\")\n","print(f\"Le produit de {a} par {b} est {a*b}.\")\n","```\n","- On aura toujours à l'esprit que 0.2+0.7=0.8999999999999999$\\neq 0.9$\n","- Quelques opérateur déjà vu et très utiles\n","\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
Opérationalgorithmepython
addition2+32+3
Multiplication3*63*6
Division7/27/2
Quotient de la division euclidienne7 div 2 ou div(7,2)7//2
Reste de la division euclidienne7 mod 2 ou mod(7,2)7%2
puissance$7^2$7**2
racine carrée$\\sqrt{2}$ ou sqrt(2)math.sqrt(2)
"]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"oftB3gJOuqEq","colab_type":"text"},"source":["## Complément chaine de caractère \t"]},{"cell_type":"code","metadata":{"id":"gGR6PYQhuqEq","colab_type":"code","colab":{}},"source":["a=\"Hello \"\n","b=\"World !\"\n","a+b"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"_tl4ClKTuqEv","colab_type":"text"},"source":["on parle de ***concaténation*** des chaînes de caractères _a_ et *b*."]},{"cell_type":"code","metadata":{"id":"HJfdk0zduqEw","colab_type":"code","colab":{}},"source":["3*a"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"dws35qK2uqEx","colab_type":"text"},"source":["permet de répéter plusieurs fois un même texte."]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"AE__1lsjuqEy","colab_type":"text"},"source":["# Les fonctions\n","\n","## Définition\n","Lorsqu'on a besoin d'utiliser plusieurs fois un même bloc d'instructions, on peut l'encapsuler dans une fonction. On peut ainsi étendre le langage avec une nouvelle instruction.\n","\n","Dans la définition d'une fonction, on précise son nom et en général des paramètres formels d'entrée et une valeur de retour. \n","En Python on définit une fonction ainsi :\n","\n","```python\n","def mafonction(parametre1, parametre2):\n"," #bloc d'instructions (optionnel)\n"," return valeur\n","```\n","\n","Par exemple la fonction ***`carre(x)`*** qui prend en paramètre un nombre $x$ et qui retourne son carré, s'écrira :"]},{"cell_type":"code","metadata":{"id":"M6xIqA4_uqEy","colab_type":"code","colab":{}},"source":["def carre(x):\n"," return x**2"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"n8NmwXsHuqE0","colab_type":"text"},"source":["Pour utiliser cette fonction ***carre(x)*** on écrira:"]},{"cell_type":"code","metadata":{"id":"k0a4ZuppuqE0","colab_type":"code","colab":{}},"source":["carre(3)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"wx8vscyVuqE3","colab_type":"text"},"source":["Si on est dans un script il faut utiliser ***print()***"]},{"cell_type":"code","metadata":{"id":"wBAx1y-ZuqE4","colab_type":"code","colab":{}},"source":["print(carre(8))"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"r1KQb1YSuqE5","colab_type":"code","colab":{}},"source":["a=3\n","print(\"Le carré de\",a,\"est\",carre(a))\n","# ou avec la méthode format\n","print(f\"Le carré de {a} est {carre(a)}\")"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"Tcgqnux7uqE9","colab_type":"text"},"source":["## Mais pourquoi a-t-on besoin de fonctions ?\n"," \n","Étudions le programme ci-dessous qui calcule et affiche la moyenne d'un élève sur trois notes:"]},{"cell_type":"code","metadata":{"id":"LAlfuRHIuqE9","colab_type":"code","colab":{}},"source":["prenom1=\"Anne\"\n","note1=13\n","note2=10\n","note3=16\n","moyenneA=(note1+note2+note3)/3\n","print(f\"La moyenne de {prenom1} est: {moyenneA}\")"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"ZG2PC2yFuqFD","colab_type":"text"},"source":["C'est possible pour un élève mais moi j'ai une classe de 35 élèves.\n","\n","Imaginons une classe de 5 élèves:"]},{"cell_type":"code","metadata":{"id":"hl8ekb3-uqFD","colab_type":"code","colab":{}},"source":["prenom1=\"Anne\"\n","note1=13\n","note2=10\n","note3=16\n","moyenneA=(note1+note2+note3)/3\n","print(f\"La moyenne de {prenom1} est {moyenneA}\")\n","\n","prenom2=\"Boris\"\n","note4=9\n","note5=7.5\n","note6=12\n","moyenneB=(note4+note5+note6)/3\n","print(f\"La moyenne de {prenom2} est {moyenneB}\")\n","\n","prenom3=\"Céline\"\n","note7=8\n","note8=12\n","note9=16\n","moyenneC=(note7+note8+note9)/3\n","print(f\"La moyenne de {prenom3} est {moyenneC}\")\n","\n","prenom4=\"Denis\"\n","note10=11\n","note11=14\n","note12=17\n","moyenneD=(note10+note11+note12)/3\n","print(f\"La moyenne de {prenom4} est {moyenneD}\")"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"y17YhhE8uqFE","colab_type":"text"},"source":["Imaginez maintenant le code pour la classe avec **35 élèves!!!!**\n","\n","Que se passe-t-il si on veux ajouter une note supplémentaire ? On doit\n","- ajouter une note pour Anne,\n","- changer le calcul de la moyenne en ajoutant la note supplémentaire et en divisant par 4. \n","- Et ensuite, on doit faire cela pour tous les élèves. \n","\n","Par exemple pour un élève on écrira."]},{"cell_type":"code","metadata":{"id":"1Ifn8-6ZuqFF","colab_type":"code","colab":{}},"source":["prenom1=\"Anne\"\n","note1=13\n","note2=10\n","note3=16\n","note4=14\n","moyenneA=(note1+note2+note3+note4)/4\n","print(f\"La moyenne de {prenom1} est {moyenneA}\")"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"kchOBy6AuqFG","colab_type":"text"},"source":["C'est ***Fastidieux !***\n","\n","Quand une tâche peut être effectuée plusieurs fois dans un programme, il devient vite TRÈS INTÉRESSANT d'utiliser un morceau de programme qu'on va réutiliser: on isole alors ce morceau de code dans un ***BLOC*** qu'on appelle ***FONCTION*** "]},{"cell_type":"code","metadata":{"id":"0FicFObtuqFH","colab_type":"code","colab":{}},"source":["#bloc fonction qui calcule et affiche la moyenne\n","def calcule_moyenne(note1,note2,note3):\n"," moyenne=(note1+note2+note3)/3\n"," return moyenne\n","\n","#appels répétés de la fonction dans le programme principal\n","print(calcule_moyenne(13,10,16))\n","print(calcule_moyenne(9,7.5,12))\n","print(calcule_moyenne(8,12,16))\n","print(calcule_moyenne(11,14,17))"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"zTentYpduqFK","colab_type":"text"},"source":["On peut aussi modifier cette fonction pour calculer et retourner la moyenne avec un texte plus complet."]},{"cell_type":"code","metadata":{"id":"lZoHKfGsuqFK","colab_type":"code","colab":{}},"source":["def affiche_moyenne(prenom,note1,note2,note3):\n"," moyenne=(note1+note2+note3)/3\n"," return f\"La moyenne de {prenom} est {moyenne}.\"\n","\n","print(affiche_moyenne(\"Anne\", 13,10,16))\n","print(affiche_moyenne(\"Boris\", 9,7.5,12))\n","print(affiche_moyenne(\"Céline\", 8,12,16))\n","print(affiche_moyenne(\"Denis\", 11,14,17))"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"uUGh8l9RuqFL","colab_type":"text"},"source":["Ce qu'on a gagné : \n","\n","- On a écrit une seule fois le calcul de la moyenne.\n","- Si on ajoute 2 élèves, on appelle 2 fois la fonction\n","- Si on ajoute une note, on ne change que le contenu de la fonction calcule_et_affiche_moyenne()\n","- Si on veut ajouter l'affichage d'un message, on peut le faire dans la fonction sans changer le programme principal\n","\n","Comparez maintenant ce dernier programme avec le premier :\n","avec moins de lignes de programme, on fait plus de choses, et en plus ça reste très lisible !\n","c'est aussi très utile si la personne qui définit la fonction est différente de celle qui l'utilise on peut ainsi utiliser une fonction que l'on n'a pas codé sois même, simplement, on l'appelle ! Comme par exemple la fonction `print()`"]},{"cell_type":"markdown","metadata":{"id":"IEWkzNfuuqFL","colab_type":"text"},"source":["## A RETENIR\n","\n","- La syntaxe python est \n"," ```python\n"," def mafonction(parametre1, parametre2):\n"," #bloc d'instructions (optionnel)\n"," return valeur\n"," ```\n","- Ne pas oublier les deux points, c'est une erreur fréquente au début.\n","- Il faut **indenter** le code après les deux points jusqu'à la fin de la fonction (tabulation).\n","- Il est possible d'utiliser `print()` dans une fonction mais il est préférable d'utiliser `return` (pour retourner) et d'utiliser `print()` quand on appelle la fonction."]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"FsixiUwDuqFM","colab_type":"text"},"source":["Une fonction peut prendre plusieurs paramètres. \n","Par exemple pour calculer l'aire d'un rectangle on utilisera.\n","\n","\n","\n"]},{"cell_type":"code","metadata":{"id":"BSZMnNjHuqFN","colab_type":"code","colab":{}},"source":["def aire_rectangle(largeur,longueur):\n"," return largeur*longueur\n","\n","print(aire_rectangle(2,4))"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"vnGUmMFNuqFQ","colab_type":"text"},"source":["## Exercices fonctions\n","\n","\n","**Exercice 1 (fonctions):**\n"," \n"," \n","La surface ***S*** en mètre carrées de la peau d'un adulte est donnée approximativement par la formule $ \\dfrac{\\sqrt[]{L\\times M}}{6}$ où ***L*** est la taille de l'individu en mètres et ***M*** sa masse en kilogramme.\n","\n","\n","Pour calculer la racine carré en python il faut importer la fonction ***sqrt*** du module ***math***.\n","\n","- Écrire une fonction **`surface(M,L)`** qui retourne la surface corporelle d'un adulte.\n","- Vérifier que la surface corporelle d'un individu de $1,8m$ et $75 kg$ est d'environ $1,94m^2$.\n"]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"o3OVFppruqFY","colab_type":"code","colab":{}},"source":["from math import sqrt\n","\n","def surface(L, M):\n"," ...\n","\n","\n","print(surface(1.8, 75))"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"J-jp7Gx3uqFZ","colab_type":"code","colab":{}},"source":["from math import sqrt\n","\n","def surface(L, M):\n"," return sqrt(L*M)/6\n","\n","\n","print(surface(1.8, 75))"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"aZaE87aluqFa","colab_type":"text"},"source":["**Exercice 2 (fonctions):** \n","\n","L'indice de masse corporelle (IMC) est une grandeur qui permet d'estimer la corpulence d'une personne. \n","Il se calcule en fonction de la taille en mètre et de la masse en kilogramme. \n","La formue est $IMC=\\dfrac{masse}{taille^2}$ \n","Écrire une fonction **`imc(masse,taille)`** qui retourne l'indice de la masse corporelle."]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"zyUKE6mbuqFa","colab_type":"code","colab":{}},"source":["def imc(masse,taille):\n"," ........\n","\n","print(imc(65,1.7)) # renvoie 22.49 environ"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"-W1ie-J_uqFd","colab_type":"code","colab":{}},"source":["def imc(masse, taille):\n"," return masse/(taille**2)\n","\n","\n","print(imc(65, 1.7))"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"sroMQ2rLuqFh","colab_type":"text"},"source":["***Exercice 2 (fonctions):*** \n"," \n","La fonction ***random()*** du module ***random*** renvoie un nombre réel aléatoire dans l'intervalle $[0,1[$. \n","Voici un exemple."]},{"cell_type":"code","metadata":{"id":"-R_MK_WiuqFi","colab_type":"code","colab":{}},"source":["from random import random\n","def alea():\n"," return random()\n","\n","print(alea())"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"hEi0Y-dwuqFk","colab_type":"text"},"source":["***2) a.*** $\\quad$ Écrire en Python une fonction ***`alea_a()`*** qui retourne un nombre aléatoire dans l'intervalle $[0;2[$. \n","*Aide: Vous devez faire une simple modification de la fonction `alea()` précédente*"]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"Iacj_tOhuqFk","colab_type":"code","colab":{}},"source":["from random import random\n","\n","\n","def alea_a():\n"," ......\n","\n","\n","for i in range(20):\n"," print(alea_a())"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"y7Q5gP80uqFm","colab_type":"code","colab":{}},"source":["from random import random\n","\n","def alea_a():\n"," return random()*2\n","\n","\n","for i in range(20):\n"," print(alea_a())"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"AaGao8qCuqFn","colab_type":"text"},"source":["***2) b.*** $\\quad$ Écrire en Python une fonction ***`alea_b()`*** qui retourne un nombre aléatoire dans l'intervalle $[1;3[$ \n","*Aide: Vous devez faire une simple modification de la fonction `alea_a()` précédente*"]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"ysH0lULouqFo","colab_type":"code","colab":{}},"source":["from random import random\n","def alea_b():\n"," ......\n"," \n"," \n","for i in range(20):\n"," print(alea_b())"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"emfOvTUXuqFp","colab_type":"code","colab":{}},"source":["from random import random\n","\n","def alea_b():\n"," return random()*2+1\n","\n","\n","for i in range(20):\n"," print(alea_b())"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"_8Uh_nvauqFq","colab_type":"text"},"source":["***2) c.*** \n","- La fonction ***randint(a,b)*** renvoie un nombre entier aléatoire dans l'intervalle $[a,b]$\n","- En utilisant la fonction ***randint()*** du module ***random***, écrire en Python une fonction ***`somme2de()`*** qui retourne la somme des faces de deux dés cubiques équilibré dont les faces sont numérotées de 1 à 6.\n","- *Aide: Pour être certain du résultat on affichera avec `print()` le résultat des dés dans la fonction*"]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"B2O1JyNguqFr","colab_type":"code","colab":{}},"source":["from random import randint\n","def somme2de():\n"," \n"," \n","\n","print(somme2de())"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"Hps7W1aYuqFt","colab_type":"code","colab":{}},"source":["from random import randint\n","def somme2de():\n"," somme=randint(1,6)+randint(1,6)\n"," return somme\n","\n","for i in range(20):\n"," print(somme2de())"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"CBNJUcK1uqFu","colab_type":"text"},"source":["# Les structures de boucle et de test\n","\n","## Les structures de test\n","\n","### Si ... alors ... sinon\n","\n","```python\n","if condition:\n"," # Traitement bloc 1\n","else:\n"," # Traitement bloc 2\n","```\n","\n","Pour les tests multiples, il faudra enchaîner les if en cascade grâce à l'instruction elif, contraction de else if :\n","\n","\n","```python\n","if condition:\n"," # Traitement bloc 1\n","elif:\n"," # Traitement bloc 2\n","else:\n"," # Traitement bloc 3\n","```\n","\n","Par exemple:"]},{"cell_type":"code","metadata":{"id":"z322-VN9uqFv","colab_type":"code","colab":{}},"source":["a=3\n","if a<5:\n"," print(a,'appartient à ]-inf;5[')\n","elif 5<=a<10:\n"," print(a,'appartient à [5;10[')\n","else:\n"," print(a,'appartient à [10;+inf[')"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"Erz9MeUIuqFz","colab_type":"text"},"source":["**Exercice 1 (si):** Tarif du bateau\n","\n","- **Ce que votre fonction doit faire** \n","Écrire une fonction ***`tarif(age)`*** qui doit lire l'âge d'une personne et afficher soit \"Tarif réduit\" si cette personne a strictement moins de 18 ans, soit \"Tarif plein\" dans le cas contraire.\n","\n","- **Exemple** \n","\n","\n","\n","\n","\n","
Variables:ageage
Entrée:1618
Sortie:Tarif réduitTarif plein
"]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"8Yjy1g7fuqFz","colab_type":"code","colab":{}},"source":["def tarif(age):\n"," if ... :\n"," ...\n"," \n"," \n","print(tarif(16))\n","print(tarif(18))"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"efHfPd9FuqF1","colab_type":"code","colab":{}},"source":["def tarif(age):\n"," if age <18 :\n"," return \"tarif réduit\"\n"," else:\n"," return \"tarif plein\"\n"," \n","print(tarif(16))\n","print(tarif(18))"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"collapsed":true,"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"rJJtCdV2uqF3","colab_type":"text"},"source":["***Exercice 2 (si):*** Bornes kilométriques\n","\n","- Écrire une fonction ***`bornes(a,b)`*** qui doit lire deux entiers, correspondant à deux numéros de bornes kilométriques, et afficher la distance séparant ces deux bornes. \n"," Notez que le résultat doit être un nombre positif ou nul.\n","\n","\n","\n","\n","\n","\n","
Variables: b1, b2, d b1, b2, d
Entrée:25; 1515; 25
Sortie:1010
"]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"y7wkgySWuqF3","colab_type":"code","colab":{}},"source":["def bornes(b1,b2):\n"," if .... :\n"," ......\n"," \n"," \n","print(bornes(25,15))\n","print(bornes(15,25))"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"jqwr7y3ouqF6","colab_type":"code","colab":{}},"source":["def bornes(b1,b2):\n"," if b1>b2 :\n"," distance = b1-b2\n"," else:\n"," distance = b2-b1\n"," return distance\n"," \n","print(bornes(25,15))\n","print(bornes(15,25))"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"c_wqGgDQuqF6","colab_type":"text"},"source":["***Exercice 3 (si):*** \n","\n","On veux construire un triangle.\n","\n","**Ce que votre fonction doit faire** \n","\n","Écrire une fonction ***`estconstructible(a,b,c)`*** qui renvoie \t***True*** si l'on peut construire un triangle de côtés $a, b, c$ et ***False*** si ce triangle n'est pas constructible.\n","\n","Aide: rechercher sur un moteur de recherche avec les mots ***inégalité triangulaire collège***.\n","\n","**Exemples**\n","\n","\n","\n","\n","\n","
Variables:a, b, ca, b, c
Entrée:2 , 3, 62 3 4
Sortie:FalseTrue
"]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"y3oF-ixYuqF7","colab_type":"code","colab":{}},"source":["def estconstructible(a,b,c):\n"," if (...):\n"," ...\n"," \n"," \n","estconstructible(3,8,4)"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"8zSb2Fr0uqF9","colab_type":"code","colab":{}},"source":["def estconstructible(a,b,c):\n"," if a+b>=c and b+c>=a and a+c>=b:\n"," return True\n"," else:\n"," return False\n"," \n","print(estconstructible(6,8,4)) # True\n","print(estconstructible(3,8,4)) # False"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"collapsed":true,"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"6qmWKp8duqF-","colab_type":"text"},"source":["***Exercice 4 (si):***\n","\n","On lance un dé (équilibré, à six faces). \n","- Le joueur gagne 3€ s'il tombe sur une face paire inférieur ou égale à 4 \n","- Il gagne 4€ s'il tombe sur 6.\n","- Il perd 2€ s'il tombe sur une face impaire.\n","\n","**Ce que votre fonction doit faire**\n","\n","Écrire une fonction ***`jeude()`*** qui simulera un lancer de dé et affichera la valeur du dé et le gain correspondant. \n","On rappelle que la fonction ***randint(a,b)*** renvoie un nombre entier au hasard entre *a* et *b*.\n","\n","**Exemples**\n","\n","\n","\n","\n","\n","
Variables:de, gainde, gain
Entrée:
Sortie:dé=2
gain=3€
dé=1
gain=-2€
"]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"Lmpgd8iQuqF_","colab_type":"code","colab":{}},"source":["from random import randint\n","def jeude():\n"," ...\n"," \n"," \n","for i in range(4):\n"," print(jeude())"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"uuEz7xINuqGC","colab_type":"code","colab":{}},"source":["from random import randint\n","def jeude():\n"," de=randint(1,6)\n"," if de==2 or de==4:\n"," gain=3\n"," elif de==6:\n"," gain=4\n"," else:\n"," gain=-2\n"," return f\"dé={de}\\ngain={gain}\"\n"," \n","for i in range(4):\n"," print(jeude())"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"Ovch3ncPuqGC","colab_type":"text"},"source":["***Exercice 5 (si):*** Un site de tirage photos affiche les tarifs suivants:\n","\n","- De 1 à 19 tirages: 0.16€ par photo et 3€ de frais de port;\n","- De 20 à 499 tirages: 0,14€ par photo et 4€ de frais de port;\n","- Au-delà de 500 tirages: 0,12€ par photo et les frais de port sont gratuit;\n","\n","Créer une fonction `tarif_photos(n)` qui retourne le prix à payer si on développe $n$ photos."]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"5kU4SCAXuqGD","colab_type":"code","colab":{}},"source":["def tarif_photos(n):\n"," \n"," \n"," \n"," \n"," return prix\n","\n","print(tarif_photos(10))\n","print(tarif_photos(100))\n","print(tarif_photos(1000))"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"DzlUaH88uqGH","colab_type":"code","colab":{}},"source":["def tarif_photos(n):\n"," if 1<=n<=19:\n"," prix=0.16*n+3\n"," elif 20<=n<=499:\n"," prix=0.14*n+4\n"," elif n>=500:\n"," prix=0.12*n\n"," return prix\n","\n","print(tarif_photos(10))\n","print(tarif_photos(100))\n","print(tarif_photos(1000))"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"UFvVAWB9uqGI","colab_type":"text"},"source":["## Les structures de boucle\n","\n","Pour les boucles il existe deux structures. \n","\n","### La boucle for\n","La boucle **_for_** prend ses valeurs dans une liste :\n","\n","**for *variable* in *liste_valeurs***. À chaque itération la variable prendra pour valeur un élément de la liste."]},{"cell_type":"code","metadata":{"id":"7Y3ZQDfTuqGJ","colab_type":"code","colab":{}},"source":["for e in [ 'pomme' , 'poire' , 'kiwi' ]:\n"," print(e)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"qGj14HXluqGK","colab_type":"text"},"source":["Pour créer une boucle équivalente aux boucles traditionnelles << pour i allant de m à n, faire ... >>, nous utiliserons la fonction ***range()***. \n","La syntaxe générale est ***for i in range(m,n,p):*** \n","**i prend alors toutes les valeurs de m à n-1 par pas de p**"]},{"cell_type":"code","metadata":{"id":"C4GdxGKNuqGK","colab_type":"code","colab":{}},"source":["for i in range(0,4):\n"," print(i)"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"jcd6BhNCuqGM","colab_type":"code","colab":{}},"source":["for i in range(4):\n"," print(i)"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"4A3WED9CuqGO","colab_type":"code","colab":{}},"source":["for i in range(0,6,2):\n"," print(i)"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"OGhqLGORuqGP","colab_type":"code","colab":{}},"source":["for i in range(4,0,-1):\n"," print(i)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"28nBri-muqGR","colab_type":"text"},"source":["**Exercice 1 (for):** Les punitions\n","\n","- Écrire une fonction ***`punition(nblignes)`*** qui écrira autant de fois que demandé la phrase << Je dois suivre en cours >>.\n","- Exemple:\n","\n","\n","\n","\n","\n","\n","
Variables:nblignes
Entrée:3
Sortie:Je dois suivre en cours
Je dois suivre en cours
Je dois suivre en cours
"]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"zf3ezyVJuqGR","colab_type":"code","colab":{}},"source":["def punition(nblignes):\n"," for i in .....:\n"," .....\n","\n","punition(10)"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"OELfx8qDuqGS","colab_type":"code","colab":{}},"source":["def punition(nblignes):\n"," for i in range(nblignes):\n"," print(\"Je dois suivre en cours\")\n","\n","punition(10)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"t2m9fKffuqGU","colab_type":"text"},"source":["**Exercice 2 (for):** \n","Qu'affiche le script ci-dessous? \n","Réfléchissez bien avant de l'exécuter."]},{"cell_type":"code","metadata":{"id":"9VbndVTXuqGU","colab_type":"code","colab":{}},"source":["for i in range(1,10):\n"," print(i)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"TiwRvtKguqGX","colab_type":"text"},"source":["**Exercice 3 (for):** \n","Écrire une fonction **`table(n)`** qui affiche la table de multiplication d'un entier **n** pour des multiplicateurs variant de 1 à 9.\n","\n","\n","\n","\n","\n","
Variables:n
Entrée:3
Sortie:1×3=3
2×3=6
3×3=9
••••••
\n"]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"bD-be9vFuqGX","colab_type":"code","colab":{}},"source":["def table(n):\n"," for i in .....:\n"," print(.....)\n"," \n"," \n","table(6)"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"R6OGduDHuqGZ","colab_type":"code","colab":{}},"source":["def table(n):\n"," for i in range(1,10):\n"," print(f'{i}*{n}={i*n}')\n"," \n"," \n","table(6)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"ax6sxhysuqGa","colab_type":"text"},"source":["**Exercice 4 (for):** \n","Écrire un script pour afficher toutes les tables de mutiplication pour les entiers de 1 à 6. \n","*Aide: On utilisera la fonction `table(n)` précédente.*"]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"poe4Z-6nuqGc","colab_type":"code","colab":{}},"source":["for i in .....:\n"," ......\n"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"8JHNC8kquqGd","colab_type":"code","colab":{}},"source":["for i in range(1,7):\n"," table(i)\n"," print()"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"HZh364nNuqGf","colab_type":"text"},"source":["**Exercice 5 (for):** \n","On rappelle que l'on peut plusieurs fois une chaine de caractère avec l'opérateur **\\***\n","Par exemple `'o'*11`"]},{"cell_type":"code","metadata":{"id":"Tpde_OpDuqGf","colab_type":"code","colab":{}},"source":["print('o'*11)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"q17LzW2LuqGg","colab_type":"text"},"source":["On rappelle `\"abc\"+\"def\"` permet de concaténer deux chaînes de caractères"]},{"cell_type":"code","metadata":{"id":"ONzLfY0euqGh","colab_type":"code","colab":{}},"source":["print(\"abc\"+\"def\")"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"Omuv497duqGi","colab_type":"text"},"source":["Écrire un script qui affiche le motif ci-dessous :\n","\n","```python\n","o\n","oo\n","ooo\n","oooo\n","ooooo\n","oooooo\n","ooooooo\n","oooooooo\n","ooooooooo\n","oooooooooo\n","```"]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"7Bo8HN9fuqGj","colab_type":"code","colab":{}},"source":["for i in .....:\n"," print(.....)"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"9RKSXjuHuqGk","colab_type":"code","colab":{}},"source":["for i in range(1,11):\n"," print('o'*i)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"H0ll2cp0uqGl","colab_type":"text"},"source":["**Exercice 6 (for):** \n","Écrire un script qui affiche le motif ci-dessous :\n"," \n","```python\n","ooooooooo\n","oooooooo\n","ooooooo\n","oooooo\n","ooooo\n","oooo\n","ooo\n","oo\n","o\n","```"]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"Spovs0V8uqGl","colab_type":"code","colab":{}},"source":[""],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"G_-tns8ruqGn","colab_type":"code","colab":{}},"source":["for i in range(1,11):\n"," print(\"o\"*(10-i))"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"HcYlHOtIuqGo","colab_type":"text"},"source":["**Exercice 7 (for):** \n","\n","Écrire un script qui affiche le motif ci-dessous :\n"," \n","```python\n"," o\n"," oo\n"," ooo\n"," oooo\n"," ooooo\n"," oooooo\n"," ooooooo\n"," oooooooo\n"," ooooooooo\n","oooooooooo\n","```"]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"au7Ix4dRuqGo","colab_type":"code","colab":{}},"source":[""],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"mvKa5zhhuqGo","colab_type":"code","colab":{}},"source":["for i in range(1,11):\n"," print(\" \"*(10-i)+\"o\"*i)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"nUmigwxluqGp","colab_type":"text"},"source":["**Exercice 8 (for):** \n"," \n","Un jeu à deux joueurs.\n","\n","- Le joueur 1 et le joueur 2 lancent chacun un dé (dé classique , équilibré, à six faces).\n","- Le joueur qui obtient une valeur strictement supérieure à celle obtenue par l'autre joueur gagne. En cas d'égalité, la partie est nulle.\n","\n","a) Écrire une fonction **`lance_2de()`** en Python qui simule le lancer de deux dé et renvoie \n","- 1 si le joueur 1 gagne,\n","- 2 si le joueur 2 gagne\n","- 0 en cas de match nulle."]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"pL7FguMhuqGq","colab_type":"code","colab":{}},"source":["from random import randint\n","def lance_2de():\n"," .....\n","for i in range(10):\n"," print(lance_2de())"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"wf6yWMr3uqGr","colab_type":"code","colab":{}},"source":["from random import randint\n","def lance_2de():\n"," de1=randint(1,6)\n"," de2=randint(1,6)\n"," if de1>de2:\n"," return 1\n"," elif de1>* : tant qu'une condition est vraie, on boucle. \n","**Attention** : dans ce type de boucle on utilise une variable de boucle dont la valeur doit changer pour pouvoir sortir de la boucle :"]},{"cell_type":"code","metadata":{"id":"xCOiYEKeuqGu","colab_type":"code","colab":{}},"source":["i=0\n","while i<4:\n"," print(i)\n"," i=i+1"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"oOyc2X1TuqGw","colab_type":"code","colab":{}},"source":["i=0\n","while i<4:\n"," i=i+1\n"," print(i)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"VJrB5vS3uqGx","colab_type":"text"},"source":["**Exercice 1 (while):** Le principe\n","\n","Soit $f$ la fonction affine définie par $f(x)=2*x-5$\n","\n","\n","On souhaite afficher toutes les images de $f$ pour $x$ allant de -2 à 2 par pas de 0,25.\n","\n","a) Que renvoie le programme suivant? "]},{"cell_type":"code","metadata":{"id":"Q4FaVl29uqGx","colab_type":"code","colab":{}},"source":["def f(x):\n"," return 2*x-5\n","\n","for i in range(-2,3,0.25):\n"," print(i)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"Y89dczrGuqGz","colab_type":"text"},"source":["Regardez bien le message d'erreur qui apparaît. \n","Pour contourner ce problème on utilisera une boucle `while`.\n","\n","b) En utilisant une boucle `while` faire afficher toutes les images de $f$ pour $x$ allant de -2 à 2 par pas de 0,25."]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"0rfuj-47uqGz","colab_type":"code","colab":{}},"source":["def f(x):\n"," return 2*x-5\n","i=-2\n","while ... :\n"," ...\n"," ..."],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"hQwzUNTUuqG0","colab_type":"code","colab":{}},"source":["def f(x):\n"," return 2*x-5\n","i=-2\n","while i<=2 :\n"," print(f\"f({i})={f(i)}\")\n"," i=i+0.25"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"deletable":false,"editable":false,"run_control":{"frozen":true},"id":"pb3V0ktwuqG1","colab_type":"text"},"source":["**Exercice 2 (while):** \n","\n","En utilisant une boucle ***while***, écrire une fonction **`somme(n)`** $S_n=1+2+3+...+n$"]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"CLVDTZ9auqG2","colab_type":"code","colab":{}},"source":["def somme(n):\n"," \n"," \n"," \n"," \n","print(somme(10))"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"JkDD_caBuqG3","colab_type":"code","colab":{}},"source":["def somme(n):\n"," som=1\n"," i=1\n"," while i>*** lorsque le nombre proposé est trop petit ou ***<< c'est moins >>*** lorsque le nombre proposé est trop grand. \n","À la fin, il faudra afficher le texte << Bravo vous avez gagné >> et le nombre d'essais qui ont été nécessaires.\n","- ***Exemples*** \n","\n","\n","\n","\n","\n","
Variables:nb_coups, mystere, essai
Entrée:8; 45; 43; 44
Sortie:c'est plus
c'est moins
c'est plus
Bravo vous avez gagné en 4 essais.
\n","\n","Pour donner un nombre au hasard entre 1 et 100 on utilisera:\n"," \n","```python\n","import random\n","mystere=random.randint(1,100)\n","```"]},{"cell_type":"code","metadata":{"solution2":"hidden","solution2_first":true,"id":"fY7vXV5VuqG8","colab_type":"code","colab":{}},"source":["import random\n","mystere=random.randint(1,100)\n"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"solution2":"hidden","id":"U8ltHFX4uqG8","colab_type":"code","colab":{}},"source":["import random\n","mystere=random.randint(1,100)\n","n=None # Le nombre que l'on doit saisir, Il faut créer la variable avant de tester si n!=mystere\n","compteur=0 # Le compteur\n","while n!=mystere:\n"," n=int(input(\"Saisir un entier entre 1 et 99: \"))\n"," compteur=compteur+1\n"," if n>mystere:\n"," print(\"C'est moins\")\n"," elif n