Skip to main content

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.

Eine Ansicht von oben auf den Wandlabyrinth-Spielplatz mit dem VR-Roboter am Startort in der Mitte des Spielplatzes. Der Buchstabe A befindet sich direkt links vom Roboter, getrennt durch eine kurze Wand. Die Zahl 1 befindet sich in der rechten Ecke des Roboters, getrennt durch eine vertikale und horizontale Wand.

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.Zu Zeilen mit weniger als Operatoren - die oberste Zeile liest 50 weniger als 25 und ist als "meldet falsch" gekennzeichnet. Die untere Zeile liest 25 weniger als 50 und ist als "Berichte wahr" gekennzeichnet.
  • In ähnlicher Weise wird in diesen Beispielen unter Verwendung des Operators größer als (>) die numerisch korrekte Anweisung True melden.Zu Zeilen mit mehr als Operatoren - die oberste Zeile liest 50 größer als 25 und ist als "Berichte wahr" gekennzeichnet. Die untere Zeile liest 25 größer als 50 und ist als "falsch gemeldet" gekennzeichnet.
  • Der Operator gleich (==) meldet Wahr, wenn die beiden Werte genau gleich sind, und Falsch, wenn sie es nicht sind.Zu Zeilen gleich Operatoren - die oberste Zeile lautet 50 = = 50 und wird als "Berichte wahr" bezeichnet. Die untere Zeile lautet 25 = =  50 und ist als "falsch gemeldet" gekennzeichnet.
    • 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) > 50

Wenn 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).Eine Nahansicht der unteren Mitte des Wall Maze Playground, mit dem VR-Roboter auf dem Startplatz. Ein grüner Pfeil erstreckt sich von der Vorderseite des Roboters bis etwa 50 mm von der ersten gegenüberliegenden Wand und veranschaulicht, wo der Get-Abstand größer als 50 mm als wahr gemeldet wird. Ein roter Pfeil erstreckt sich von der Vorderseite des grünen Pfeils zur Wand und veranschaulicht, wo der Get-Abstand größer als 50 mm als falsch gemeldet wird.

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.

Videodatei

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.

Projektflussdiagramm der while-Schleife im obigen Projekt. Die while-Schleife läuft weiter, wenn der Abstand von der Wand größer als 50 mm ist, und dieser Zustand wird als wahr gemeldet, was dazu führt, dass der Roboter vorwärts fährt. Wenn der Abstand von der Wand nicht größer als 50 ist, meldet der Zustand false und das Projekt existiert in der while-Schleife, wodurch der Roboter die Fahrt stoppt.

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