Ateliers nomades #Python 03

Les conditions if/elif/else et la logique booléenne

 

 

Au programme

Le cours

Ne pas hésiter à copier les bouts de code du cours dans un fichier sur trinket afin de tester le code avant les exercices.

La logique booléenne

En programmation informatique, afin de faire des programmes évolués qui exécutent des instructions en fonction de la validité de certains évènements. Si ces évènements sont valides ou vraies alors on exécutent telles instructions, si ces évènements ne sont pas valides ou faux on joue d’autres instructions. 

On appelle cela en programmation, la logique booléenne. En Python,  cette logique est implémentée (réalisée) par les objets de types booléens. 

Le type booléen

Le type booléen sert à représenter la validation d’expression ou d’instruction en Python.

Ce type ne prend que deux valeurs : 

– True pour Vrai

– False pour Faux

Par exemple si l’on souhaite valider le fait que le nombre 1 soit plus petit que le nombre 2, on peut afficher la valeur de la validation de cette comparaison ainsi :

print ( 1 < 2 )

>>> True 

On voit, que cela renvoie bien True. Car sauf dans un monde parallèle 1 et bien plus petit que 2.

De même si l’on souhaite valider le fait que le nombre 2 n’est pas plus petit que le nombre 1, on peut afficher la valeur de la validation de cette comparaison ainsi :

print ( 2 < 1 )

>>> False 

On voit, que cela renvoie bien False. Car sauf dans un monde parallèle 1 et bien plus petit que 2.

Cet exemple n’est pas dingue mais au fil des exercices, la validation d’expression Python sera de plus en plus concret.

Les opérateurs de comparaison

Voici une partie des différents opérateurs que nous pouvons utiliser pour nos tests de validations

 

Opération Sens
< Strictement inférieur (plus petit)
<= Inférieur ou égal
> Strictement supérieur (plus grand)
>= Supérieur ou égal
== Egal
!= N’est pas Egal

 

Exemple d’utilisation de ces opérations 

print( 2 < 1 )

>>> False 

print( 1 < 2 )

>>> True 

print(1 == 1)

>>> True

print(1 == 2)

>>> False

print(1 != 2)

>>> True

Les conditions

Jusqu’à présent, dans tous les programmes que nous avons écris l’interpréteur Python lit chaque instruction de haut en bas.

Souvent en programmation, on souhaite que certaines instructions ne soient exécutées que sous certaines conditions bien précises. 

If (Si)

Soit un programme qui demande à un personne son âge et lui dis en fonction de ce dernier si il peut voter ou non.

Le programme aura les instructions suivantes :

– demander à l’utilisateur/rice son prénom

– répondre « Bonjour » en reprenant le prénom de l’utilisateur/rice

– demander son âge 

– répondre « Tu es majeure et tu peux voter ! » si l’âge est supérieur ou égal à 18 

Le début du programme commencerait ainsi :

prenom = input(« Bonjour, comment t’appelles-tu ? « )

print(« Bonjour « , prenom)

age = input (« Quel est ton âge? »)

age = int(age) 

Jusqu’ici tout va bien. Mais il faut pouvoir dire à l’interpréteur de n’afficher la phrase « Tu es majeur et tu peux voter » uniquement SI l’âge est supérieur ou égal à 18.

Et pour se faire nous allons utiliser ce que l’on trouve dans plusieurs autres langages de programmation, à savoir les conditions.

Les conditions vont nous permettre comme leur nom l’indique de conditionner le comportement du programme.

Le mot clé IF permet d’exprimer la condition de ce que l’on cherche à valider SI. Le mot clé if s’utilise ainsi :

if CONDITION :
instruction 1
instruction 2
instruction 3

Pour créer une la condition if, il nous faut : 

  • utiliser le mot clé if, qui permet de définir la fonction.
  • la condition de ce que l’on souhaite valider. Si la condition est vraie alors les instructions qui lui sont rattachées seront jouées. 
  • le mot clé : qui donne le point de départ des instructions qui composent la condition 
  • la liste d’instructions qui compose la condition. Attention ! Il faut décaler de 4 espaces sur la droite chaque instructions que l’on veut mettre dans la condition. 

Si l’on reprends notre exemple de programme qui évalue l’âge légale pour voter voilà ce que cela donne:

prenom = input(« Bonjour, comment t’appelles-tu ? « )

print(« Bonjour « , prenom)

age = input (« Quel est ton âge? »)

age = int(age)

if age >= 18 :

    print(« Tu es majeur et tu peux voter »)

 

Après avoir demandé son âge à l’utilisateur/trice avec l’ajout du code ci-dessus, l’interpréteur va afficher la phrase « Tu es majeur et tu peux voter » que si la condition âge est supérieur ou égal (>=) à 18 est vraie. 

Si la condition est fausse, il ne va rien se passer.

Else (Sinon)

Améliorons notre programme qui permet de répondre si une personne est en âge de voter en rajoutant la réponse « Tu es mineur et ne peux pas voter » si la personne n’a pas 18 ans.

On pourrait utiliser de nouveau la condition if avec cette fois en vérifiant si l’âge est strictement inférieur à 18.

Cependant, le mot clé else (sinon) qui exprime la condition inverse de celle se trouvant dans la condition if peut-être utilisée. 

Else ne s’utilise donc qu’après une condition a été établie avec le mot clé if. Le mot clé else s’utilise donc ainsi :

if CONDITION :
instruction 1
instruction 2
instruction 3
else:
instruction 1
instruction 2
instruction 3

 

La construction de la condition else s’effectue comme celle de la condition if à l’exception près que l’on n’a pas à préciser la condition. La condition de else sera automatique la condition qui ne respecte pas la condition if.

Si l’on reprends notre programme de vote, cela donnera le code qui suit :

prenom = input(« Bonjour, comment t’appelles-tu ? « )

print(« Bonjour « , prenom)

age = input (« Quel est ton âge? »)

age = int(age)

if age >= 18 :

    print(« Tu es majeur et tu peux voter »)

else  :

    print(« Tu es mineur et tu ne peux pas voter »)

Elif (Sinon Si)

Le mot clé elif (sinon si) exprime une autre condition que celle précisé dans la condition if et permet ainsi d’enchaîner les conditions. 

Elif ne s’utilise donc qu’après une condition a été établie avec le mot clé if. Le mot clé elif s’utilise donc ainsi :

if CONDITION :
instruction 1
instruction 2
instruction 3
elif CONDITION :
instruction 1
instruction 2
instruction 3

 

On pourrait enchaîner plusieurs conditions elif à la suite et terminer par une condition else qui serait une sorte de condition finale qui ne respecte aucune des conditions précédentes.

Prenons un autre exemple que celui du vote.

Dans l’exemple suivant l’ordinateur va juste faire une remarque sur l’âge de la personne à qui il répond.

prenom = input(« Bonjour, comment t’appelles-tu ? « )

print(« Bonjour « , prenom)

age = input (« Quel est ton âge? »)

age = int(age)

if age < 16 :

    print(« Tu es jeune encore ! Profite ! Roulez jeunesse ! Rock & Roll ^^ »)

elif age == 18  :

    print(« 18 ans ! Un premier grand cap ! Tu peux majeur, peux voter ! Peux tout faire…avec l’autorisation de ta mère ^^ »)

elif age < 25  :

    print(« La vie étudiante te voilà ! Au revoir papa, maman ! Libéré ! Délivré ! Tu vas pouvoir t’éclater hey hey ^^! « )

elif age < 32  :

    print(« La vie c’est fini hein ! Penses à trouver un emploi stable et une personne avec qui te marier ! A acheter un appart avoir 3 enfants et 2 chiens ! »)

elif age < 40  :

    print(« Tu voudrais avoir 18 ans encore ! Ouais je sais … Moi aussi ^^ »)

else :

    print(« Tu es trop vieux et puis ceci n’est qu’un exemple d’un exercice hein « )

And / Or

Il est possible de valider plusieurs expressions grâce au mots clé and et or. Ces mots clés permettent également d’affiner nos validations

Le mot clé AND qui veut dire ET vérifie que deux expressions soient vraies.

On veut par exemple que notre programme ne dise un message que si la personne a entre 18 et 25 ans.

Voici à quoi ressemblerait le programme : 

prenom = input(« Bonjour, comment t’appelles-tu ? « )

print(« Bonjour « , prenom)

age = input (« Quel est ton âge? »)

age = int(age)

if age > 16 and age < 25 :

    print(« Tu es jeune encore ! Profite ! Roulez jeunesse ! Rock & Roll ^^ »)

else :

    print( » Parle à ma main !  « )

Il est possible de valider plusieurs expressions grâce au mots clé and et or. Ces mots clés permettent également d’affiner nos validations

Le mot clé OR qui veut dire OU vérifie qu’au moins une des deux expressions soit vraies.

On veut par exemple que notre programme ne dise un message que si la personne a 18 ans ou 21 ans.

Voici à quoi ressemblerait le programme : 

prenom = input(« Bonjour, comment t’appelles-tu ? « )

print(« Bonjour « , prenom)

age = input (« Quel est ton âge? »)

age = int(age)

if age == 18 or age == 21 :

    print(« Cool tu es majeur en europe ou aux états-unis Roulez jeunesse ! Rock & Roll ^^ »)

else :

    print( » Parle à ma main 😉 !  « )

Bien sûr ce sont des exemples qui pour le coup ne sont pas directement parlant mais vous allez voir dans les exercices que ces mots clés sont très pratiques. 

Les exercices

Pour chaque exercice, il vous faudra ouvrir un projet trinket et nommer ce projet par le nom de l’exercice.
Exemple pour l’exercice #Hacking I, le nom du projet sera Hacking I.
Pour chaque exercice, il vous faudra ouvrir un projet trinket et nommer ce projet par le nom de l’exercice.
Si vous êtes bloqué(e), ne pas hésitez à demander de l’aide au hackeur ou à la hackeuse à côté de vous.
Demandez moi en dernier 🙂 ! 

#Vote

Écrire la fonction vote qui prends en paramètre l’année de naissance de l’utilisateur/trice et écrit si  l’utilisateur/trice est majeur(e) ou non et peux voter.
 
Il faudra que le test suivant fonctionne.  

vote(1985) 

>>> « Tu es majeur(e) et peux voter ! » 

vote(2010)

>>> « Tu es mineur(e) et ne peux pas voter ! »

 

#Nombre Pair

Écrire la fonction is_even qui prends en paramètre un entier qui renvoie True si ce nombre est pair, False sinon
Astuces light bulb
 
– Pour renvoyer une valeur on utilise le mot clé return
– Pour rappel un nombre est pair si le reste de la division euclidienne par 2 est égale à 0. En Python ce calcul peut se faire par l’opérateur %    

#Nombre Impair

Écrire la fonction is_odd qui prends en paramètre un entier qui renvoie True si ce nombre est impair, False sinon
Astuces light bulb
 
– Pour renvoyer une valeur on utilise le mot clé return
– Pour rappel un nombre est pair si le reste de la division euclidienne par 2 est égale à 0. En Python ce calcul peut se faire par l’opérateur %    

#PierrePapierCiseaux

Suivre l’exercice se trouvant sur Raspberry Pi Project => https://projects.raspberrypi.org/fr-FR/projects/rock-paper-scissors
 
Pour ceux qui l’on déjà fait, vous pouvez améliorer le jeu en rajoutant vos règles.
Par exemple PierrePapierCiseauxFeu où le Feu bat le papier et la paire de  ciseaux mais fait se battre par la Pierre

Mentions Légales

CGVU

06.17.75.36.61

christophe@leprofnomade.fr

© 2019 LeProfNomade