{"cells":[{"metadata":{},"cell_type":"markdown","source":"
\n
\n \"logo \n
\n
\n \"logo \n
\n
\n

TP Python 4 : Instructions conditionnelles

\n Correction\n

\n
\n
"},{"metadata":{},"cell_type":"markdown","source":"# Partie 1 : conditions dans un test\n\n
\n \n- Une **condition** est une expression dont le résultat est soit « vrai » soit « faux ».\n \n Une condition peut être construite à l'aide : \n \n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n
Opérateur
logique (Python)
and or not
Signification et ou non
\n\n
\n \n \nExemple \n
condition = (heure > 9) and (jour == \"lundi\")
\n \nLa condition est vraie si l'heure est supérieur à 9 et le jour est égal à \"lundi\" \n \n
\n\n\n## I.1) Structure conditionnelle \"if\" (Si... alors)\n\n\n
\n \n- Un **instruction conditionnelle** est une instruction qui n'est exécutée que **si** une condition est réalisée.\nAutrement dit, **si** une condition est réalisée **alors** l'instruction est réalisée.\n \n- La condition est suivie de **deux points**.\n \n- Les instructions liées à la condition doivent être **indentées** (décalées vers la droite).
\n \nExemple :\n```python\nif condition : \n instruction1\n instruction2\n```\n \nOn peut dire que c'est l'indentation qui remplace le mot « alors » qui n'existe pas en langage Python.\n \n \n**Exemple :** \n```python\nx = 2\na = 4\nif 6*a-4>1:\n x = 3\nprint(x)\n```\n \n \n
\n\nÀ la ligne 3, il faut que $6*a-4$ soit supérieur à 1 pour que, dans la ligne 4, on affecte la valeur 3 à la variable $x$.\n \nDans la cas contraire, $x$ garde sa valeur. \n \n
\n\n## I.2) Structure conditionnelle \"if ... else\" (Si... sinon...)\n\n\n\n
\n \n- La structure **if... else** (si... sinon) permet d'exécuter des instructions **si** une condition est réalisée et d'autres instructions **sinon**.\n \n
\n \n \n**Exemple :** \n```python\na = 4\nif 6*a-4>1:\n x = 3\nelse :\n x=4\n \nprint(x)\n```\n \n
\n\n \n**Si** la condition est réalisée, alors on affecte la valeur 3 à la variable $x$.\n**Sinon**, on affecte la valeur 4 à la variable $x$. \n \n \n
\n\n## I.1) Structure conditionnelle \"if... elif... else\" (Si... sinon si... sinon)\n\n
\n \n- La structure **if... elif... else** permet d'utiliser plusieurs conditions qui s'excluent l'une l'autre.\n \n- Le mot-clé **elif** est la contraction de « else if » qui signifie « sinon si ».\n \n- Il est possible d'utiliser autant de « elif » qu'on le souhaite.\n \n \n**Exemple :** \n```python\na = -2\nif 6*a-4 == 0:\n x = 3\nelif 6*a-4>0:\n x = 2\nelse:\n x = 4\n \nprint(x)\n```\n \n
\n\nÀ la ligne 2, si la condition n°1 est réalisée, alors dans la ligne 3, on affecte la valeur 3 à la variable $x$.\n \nSinon, à la ligne 4, si la condition n°2 est réalisée, alors dans la ligne 4, on affecte la valeur 2 à la variable $x$.\n \nEnfin, à la ligne 6, si aucune des conditions précédentes n'est réalisée, on affecte la valeur 4 à la variable $x$.\n \n\n\n
"},{"metadata":{},"cell_type":"markdown","source":"
Exemple :
On considère le programme ci-dessous. L'expression « On a gagné ! » s'affiche uniquemement si $a$ est strictement supérieur à 2 et $b$ est égal à 5 ou strictement inférieur à 2.\n\n```python\nif a > 2 :\n if b == 5:\n print(\"On a gagné!\")\n if b<2:\n print(\"On a gagné!\")\n``` \nOn peut écrire un ensemble d'instructions équivalent, avec un seul if et en utilisant les opérateurs logiques de la manière suivante :\n```python\nif (a>2) and (b==5 or b<2):\n print(\"On a gagné!\")\n```\n
"},{"metadata":{},"cell_type":"markdown","source":"# Partie 2 : exercices "},{"metadata":{},"cell_type":"markdown","source":"
Exercice 1 :
\n \nÉcrire une fonction $g$ prenant un nombre $x$ en paramètre et renvoyant $x+1$ si $x$ est strictement positif et $-2x+3$ si $x$ est négatif.\n \nTester ensuite cette fonction pour les valeurs 3, 0 et -2.\n
"},{"metadata":{"trusted":false},"cell_type":"code","source":"def g(x):\n if x>0 :\n y = x+1;\n else :\n y = -2*x+3\n return y\n\n# tests\nprint('Pour x=',3,' g(x)=',g(3),'\\n')\nprint('Pour x=',0,'g(x)=',g(0),'\\n')\nprint('Pour x=',-2,'g(x)=',g(-2),'\\n')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"
Exercice 2 : Photographie
\n \nAfin de programmer un filtre photographique, on écrit en langage Python une fonction filtre prenant en entrée la valeur ($V$) d'un pixel et renvoyant la valeur 0 si $V < 100$ et 255 sinon.\n \n \nÉcrire la fonction.\n
"},{"metadata":{"trusted":false},"cell_type":"code","source":"def filtre(V):\n if V<100 :\n y = 0\n else :\n y = 255\n return y\n\n# tests\nprint('Pour V=',59,' filtre(V)=',filtre(59),'\\n')\nprint('Pour V=',100,' filtre(V)=',filtre(100),'\\n')\nprint('Pour V=',3456,' filtre(V)=',filtre(3456),'\\n')\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"
Exercice 3 : réseaux sociaux
\n \n \nSur un réseau social, on se connecte grâce à un identifiant et un mot de passe.\n
    \n
  1. Écrire un programme qui demande l'identifiant (id), puis demande le mot de passe (mdp), et qui autorise la connection si l'identifiant est « neufkatr » et le mot de passe est « célebarssa ».\n
  2. Modifier votre programme de manière à faire afficher « Mauvais identifiant » si l'identifiant n'est pas le bon et « mauvais mot de passe » si l'identifiant est le bon mais pas le mot de passe.\n
\n
"},{"metadata":{"trusted":false},"cell_type":"code","source":"id = input('Rentrez votre identifiant ')\nmdp = input('Rentrez votre mot de passe ')\n\n# Si l'identifiant est mauvais, message d'erreur\nif id != 'neufkatr':\n print('Mauvais identifiant')\n# Sinon, et bien on continue et on teste le mot de passe\nelif mdp != 'célebarssa':\n print('Mauvais mot de passe')\nelse :\n print('Connection autorisée')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"
Exercice 4 :
\n Une société vendant de l'espace de stockage en ligne propose des tarifs différents en fonction de la quantité de stockage (exprimée en Go).\n \nLe prix mensuel est de 1,30€ pour 50 Go, de 4€ pour 200 Go et de 13€ pour 2 000 Go.\n \nCompléter la fonction **stockage** donnant le prix mensuel à payer pour une quantité de stockage comprise entre 0 et 2 000 Go.\n \n```python\ndef stockage(V):\n if .....\n prix = .....\n elif .....\n prix = .....\n else :\n if ......\n ........\n else :\n print(\"le prix n''est pas défini\")\n```\n \n
"},{"metadata":{"trusted":false},"cell_type":"code","source":"def stockage(V):\n if V = 50\n prix = 1.30\n elif V = 200\n prix = 13\n else :\n if V = 2000 :\n prix = 13\n else :\n print('Le prix n''est pas défini')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"
Exercice 5 :
\n Écrire une fonction est_bissextile qui prend en paramètre un entier annee, représentant une année, et retourne le booléen True si annee est bissextile et le booléen False sinon.
\n \nUne année est bissextile si elle est multiple de 4 mais pas multiple de 100, ou si elle est multiple de 400.
\nTester ensuite votre fonction est_bissextile avec les années 2024, 2023, 1900 et 2000, la modifier si besoin.
\n \nUtiliser les opérateur booléens pour écrire les tests sous la forme d'une seule condition.
\n \n
"},{"metadata":{"trusted":false},"cell_type":"code","source":"def est_bissextile(annee):\n test = False\n if (annee%4 ==0 and annee%10 !=0) or (annee%400 == 0):\n test = True\n \n return test\n\n# tests\n# 1900 et 2023 ne sont pas bissextiles\nprint(' L''année 1900 est-elle bissextile?',est_bissextile(1900),'\\n')\n# en revanche 2024 et 2000 le sont.\nest_bissextile(2024)\nprint(' L''année 2024 est-elle bissextile?',est_bissextile(2024))\n\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"
Exercice 6 -- Abonnement payant sur internet
\n \nUn abonnement payant « premium » sur un réseau social de vidéo coûte :\n
\n L'abonnement doit être d'une durée minimale de 1 an.\n
\n
    \n
  1. Écrire en Python une fonction prix_abonnement qui a deux arguments:\n
      \n
    • l'argument abonnement qui vaut soit la chaîne de caractère \"individuel\", soit la chaîne de caractère \"familial\",
    • \n
    • l'argument mois qui est un entier représentant le nombre de mois d'abonnement souhaité.
    • \n

    \n Cette fonction retourne :\n
      \n
    • \"Abonnement minimal de 1 an\" si la durée de l'abonnement est strictement inférieur à 1 an ;
    • \n
    • le prix de l'abonnement dans le cas contraire.
    • \n

    \n
  2. Tester votre fonction pour une demande d'abonnement strictement inférieure à 12 mois, ainsi que dans les situations suivantes :\n
      \n
    • abonnement individuel d'une durée de 1 an ;
    • \n
    • abonnement familial d'une durée de 1 an ;
    • \n
    • abonnement individuel d'une durée de 18 mois ;
    • \n
    • abonnement familial d'une durée de 18 mois.
    • \n
    \n
  3. \n
\n
"},{"metadata":{"trusted":false},"cell_type":"code","source":"def prix_abonnement(abonnement, mois):\n # en individuel, 9€99 par mois avec 3 mois d'essai gratuit \n indiv = 9.99\n # pour une famille, 15€99 par mois avec 1 mois d'essai gratuit\n famil =15.99\n \n # on initialise le prix\n prix =0\n \n # si moins d'un an\n if mois < 12 :\n # on retourne un message d'erreur\n print('Abonnement minimal de 1 an nécessaire')\n # et on sort de la fonction sans rien retourner \n # puisque l'utilisateur n'a rien compris...\n return\n \n # sinon, on va calculer le montant!\n else :\n if abonnement == 'individuel':\n # trois mois gratuit\n duree = mois - 3\n prix = duree * indiv\n elif abonnement =='familial' :\n # un mois gratuit\n duree = mois - 1\n prix = duree * famil\n else :\n # sinon, l'utilisateur n'a rien compris : message d'erreur et on ne retourne rien\n print('Vous devez choisir entre individuel et familial')\n return\n \n return prix\n \n# Tests : commentez les lignes de codes que vous ne voulez pas tester à l'aide du dièse\n # on teste déjà si la fonction vérifie bien que l'utilisateur ne rentre pas n'importe quoi\n#prix_abonnement('familial',3)\n#prix_abonnement('hihihi',14)\n # on teste ensuite si la fonction calcule les bons montants!\n#prix_abonnement('familial',14)\nprix_abonnement('individuel',14)\n#prix_abonnement('familial',16)\n#prix_abonnement('individuel',17)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Fin\n\n\n\n
\n \n- **Effectuez** une sauvegarde personnelle du document obtenu :\n - utilisez le menu `Fichier / Enregistrer sous…`.\n - Le fichier sera alors téléchargé dans votre répertoire `Téléchargements`. \n - Charge à vous de le placer dans votre répertoire. \n\n- **Rendez** votre travail en utilisant le bouton en haut à droite.\n \n- **Fermez** ce document :\n - Cliquez sur le bouton en haut à droite.\n - Ou fermez simplement le navigateur.\n
"}],"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"}},"nbformat":4,"nbformat_minor":2}