Quand nous voulons répéter des instructions jusqu'à ce qu'une
certaine condition soit satisfaite, Python nous donne une façon plus
simple d'écrire cela en utilisant un nouveau mot-clé :
while. Je vais vous montrer d'abord ce
que cela donne en utilisant du pseudocode pour réécrire un
exemple que nous avons déjà vu.
Tant que pas sur une sonnette,
... continuer à avancer ;
autrement,
... arrêter.
Vous serez d'accord pour dire que cela exprime la même idée qu'avant.
En utilisant du code Python, voici comment nous l'écririons réellement :
while not on_beeper():
move()
turn_off()
Plus besoin de repeat. Essayez !
Utilisez while et not pour réécrire le programme de saut de haies pour que vous n'ayez pas besoin d'utiliser un nombre arbitraire de répétitions des instructions. En d'autres termes, le coeur de votre programme devrait ressembler à ce qui suit :
while not on_beeper():
avancer_ou_sauter()
turn_off()
Assurez vous que ça marche !
C'est encore le printemps. Le père de Reeborg a semé des graines dans le jardin pour la récolte d'automne. Tout comme la dernière fois, à certains endroits, deux graines ont commencé à pousser alors qu'à d'autres endroits aucune n'a germé. L'image ci-dessous montre une situation typique (fichier : harvest4.wld).
Aidez Reeborg à désherber le jardin, pour qu'il n'y ait aucun endroit avec deux carottes (sonnettes), et re-semer pour qu'il n'y ait aucun endroit sans carottes.
Voici une proposition pour une partie du code utilisant while :
# présentation du vocabulaire lié au problème
pres_d_une_carotte = on_beeper
planter_une_carotte = put_beeper
enlever_une_carotte = pick_beeper
def une_seule_carotte():
while pres_d_une_carotte():
enlever_une_carotte() # les enlever toutes !
planter_une_carotte() # replanter une seule !
Ce morceau de code est un peu plus court que le précédent (trois
lignes dans la definition au lieu de
six).
De plus, il peut fonctionner même quand plus de deux graines ont germé
au même endroit ! Essayez-le !
Rappelez vous que, dans la réalité, ce n'est pas une bonne idée d'enlever des
germes et les replanter tout de suite après !