Lektion 2: Verwenden von Vergleichsoperatoren
In dieser Lektion lernen Sie Vergleichsoperatoren kennen und verwenden sie in einem Projekt mit Daten vom Abstandssensor. Dann erstellen Sie ein Projekt, das den VR-Roboter mithilfe des Abstandssensors mit while-Schleifen und dem Operator größer als (>) zum Buchstaben ‘A’ navigiert. In der Mini-Challenge wendest du diese Fähigkeiten an, um vom Beginn des Mauerlabyrinths bis zur Zahl "1" zu navigieren.

Lernergebnisse
- Identifizieren Sie, dass größer als (>), kleiner als (<) und gleich (==) Vergleichsoperatoren sind, die zwei Werte vergleichen, die als Operanden bezeichnet werden.
- Identifizieren Sie, dass der Operator größer als (>) zwei Werte vergleicht und True meldet, wenn der linke Wert größer als der rechte Wert ist.
- Stellen Sie fest, dass der Operator less than (<) zwei Werte vergleicht und True meldet, wenn der linke Wert kleiner als der rechte Wert ist.
- Identifizieren Sie, dass die Operatoren größer als (>) oder kleiner als (<) einen True- oder False-Wert melden, wenn sie als Bedingung in einer while-Schleife verwendet werden.
- Beschreiben Sie, wie Sie ein Projekt erstellen, bei dem ein VR-Roboter vorwärts fährt, bis der Wert des Abstandssensors unter einem bestimmten Betrag liegt.
Vergleichsoperatoren
Die Operatoren kleiner als (<), größer als (>) und gleich (==) vergleichen zwei Werte, die auch als Operanden bezeichnet werden. Der Wert auf der linken Seite des Operators ist der erste Operand und der Wert auf der rechten Seite ist der zweite Operand. Operatoren melden boolesche Werte und geben einen True-Wert zurück, wenn der Vergleich korrekt ist, und False, wenn der Vergleich NICHT korrekt ist.
- In diesen Beispielen wird unter Verwendung des Operators less than (<), wenn die Anweisung numerisch korrekt ist, True gemeldet.

- In ähnlicher Weise wird in diesen Beispielen unter Verwendung des Operators größer als (>) die numerisch korrekte Anweisung True melden.

- Der Operator gleich (==) meldet Wahr, wenn die beiden Werte genau gleich sind, und Falsch, wenn sie es nicht sind.
- Beachten Sie, dass das Doppelgleichheitszeichen "gleich" bedeutet und die beiden Werte vergleicht. Ein einzelnes Gleichheitszeichen ist ein Zuweisungsoperator, der einer Variablen einen Wert zuweist.
Vergleichsoperatoren können Dezimalzahlen, ganze Zahlen oder numerische Berichtsbefehle vergleichen.
Verwenden von Vergleichsoperatoren mit Abstandssensordaten
Vergleichsoperatoren sind besonders nützlich, wenn Sie numerische Daten von einem Sensor wie dem Abstandssensor verwenden, um eine Entscheidung für den VR-Roboter zu treffen. In der vorherigen Einheit wurden Daten des Stoßfängersensors verwendet, um den VR-Roboter zu drehen, wenn der Stoßfängersensor gedrückt wurde. Mit einem Vergleichsoperator können wir jedoch Daten aus dem Abstandssensor verwenden, um den VR-Roboter an einem genaueren Ort drehen zu lassen. Dies ist nützlich, um zu vermeiden, in Wände zu fahren, oder um den VR-Roboter an einen bestimmten Ort auf einem Spielplatz zu navigieren.
Daten vom Abstandssensor können als einer der Werte im Vergleichsoperator verwendet werden.
front_distance.get_distance(MM) > 50Wenn wir beispielsweise möchten, dass der VR-Roboter auf ein Objekt wie eine Wand zufährt und dann anhält, wenn er in der Nähe des Objekts ist, können wir dies mit einem Vergleichsoperator und der Funktion get _distance tun. Im Wesentlichen bitten wir den VR-Roboter zu fahren, während der Abstand zwischen dem Roboter und dem Objekt größer als ein Schwellenwert ist, z. B. 50 Millimeter (mm).
Während der Abstandssensor meldet, dass er weiter als 50 Millimeter (mm) oder der Wert größer als (>) 50 ist, kann der VR-Roboter frei fahren. Wenn der Abstandssensor meldet, dass er näher als 50 Millimeter (mm) liegt oder der Wert nicht größer als (>) 50 ist, muss der VR-Roboter anhalten oder sich drehen, bevor er mit der Wand kollidiert.
Zur Kenntnisnahme
Die Auswahl des zu verwendenden Vergleichsoperators kann eine stilistische Wahl sein. Der Operator größer als (>) wurde im obigen Beispiel verwendet, um das Projekt so klar und lesbar wie möglich zu machen. Während sich der VR-Roboter in einem Abstand von mehr als 50 Millimetern befindet, fahren Sie vorwärts. Sie könnten das gleiche Ziel erreichen, indem Sie die Reihenfolge der Werte im Operator umkehren und einen Operator kleiner als (<) verwenden.
während 50 > front_distance.get_distance(MM):Hier würde der VR-Roboter fahren, während 50 Millimeter größer als der vom Abstandssensor gemeldete Wert sind. Der VR-Roboter würde das gleiche Verhalten zeigen, das Projekt ist jedoch etwas weniger klar und lesbar.
Abhängig von den Sensordaten, die Sie verwenden, führt der gleichwertige (==) Bediener möglicherweise nicht dazu, dass der VR-Roboter so funktioniert, wie Sie es beabsichtigt haben. Wenn das Ziel beispielsweise darin besteht, dass der VR-Roboter 50 Millimeter von einem Objekt entfernt anhält, können Sie den Operator gleich (==) verwenden.
während front_distance.get_distance(MM) == 50:Im Wall Maze zum Beispiel würde die Verwendung eines gleichwertigen (==) Bedieners mit dem Abstandssensor jedoch eine so genaue Ablesung vom Sensor erfordern , dass die Geschwindigkeit des VR-Roboters es fast unmöglich machen würde, diese Präzision in Echtzeit zu erreichen. Somit würde der VR-Roboter wahrscheinlich weiter über die Schwelle fahren, denn ob er einen Wert von 100 Millimetern oder 25 Millimetern meldet, keiner von beiden ist gleich 50 mm, so dass der Bediener niemals als wahr meldet.
Vergleichsoperatoren und das Problem des Wandlabyrinths
Eine while-Schleife kann mit Vergleichsoperatoren und dem Abstandssensor verwendet werden, so dass der VR-Roboter die Sensordaten kontinuierlich überprüft und den Vergleich auswertet. Dies kann es dem VR-Roboter ermöglichen, ein Verhalten auszuführen , während ein Wert über oder unter einem bestimmten Schwellenwert liegt. Im Wandlabyrinth besteht das gewünschte Ergebnis darin, dass der VR-Roboter vorwärts fährt, während der Abstandssensor mehr als 50 Millimeter (mm) von der Wand entfernt ist. Dann sollte es anhalten oder sich umdrehen, um durch das Labyrinth zu fahren.
def main():
while front_distance.get_distance(MM) > 50:
drivetrain.drive(FORWARD)
wait(5, MSEC)
drivetrain.stop()In diesem Videoclipbeispiel hält die While-Schleife in dem links gezeigten Projekt den VR-Roboter vom Startort vorwärts, solange die Bedingung erfüllt ist und der Abstand zwischen dem VR-Roboter und dem nächstgelegenen Objekt (der ersten gegenüberliegenden Wand) als größer als 50 Millimeter (mm) angegeben wird. Der Roboter stoppt dann, wenn er sich der ersten Wand nähert und der gemeldete Abstand weniger als 50 mm beträgt.
Dieses Bild erklärt den Ablauf des obigen Projekts:
- Während der Abstandssensor mehr als 50 Millimeter (mm) von der Wand entfernt ist, meldet der Bediener True und bleibt in der While-Schleife
- Wenn er weniger als 50 Millimeter (mm) von der Wand entfernt ist, meldet der Bediener False und verlässt die While-Schleife.

Wählen Sie die Schaltfläche Weiter um mit dem Rest dieser Lektion fortzufahren.