Leçon 2 : Utiliser une boucle while
Dans cette leçon, vous allez créer un projet en utilisant le capteur de pare-chocs et la boucle while . Dans le mini-challenge, vous appliquerez ces compétences pour naviguer du début du labyrinthe mural à la lettre « A ».

Résultats d'apprentissage
- Identifiez que les commandes sans attente permettent au projet de se poursuivre même si le comportement de la commande n'est pas encore terminé.
- Identifiez qu'une commande en attente complète le comportement avant de poursuivre le projet.
- Identifiez que la boucle while vérifiera de manière répétée une condition booléenne et ne passera pas à la commande suivante tant que la condition ne renverra pas Vrai.
- Identifiez que la boucle while est utilisée avec des commandes sans attente (par exemple drive) afin de vérifier l'état du capteur.
- Identifiez que le mot clé et non inverse la valeur d'une condition booléenne de Vrai à Faux ou de Faux à Vrai.
- Identifiez que les commandes left_bumper.pressed et right_bumper.pressed renvoient une valeur True ou False dans une boucle while.
- Décrivez comment créer un projet qui a un robot VR qui avance jusqu'à ce que le capteur de pare-chocs soit enfoncé.
Pendant que les boucles
La boucle while accepte les conditions booléennes. Tandis que les boucles vérifient à plusieurs reprises une condition booléenne et contrôlent le flux du projet. La boucle while continuera à boucler tant que la condition est& Vrai. La boucle while quittera la boucle et passera à la commande suivante en dehors de la boucle une fois que la condition sera signalée comme False.

Essentiellement, une boucle while indique au robot VR de continuer à effectuer un comportement pendantcertaine condition est . La logique est similaire à ce scénario : pendant que le soleil brille, allez jouer dehors. Que feriez-vous ? L'état « le soleil brille » détermine où vous devez être. Lorsque le soleil brille, la condition est vraie, alors vous allez jouer à l'extérieur. Lorsque le soleil se couche, cette condition est fausse, de sorte que vous reveniez à l'intérieur.

While Loops et le problème du labyrinthe mural
La même logique s'applique au robot VR dans le labyrinthe mural. Lorsque le capteur de pare-chocs n'est pas enfoncé, le robot VR doit continuer à avancer. Lorsqu'il est enfoncé, il doit s'arrêter ou tourner. En utilisant les boucles while en conjonction avec des commandes sans attente, telles que drive, nous pouvons coder le robot VR pour faire exactement cela. Cependant, les commandes du capteur de pare-chocs utilisent la condition du capteur de pare-chocs enfoncé (left_bumper.pressed ou right_bumper.pressed) Afin de coder le robot VR pour qu'il se déplace pendant que le capteur de pare-chocs est et non enfoncé, nous devons utiliser un opérateur et non .
def main() :
while not condition :
wait (5, MSEC)Pour votre information
Les commandes de non-attente et d'attente déterminent le moment où la commande suivante commence un comportement. Les commandes en attente, comme drive_for et turn_for, terminent leurs comportements avant de passer à la commande suivante dans le projet. Les commandes sans attente, telles que Drive et Turn, continuent à passer à la commande suivante dans le projet même si le comportement de la commande sans attente n' est pas terminé.
Commandes d'attente
drivetrain.drive_for(AVANT, 200, MM)
drivetrain.turn_for(DROITE, 90, DEGRÉS)Commandes sans attente
drivetrain.drive(AVANT)
drivetrain.turn(DROITE)Le mot-clé Not
Le mot clé not sera généralement utilisé avec les boucles while , pour que les commandes à l'intérieur de la boucle s'exécutent tant que la condition renvoie False. Pour reprendre l'exemple du « soleil brille », le même effet peut être obtenu en utilisant un opérateur et non . Tant que le soleil ne brille pas, entrez.

Dans le labyrinthe mural, cela est utile pour que nous puissions coder le robot VR de sorte que tant que le capteur de pare-chocs n'est pas enfoncé, il avance. La condition est toujours « si le capteur de pare-chocs est enfoncé », mais de cette façon, lorsqu'il signale Faux (non enfoncé), le flux du projet reste dans la boucle. Lorsque le capteur de pare-chocs est enfoncé, la condition est alors vraie, de sorte que le projet sort de la boucle.
Pour votre information
Le mot clé not est un opérateur logique inverse la valeur d'un booléen. Mettre le mot-clé not devant une commande qui renvoie une valeur booléenne inversera True à False et False à True. Par exemple, imaginez que le capteur de pare-chocs gauche du robot VR est enfoncé et que la commande left_bumper.pressed renvoie True. Le mot clé et non inversera la valeur booléenne et fera que cette expression renverra False.
not left_bumper.pressed()Selon les données du capteur que vous utilisez, le mot clé et non peut être nécessaire pour qu'un robot VR exécute les comportements souhaités.
def main() :
while not left_bumper.pressed() :
drivetrain.drive(FORWARD)
wait(5, MSEC)
drivetrain.stop()Création d'un projet avec une boucle While et le capteur de pare-chocs
Nommez et enregistrez le projet
- Ouvrez un nouveau projet de texte et sélectionnez le terrain de jeu Wall Maze lorsque vous y êtes invité.

-
Nommez le projet Unit4Lesson2.

-
Faites glisser ou tapez la commande while dans l'espace de travail pour remplacer la commande Drivetrain qui se remplit automatiquement dans le cadre d'un nouveau projet Texte. Notez qu'il y a une commande a wait à l'intérieur de la boucle. Ne supprimez pas la commande wait , cela garantira que le robot VR exécute correctement le projet. Votre projet doit ressembler à ceci :
def main() : while condition : wait(5, MSEC) -
Tapez un opérateur et non après le « while » dans la commande while . Votre projet devrait maintenant ressembler à ceci :
def main() : while not condition : wait(5, MSEC) -
Faites glisser ou tapez la commande left_bumper.pressed dans la « condition » de la boucle while. Les commandes à l'intérieur de la boucle s'exécuteront lorsque la condition n'est pas vraie, c'est-à-dire lorsque le capteur de pare-chocs gauche n'est pas enfoncé. Votre projet devrait maintenant ressembler à ceci :
def main() : while not left_bumper.pressed() : wait(5, MSEC) -
À l'intérieur de la boucle while , faites glisser ou tapez la commande drive. Assurez-vous que la commande drive et la commande wait sont correctement indentées dans la boucle while , afin que la boucle s'exécute comme prévu. Vous pouvez utiliser les lignes directrices comme aide visuelle. Votre projet devrait maintenant ressembler à ceci :
def main() : while not left_bumper.pressed() : drivetrain.drive(FORWARD) wait(5, MSEC) -
Faites glisser ou saisissez une commande stop en dehors de la boucle while Assurez-vous que la commande stop est alignée avec la boucle while et non en retrait, afin qu'elle s'exécute en dehors de la boucle comme prévu. Vous pouvez utiliser les lignes directrices comme aide visuelle. Votre projet devrait maintenant ressembler à ceci :
def main() : while not left_bumper.pressed() : drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain.stop() - Ouvrez la fenêtre Playground si elle n'est pas déjà ouverte. Assurez-vous que le terrain de jeu Wall Maze s'ouvre.
- Exécutez le projet.
- Regardez le robot VR conduire depuis le début du labyrinthe mural et arrêtez-vous lorsque le capteur de pare-chocs est pressé par le mur.
- La commande Drive permet au robot VR de continuer à avancer tout en vérifiant l'état du capteur de pare-chocs avec la commande Left Bumper Pressed. Une fois que la commande left_bumper.pressed indique True, le robot VR passe à la commande suivante en dehors de la boucle et arrête de conduire.
Sélectionnez le bouton Suivant pour continuer le reste de cette leçon.