{"cells": [{"cell_type": "markdown", "id": "f5ca56dc", "metadata": {}, "source": ["# Exercices sur les fonctions\n", "\n"]}, {"cell_type": "markdown", "id": "9e8337af", "metadata": {}, "source": ["## Que fait cette fonction ?\n", "\n", "R\u00e9pondre aux questions de cet exercice sans s'aider de l'ordinateur, puis v\u00e9rifier.\n", "\n", "1. On souhaite calculer $\\sum \\frac{1}{i}$. Quelle est la diff\u00e9rence entre les diff\u00e9rentes fonctions si dessous ? Laquelle est la \"bonne\" fonction, laquelle la \"pire\""]}, {"cell_type": "code", "execution_count": 48, "id": "4794d7a1", "metadata": {"tags": ["keep"]}, "outputs": [{"name": "stdout", "output_type": "stream", "text": ["1.0\n", "1.5\n", "1.8333333333333333\n", "2.083333333333333\n", "2.283333333333333\n", "2.283333333333333\n"]}, {"data": {"text/plain": ["2.283333333333333"]}, "execution_count": 48, "metadata": {}, "output_type": "execute_result"}], "source": ["def serie_1(n):\n", " output = 0\n", " for i in range(1, n+1):\n", " output = output + 1/i\n", " print(output)\n", " \n", "serie_1(5)\n", " \n", "def serie_2(n):\n", " output = 0\n", " for i in range(1, n+1):\n", " output = output + 1/i\n", " return output\n", "\n", "serie_2(5) \n", " \n", "def serie_3(n):\n", " output = 0\n", " for i in range(1, n+1):\n", " output = output + 1/i\n", " print(output)\n", " \n", "serie_3(5)\n", "\n", " \n", "def serie_4(n):\n", " output = 0\n", " for i in range(1, n+1):\n", " output = output + 1/i\n", " return output\n", "\n", "serie_4(5)\n"]}, {"cell_type": "markdown", "id": "592edbf1", "metadata": {}, "source": ["2. Parmi tous les appels de la fonction ``f`` ci dessous, lequels vont faire une erreur ? Quelle sera l'erreur ?"]}, {"cell_type": "code", "execution_count": null, "id": "b3dab48d", "metadata": {"tags": ["keep"]}, "outputs": [], "source": ["def f(a, b):\n", " return a*2 + b\n", "\n", "p = [1, 2]\n"]}, {"cell_type": "code", "execution_count": null, "id": "f008daa1", "metadata": {"tags": ["keep"]}, "outputs": [], "source": ["f(1, 3, 4)\n", "f(1, 2)\n", "f(Bonjour, Hello)\n", "f(1, a=2)\n", "f(b=1, a=2)\n", "f(\"Bonjour\", \"Hello\")\n", "f[1, 2]\n", "f(\"Bonjour, Hello\")\n", "f(1)\n", "f(**p)\n", "f(*p)"]}, {"cell_type": "markdown", "id": "d09a722b", "metadata": {}, "source": ["3. Qu'est il affich\u00e9 ? Dans quels fonction ``x`` est une variable globale ?"]}, {"cell_type": "code", "execution_count": 3, "id": "e2ef2835", "metadata": {"tags": ["keep"]}, "outputs": [{"name": "stdout", "output_type": "stream", "text": ["3\n", "3\n", "16\n", "5\n", "3\n"]}, {"ename": "UnboundLocalError", "evalue": "local variable 'x' referenced before assignment", "output_type": "error", "traceback": ["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mUnboundLocalError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[0mf3\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 23\u001b[0;31m \u001b[0mf4\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m\u001b[0m in \u001b[0;36mf4\u001b[0;34m(y)\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mf4\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 14\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m15\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mUnboundLocalError\u001b[0m: local variable 'x' referenced before assignment"]}], "source": ["\n", "def f1(x, y):\n", " print(x + y)\n", "\n", "def f2(y):\n", " x = 15\n", " print(x + y)\n", "\n", "def f3(x, y):\n", " print(x + y)\n", " x = 15\n", "\n", "def f4(y):\n", " print(x + y)\n", " x = 15\n", "\n", "x = 10\n", "f1(1, 2)\n", "x = 5\n", "f1(1, 2)\n", "f2(1)\n", "print(x) \n", "f3(1, 2)\n", "f4(1) # Attention, il y a un pi\u00e8ge ici.\n"]}, {"cell_type": "markdown", "id": "30dc9fa8", "metadata": {}, "source": ["4. Qu'est il affich\u00e9 ?"]}, {"cell_type": "code", "execution_count": 47, "id": "a64e9f82", "metadata": {"tags": ["keep"]}, "outputs": [{"name": "stdout", "output_type": "stream", "text": ["0.0\n", "1.0\n", "0.0\n", "0.0\n"]}], "source": ["from math import sin\n", "\n", "pi = 3.141592653589793\n", "\n", "def g():\n", " return sin(pi/2)\n", " \n", "def f():\n", " pi = 0\n", " return sin(pi/2)\n", "\n", "print(f())\n", "print(g())\n", "pi = 0\n", "print(f())\n", "print(g())\n"]}, {"cell_type": "markdown", "id": "0a623f01", "metadata": {}, "source": ["4. Qu'est il affich\u00e9 ?"]}, {"cell_type": "code", "execution_count": 11, "id": "ae1b92be", "metadata": {"tags": ["keep"]}, "outputs": [{"name": "stdout", "output_type": "stream", "text": ["123\n", "321\n", "132\n", "111\n"]}], "source": ["def f(a, b, c):\n", " print(100*a + 10*b + c)\n", "\n", "a = 1\n", "b = 2\n", "c = 3\n", "f(a, b, c)\n", "f(c, b, a)\n", "f(a, b=c, c=b)\n", "f(a=a, b=a, c=a)\n"]}, {"cell_type": "markdown", "id": "924ad086", "metadata": {}, "source": ["## Fonction cos_deg\n", "\n", "Ecrire une fonction qui renvoie le cosinus d'un angle exprim\u00e9 en degr\u00e9"]}, {"cell_type": "markdown", "id": "34e10a31", "metadata": {}, "source": ["## Volume d'un c\u00f4ne\n", "\n", "1. Ecrire une fonction qui renoit le volume d'un c\u00f4ne de rayon $r$ et hauteur $h$.\n", "2. Ecrire une fonction qui envoit le volume d'un tronc de c\u00f4ne de rayon $r_1$ et $r_2$. \n", "3. Ecrire une seule fonction pour laquelle le tronc de c\u00f4ne est par d\u00e9faut un c\u00f4ne (i.e. $r_2=1$)"]}, {"cell_type": "markdown", "id": "267b648c", "metadata": {}, "source": ["## Fonction datetime\n", "\n", "Importer la fonction ``datetime`` du module ``datetime`` et regarder se documentation. \n", "\n", "1. Utiliser cette fonction pour entrer votre date de naissance (et l'heure si vous la connaissez) en nomant explicitement les arguments. \n", "2. M\u00eame question mais apr\u00e8s avoir mis les arguments dans une liste\n", "3. Dans un dictionnaire"]}, {"cell_type": "markdown", "id": "346791de", "metadata": {}, "source": ["## Fonction date en fran\u00e7ais\n", "\n", "1. Ecrire une fonction ``date_en_francais`` qui renvoie un objet ``date`` mais dont les arguments sont en fran\u00e7ais (``annee``, ``mois``, ``jour``) \n", "2. Idem avec la fonction ``datetime`` du module ``datetime`` (il faudra rajouter les arguments optionels ``heure``, ``minute``, ``seconde``) "]}, {"cell_type": "markdown", "id": "cbeb62f2", "metadata": {}, "source": ["## Polyn\u00f4mes\n", "\n", "On consid\u00e8re un polyn\u00f4me de degr\u00e9s $n$ : $a_0 + a_1x + a_2x^2 + ... + a_n x^n$. \n", "\n", "1. Ecrire une fonction ``eval_polynome_troisieme_degres(x, a_0, a_1, a_2, a_3)`` qui \u00e9value un tel polyn\u00f4me en $x$. \n", "2. Ecrire une fonction qui permettra d'\u00e9valuer un polyn\u00f4me de degr\u00e9 inf\u00e9rieur \u00e0 4 est que l'on pourra utiliser de la fa\u00e7on suivante : \n", "\n", " eval_polynome(x, 3, 4) # 3x + 4\n", " eval_polynome(x, a_0=2, a_2=4) # 4x^2 + 4\n", " \n", "3. Faire en sorte que cette fonction marche pour n'importe quel degr\u00e9. \n", " "]}, {"cell_type": "markdown", "id": "0ef64c73", "metadata": {}, "source": ["## Equation du second degr\u00e9\n", "\n", "On souhaite trouver les solutions de l\u2019\u00e9quation : $ax^2 + bx + c=0$. On rappelle que pour cela on calcule le discriminant $\\Delta = b^2 - 4*a*c$. \n", "- Si $\\Delta>0$, les solutions sont $\\frac{-b \\pm \\sqrt{Delta}}{2a}$\n", "- Si $\\Delta=0$, il y a une solution (double) $\\frac{-b }{2a}$\n", "- Si $\\Delta<0$, les solutions sont $\\frac{-b \\pm i\\sqrt{Delta}}{2a}$\n", "\n", "1. Ecrire une fonction equation_second_degre qui donne les solutions.\n", "2. Tester l\u2019\u00e9quation $x^2 -3x + 2$\n", "3. Ecrire une fonction qui r\u00e9sout une \u00e9quation du premier degr\u00e9.\n", "4. Faire en sorte que cette fonction soit appel\u00e9e lorsque $a=0$. "]}, {"cell_type": "markdown", "id": "2fce35c1", "metadata": {}, "source": ["## Coordonn\u00e9e polaire d'un nombre complexe\n", "\n", "On consid\u00e8re une nombre complexe $z$ et sa repr\u00e9sentation polaire : $z = re^{i\\theta}$\n", "\n", "1. Ecrire une fonction qui \u00e0 partir de $r$ et $\\theta$ renvoie $z$\n"]}, {"cell_type": "markdown", "id": "cd39c278", "metadata": {}, "source": ["## Nombres premiers \n", "\n", "Ecrire une fonction qui renvoie True si un nombre est premier et False sinon. Pour cela, on testera si le nombre\n", "est divisible par les entiers successifs \u00e0 partir de 2.\n", "\n", "On admet que si $n$ n\u2019est pas premier, alors il existe un entier $p \\ge 2$ tel que $p^2 \\le n$ qui est un diviseur de $n$.\n", "\n", "1. Ecrire la fonction \u00e0 l'aide d'une boucle.\n", "2. Combien y a t-il d'ann\u00e9es au XXI\u00e8me si\u00e8cle qui sont des nombres premiers ?\n", "3. Si vous n'\u00eates pas convaincu que c'est mieux avec des fonctions, faites le sans..."]}, {"cell_type": "markdown", "id": "2e160ef7", "metadata": {}, "source": ["## Mention\n", "\n", "Ecrire une fonction qui \u00e0 partir de la note sur 20 donne la mention"]}], "metadata": {"celltoolbar": "Tags", "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.8.8"}, "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}}, "nbformat": 4, "nbformat_minor": 5}