Lektion 2: Verwenden einer While-Schleife
In dieser Lektion erstellen Sie ein Projekt mit dem Stoßstangensensor und der while-Schleife. In der Mini-Challenge wendest du diese Fähigkeiten an, um vom Beginn des Mauerlabyrinths bis zum Buchstaben „A“ zu navigieren.

Lernergebnisse
- Stellen Sie fest, dass das Projekt mit nicht wartenden Befehlen fortgesetzt wird, auch wenn das Verhalten des Befehls noch nicht abgeschlossen ist.
- Stellen Sie fest, dass ein Wartebefehl das Verhalten vervollständigt, bevor Sie mit dem Projekt fortfahren.
- Identifizieren Sie, dass die while-Schleife wiederholt eine boolesche Bedingung überprüft und nicht zum nächsten Befehl wechselt, bis die Bedingung True meldet.
- Identifizieren Sie, dass die while-Schleife mit nicht wartenden Befehlen (z. B. Antrieb) verwendet wird, um den Sensorzustand zu überprüfen.
- Erkennen Sie, dass das Schlüsselwort „ not den Wert einer Booleschen Bedingung von „True“ in „False“ oder von „False“ in „True“ umkehrt.
- Stellen Sie fest, dass die Befehle left_bumper.pressed und right_bumper.pressed einen True- oder False Wert in einer while -Schleife zurückgeben.
- Beschreiben Sie, wie Sie ein Projekt erstellen, bei dem ein VR-Roboter vorwärts fährt, bis der Stoßstangensensor gedrückt wird.
While Loops
Die while-Schleife akzeptiert boolesche Bedingungen. Während Schleifen wiederholt einen booleschen Zustand überprüfen und den Projektablauf steuern. Die while-Schleife wird fortgesetzt, solange die Bedingung& wahr ist. Die while-Schleife verlässt die Schleife und wechselt zum nächsten Befehl außerhalb der Schleife, sobald die Bedingung als Falsch gemeldet wird.

Im Wesentlichen weist eine while-Schleife den VR-Roboter an, ein Verhalten fortzusetzen, während eine bestimmte Bedingung erfüllt ist. Die Logik ist ähnlich wie bei diesem Szenario: Während die Sonne scheint, geh draußen spielen. Was würden Sie tun? Der Zustand „die Sonne scheint“ bestimmt, wo Sie sein sollten. Wenn die Sonne scheint, ist der Zustand Wahr, also spielst du draußen. Wenn die Sonne untergeht, ist dieser Zustand falsch, also kommst du wieder rein.

While Loops und das Problem des Mauerlabyrinths
Die gleiche Logik gilt für den VR-Roboter im Wandlabyrinth. Während der Stoßfängersensor nicht gedrückt wird, sollte der VR-Roboter weiter vorwärts fahren. Wenn es gedrückt wird, sollte es anhalten oder sich drehen. Wenn wir while-Schleifen in Verbindung mit nicht wartenden Befehlen wie Drive verwenden, können wir den VR-Roboter so programmieren, dass er genau das tut. Die Befehle des Stoßfängersensors verwenden jedoch den Zustand, in dem der Stoßfängersensor gedrückt wird (left_bumper.pressed oder right_bumper.pressed). Um den VR-Roboter so zu programmieren, dass er fährt, während der Stoßfängersensor nicht gedrückt wird, müssen wir einen NOT-Operator verwenden.
def main():
while not Bedingung:
wait (5, MS)Zur Kenntnisnahme
Nicht-Warten und Warten-Befehle bestimmen, wann der nächste Befehl ein Verhalten beginnt. Wartende Befehle wie drive_for und turn_for vervollständigen ihr Verhalten, bevor sie mit dem nächsten Befehl im Projekt fortfahren. Nicht wartende Befehle, wie Drive und Turn, wechseln weiterhin zum nächsten Befehl im Projekt, auch wenn das Verhalten des nicht wartenden Befehls nicht abgeschlossen ist.
Wartende Befehle
drivetrain.drive_for(FORWARD, 200, MM)
drivetrain.turn_for(RIGHT, 90, DEGREES)Nicht wartende Befehle
drivetrain.drive(VORWÄRTS)
drivetrain.turn(RECHTS)Das Nicht-Schlüsselwort
Das Schlüsselwort not wird typischerweise bei while -Schleifen verwendet, um die Befehle innerhalb der -Schleife auszuführen, während die Bedingung „False“ zurückgibt. Um das Beispiel "Sonne scheint" zu verwenden, kann der gleiche Effekt mit einem NICHT-Operator erreicht werden. Kommen Sie herein, solange die Sonne und nicht scheint.

Im Wandlabyrinth ist dies nützlich, damit wir den VR-Roboter so codieren können, dass er vorwärts fährt, während der Stoßstangensensor nicht gedrückt wird. Die Bedingung ist immer noch "wenn der Stoßfängersensor gedrückt wird", aber auf diese Weise bleibt der Projektfluss in der Schleife, wenn er Falsch meldet (nicht gedrückt). Wenn der Stoßstangensensor gedrückt wird, ist die Bedingung dann True, so dass das Projekt aus der Schleife bewegt wird.
Zur Kenntnisnahme
Das Schlüsselwort not ist ein logischer Operator, der den Wert eines Booleschen Werts invertiert. Wenn Sie das Schlüsselwort nicht vor einen Befehl setzen, der einen booleschen Wert zurückgibt, wird True in False und False in True invertiert. Stellen Sie sich zum Beispiel vor, dass der linke Stoßstangensensor am VR-Roboter gedrückt wird und der Befehl left_bumper.pressed True zurückgibt. Das Schlüsselwort not invertiert den Booleschen Wert und sorgt dafür, dass dieser Ausdruck „False“ zurückgibt.
not left_bumper.pressed()Abhängig von den von Ihnen verwendeten Sensordaten kann das Schlüsselwort nicht erforderlich sein, damit ein VR-Roboter das gewünschte Verhalten ausführt.
def main():
while not left_bumper.pressed():
drivetrain.drive(FORWARD)
wait(5, MSEC)
drivetrain.stop()Erstellen eines Projekts mit einer While-Schleife und dem Bumper-Sensor
Projekt benennen und speichern
- Öffnen Sie ein neues Textprojekt und wählen Sie den Wall Maze Playground aus, wenn Sie dazu aufgefordert werden.

-
Benennen Sie das Projekt Unit4Lesson2.

-
Ziehen Sie den Befehl while in den Arbeitsbereich oder geben Sie ihn dort ein, um den Befehl „Drivetrain“ zu ersetzen, der automatisch als Teil eines neuen Textprojekts eingefügt wird. Beachten Sie, dass sich innerhalb der Schleife ein Wartebefehl befindet. Entfernen Sie nicht den Wartebefehl, um sicherzustellen, dass der VR-Roboter das Projekt korrekt ausführt. Ihr Projekt sollte wie folgt aussehen:
def main(): while Bedingung: wait(5, MS) -
Geben Sie einen NICHT-Operator nach dem 'while' im while-Befehl ein. Ihr Projekt sollte nun so aussehen:
def main(): while not Bedingung: wait(5, MS) -
Ziehen oder geben Sie den Befehl left_bumper.pressed in die while-Schleife 'condition' ein. Die Befehle in der Schleife werden ausgeführt, während die Bedingung nicht wahr ist, d. h. wenn der linke Stoßfängersensor nicht gedrückt wird. Ihr Projekt sollte nun so aussehen:
def main(): während nicht left_bumper.pressed(): wait(5, MS) -
Ziehen oder tippen Sie den Laufwerksbefehl in die while-Schleife. Stellen Sie sicher , dass der Drive-Befehl und der Wait-Befehl innerhalb der while-Schleife korrekt eingerückt sind, damit die Schleife wie vorgesehen läuft. Sie können die Führungslinien als visuelle Hilfe verwenden. Ihr Projekt sollte nun so aussehen:
def main(): while not left_bumper.pressed(): antriebsstrang.antrieb(VORWÄRTS) warten(5, MS) -
Ziehen oder geben Sie einen Stoppbefehl außerhalb der while-Schleife ein. Stellen Sie sicher, dass der Stoppbefehl mit der while-Schleife ausgerichtet und nicht eingerückt ist, damit er wie beabsichtigt außerhalb der Schleife läuft. Sie können die Führungslinien als visuelle Hilfe verwenden. Ihr Projekt sollte nun so aussehen:
def main(): while not left_bumper.pressed(): drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain.stop() - Öffnen Sie das Playground-Fenster , wenn es noch nicht geöffnet ist. Achte darauf, dass sich der Wall Maze Playground öffnet.
- Führen Sie das Projekt aus.
- Beobachten Sie den VR-Roboter vom Beginn des Wandlabyrinths an und halten Sie an, wenn der Stoßstangensensor von der Wand gedrückt wird.
- Der Befehl Drive ermöglicht es dem VR-Roboter, weiter vorwärts zu fahren, während er den Zustand des Stoßstangensensors mit dem Befehl Left Bumper Pressed überprüft. Sobald der Befehl left_bumper.pressed als True gemeldet wird, wechselt der VR-Roboter zum nächsten Befehl außerhalb der Schleife und stoppt die Fahrt.
Wählen Sie die Schaltfläche Weiter um mit dem Rest dieser Lektion fortzufahren.