Bases en Pyhon 5 : Les instructions conditionnelles
Si ...
Les conditions sont un concept essentiel en programmation. Elles vont vous permettre de faire une action précise si, par exemple, une variable est positive, une autre action si cette variable est négative, ou une troisième action si la variable est nulle.
Comme un bon exemple vaut mieux que plusieurs lignes d'explications, voici un exemple clair d'une condition prise sous sa forme la plus simple.
Bien sur ce code affiche que ABC est triangle, puisque 25 est bien égal a 9 + 16. Notez bien le ==. Ce n'est pas une faute de frappe, on a vraiment mis deux fois le signe =. En python :
- a = 1 est une affectation (a prend la valeur 1)
- a == 1 est une comparaison utilisant l'opérateur comparatif ==. Cet opérateur permet de tester une égalité : (ici la proposition est : a = 1 ? e
- a == 1 peut prendre deux valeurs : Vrai ou Faux. En Python (comme dans la majorité des langages de programmation) c'est True ou False. C'est donc une proposition booléenne.
- On dénomme très souvent condition les propositions booléennes.
La structure de cette instruction conditionnelle. est :
if condition : Instruction(s)Les instructions indentées qui suivent le if ne sont exécutées que si la condition est vraie.
Changeons un peu le code de départ :
Cette fois la condition n'est pas vérifiée car BC**2 == AB**2 + AC**2 est faux.
Exercices
1Revenir sur la feuille Wims et faire l'exercice interactif n°1 (en bas de la page)
2Exercice de codage
Si... et sinon...
Notre code précédent permet de dire qu'un triangle est rectangle. Mais lorsque le triangle n'est pas rectangle, notre code n'affiche rien, et avouez, c'est un peu dommage. Bien sur il est possible de décider ce que l'on veux faire si la condition est fausse :
Cette fois le code va afficher que le triangle n'est pas rectangle. Mais.... est-ce bien correct ??? Regarde ceci :
Que va afficher ce code ? Est-ce correct ?
Bien sur que non. Il aurait pu afficher que le triangle n'est pas rectangle en A, et ce serait correct. Mais encore une fois c'est un peu dommage que ce code ne nous renseigne pas mieux, en nous indiquant que le triangle est rectangle, mais cette fois en C. Comment faire ?
On peut par exemple tester tous les cas :
C'est mieux non ? En effet cette fois, le code affichera toujours si le triangle est rectangle. Mais problème.... s'il n'est pas rectangle, il ne va rien afficher. Bien sur, on pourrait s'en contenter, après tout, s'il ne dit rien, c'est qu'il n'est pas rectangle. Mais ceci n'est pas complètement satisfaisant. Nous verrons un peu plus loin comment faire mieux, mais avant, entraine toi un peu...
Exercice
3Revenir sur la feuille Wims et faire l'exercice interactif n°2 (en bas de la page)
4Exercice de code
Dans l'exercice qui suit, nous allons découvrir la fonction random.randrange()
Elle a un nom en 2 parties car elle ne fait pas partie des fonctions de base de python, elle se trouve dans un module qui s'appelle random
Pour l'utiliser on doit commencer par importer le module avec import random
Puis ont utilise randrange() ainsi par exemple :
a = random.randrange(0,4)
ici, a prendra une valeur aléatoire entre 0 et 3. Tout celà est en partie précodé dans l'exercice.
Sinon, si...
Non seulement notre code n'affiche rien si le triangle n'est pas rectangle, mais il y a un autre petit problème. Imaginons que le triangle est rectangle en A. Dans ce cas, les 2 autres tests ne servent à rien... Pas très grave, c'est l'ordinateur qui fait les calculs pour rien. D'accord. Mais quand même ça n'est pas très malin.
Dans un cas comme celui là on peut enchainer les tests ensembles avec elif. Cette instruction est la contraction de else et if, et signifie : sinon, si...
Laissons de coté Pythagore un moment, nous y reviendrons. Prenons un autre exemple :
2 amies, Marie et Julie, veulent aller visiter une 3ème amie qui habite à 10km. Mais ont-elles une voiture ?
Si Marie a une voiture alors c'est bon Sinon Si : Julie a une voiture alors c'est bon Sinon c'est mort
Si on répond OUI à la première question : le problème est réglé, et on ne va pas regarder ce qu'il faudrait fait sinon. Sinon, si on répond oui à la seconde le problème est quand même réglé et ne s'occupe pas du sinon qui suit Sinon : On répondu non aux deux. Marie et Julie restent à la maison.En Python ce code ressemblerait à ceci :
if Marie a une voiture alors c'est bon elif Julie a une voiture : alors c'est bon else : c'est mortVous vous dites peut-être que cela ne ressemble pas vraiment à un code informatique. Pourtant ce n'est pas bien loin, regardez :
Revenons à Pythagore
Comment ça va fonctionner ? traduisons chaque ligne en langage normal :
AB = 5 AC = 4 BC = 3 Si BC**2 == AB**2 + AC**2 Alors : print("ABC est un triangle rectangle en A") Sinon Si : AB**2 == AC**2 + BC**2 : :Alors : print("ABC est un triangle rectangle en C") Sinon Si : AC**2 == AB**2 + BC**2 : :Alors : print("ABC est un triangle rectangle en B") Sinon : print("ABC n'est pas un triangle rectangle ")si la première condition est vraie, le code n'exécutera aucun des Sinon :. Mais si elle est fausse il va passer au premier Sinon Si :
Si la 2ème condition est vraie le code n'exécutera pas les autres Sinon. Mais si elle est fausse il passera au 2ème Sinon Si :.
Si cette 3ème condition est vraie il n'exécutera pas le Sinon final. Mais si elle est fausse, il passera a ce dernier sinon, et cette fois il n'y a pas de si, donc il affichera: le triangle n'est pas rectangle.
Et c'est correct, car les 3 tests ont échoué, donc en effet on est sur qu'il n'est pas rectangle.
Exercices
3Revenir sur la feuille Wims et faire l'exercice interactif n°3 (en bas de la page)
Deux exercices de codage
1 - Exercice de codage
Déroulez le code pour les valeurs : a = 2, b = 3 et c = 1
2- est-ce que ça marche ?
Examinez le code ci-dessous :
Est-ce que ce code fonctionne ? (justifiez)
3- Des tests plus précis et efficaces
Nous avons utilisé une variable nbMax que nous avons initialisée à 0. Ceci n'est pas forcément naturel. En effet, on aurait plutôt tendance a dire que :
Algorithme de détermination de la plus grande des 3 valeurs :
si a > b ET a > c : a est le plus grand
et sinon, si b > a et b > c : b est le plus grand
et sinon c'est c le plus grand.
en python, on écrira par exemple :
if a > b and a > c :
Reprenez l'exercice avec and en suivant l'algorithme donné ci-dessus.
Notez bien : ici nous n'avons pas de Else...
La raison est qu'on n'en a pas besoin. Si une condition est vraie, on agit en conséquence, et sinon on ne fait rien. Le sinon n'est donc pas utile.
Déterminer la médiane d'une série statistique
Rappel de l'algorithme de la médiane
Soit lst=[x1,x1,...xN] une série de nombres (la série contient N éléments) ordonnée dans l'ordre croissant.
- Si N est pair la médiane est la moyenne des valeurs de rang N/2 et N/2+1
- Si N et impaire, la médiane est la valeur de rang (N+1)/2