Supposons que nous voulions que Reeborg continue à marcher jusqu'à ce qu'il trouve une sonnette, et alors s'éteigne. Voici un exemple de position de départ :
Une façon de faire cela - en pseudocode - serait :
Si sur une sonnette,
... arrêter ;
autrement,
... continuer à avancer.
En utilisant ce que nous avons déjà vu, nous pouvons traduire cela comme ceci :
if on_beeper():Ce n'est qu'une partie de la solution puisque nous n'avons pas dit à Reeborg de continuer en recommençant. Ignorons cela pour l'instant. Voyons plutôt le pseudocode équivalent suivant :
turn_off()
else:
move()
if not on_beeper():
move()
else:
turn_off()
Pour transformer ceci en un programme complet, en utilisant ce que nous avons vu jusqu'à maintenant, nous pourrions avoir besoin de definir une instruction, et ensuite la faire répéter assez souvent pour être sur que Reeborg puisse terminer son travail.
Utilisez le nouveau mot-clé Python not pour réécrire votre programme de saut de haie.
C'est le printemps. Le père de Reeborg a semé des graines dans le jardin pour la récolte d'automne. À 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. La situation finale devrait ressembler à ce qui suit :
Voici une proposition pour une partie du code :
# introduction 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():
if not pres_d_une_carotte():
planter_une_carotte() # remplacer graine manquante
else:
enlever_une_carotte()
if not pres_d_une_carotte(): # oups !
planter_une_carotte() # nous avions enlevé la seule qu'il y avait
Remarquez 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 !