Table des Matières

Sujet précédent

17. Droit au but

Sujet suivant

19. Toujours les haies!

Cette page

18. Écoutez-moi, sinon ...

Apprendre la programmation informatique peut être très amusant, mais vous ne devriez pas passer toute votre vie devant un écran d’ordinateur. Si il pleut, continuez à lire, sinon allez jouer dehors! (Oui, même vous grand-père!)

18.1. Deux choix...

Récrivons la phrase ci-dessus débutant avec Si.

Si il pleut,
    continuez à lire,
sinon
    allez jouer dehors!

Si nous exprimions cette idée en Python, on aurait quelque chose du genre à la place:

if il_pleut():
    continuez_à_lire()
else:
    allez_jouez_dehors()

Oui, Python donne la possibilité d’avoir plus d’un choix avec le mot-clé else. Utilisons-le avec un autre exemple. Reeborg peut voir s’il y a ou non un mur devant lui. Sélectionnez le monde Autour 1. À l’aide de la nouvelle condition, rien_devant(), que Reeborg utilise pour déterminer s’il y a ou non un mur devant lui, on peut utiliser la combinaison if/else pour écrire un programme permettant à Reeborg de faire le tour du monde. Quelque chose comme ce qui suit suffit:

def avance_ou_tourne():
    if rien_devant() :
        # faire quelque chose
    else:
        # faire autre chose

repeat 40:
   avance_ou_tourne()

Faites-le!

Écrivez un programme utilisant le code ci-dessus faisant en sorte que Reeborg fasse le tour du monde Autour 1.

Lorsque ce sera fait, pouvez-vous modifier le programme (en ajoutant une seule instruction) de telle sorte que Reeborg dépose un jeton à chaque coin?

18.2. Comment comprendre if/else

Nous avons vu comment les énoncés def et if pouvaient être interprétés comme étant parfois équivalent à insérer un bloc de code. Les combinaisons if/else peuvent être considérées de la même façon. Ainsi

avance()
if True:
    tourne_a_droite()
else:
    tourne_a_gauche()
avance()

est équivalent à:

avance()
tourne_a_droite()
avance()

alors que:

avance()
if False:
    tourne_a_droite()
else:
    tourne_a_gauche()
avance()

est équivalent à:

avance()
tourne_a_gauche()
avance()

On peut représenter ceci par l’organigramme suivant:

../_images/else2.jpg