Ελεγχος#

Εισαγωγή#

Το Control στην Python σάς επιτρέπει να λέτε στο ρομπότ πότε να περιμένει, πότε να επαναλαμβάνει ενέργειες, πώς να λαμβάνει αποφάσεις και πότε να τερματίζει το έργο.

Παρακάτω είναι μια λίστα με τα διαθέσιμα στοιχεία ελέγχου, συμπεριλαμβανομένων μεθόδων και βασικών λέξεων-κλειδιών Python:

  • wait – Διακόπτει προσωρινά το έργο για ένα δεδομένο χρονικό διάστημα.

  • for – Επαναλαμβάνει τον κώδικα για κάθε στοιχείο σε μια ακολουθία.

  • if – Εκτελεί κώδικα αν μια συνθήκη είναι αληθής.

  • if/else – Εκτελεί διαφορετικό κώδικα ανάλογα με μια συνθήκη.

  • if/elif/else – Ελέγχει πολλαπλές συνθήκες με τη σειρά.

  • while – Επαναλαμβάνει τον κώδικα όσο μια συνθήκη είναι αληθής.

  • break – Άμεση έξοδος από έναν βρόχο.

  • quit – Τερματίζει το έργο που εκτελείται.

  • pass – Πλαίσιο κράτησης θέσης που χρησιμοποιείται όταν δεν απαιτείται καμία ενέργεια.

wait#

wait κάνει παύση για ένα συγκεκριμένο χρονικό διάστημα πριν μετακινηθεί στην επόμενη γραμμή κώδικα.

Usage:
wait(time, units)

Παράμετροι

Περιγραφή

time

Ο χρόνος αναμονής, ως θετικός ακέραιος αριθμός ή δεκαδικός αριθμός.

units

Η μονάδα που αντιπροσωπεύει τον χρόνο αναμονής: MSEC (προεπιλογή) – χιλιοστά του δευτερολέπτου ή SECONDS

# Fly for 1 second.
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land()

for#

Η συνάρτηση for επαναλαμβάνει ένα σύνολο ενεργειών έναν συγκεκριμένο αριθμό φορών. for μπορεί να χρησιμοποιηθεί για την επανάληψη στοιχείων σε λίστες, πλειάδες, λεξικά, σύνολα, συμβολοσειρές ή για έναν καθορισμένο αριθμό επανάληψης με range.

Χρήση:

for value in expression_list:
    pass

Στοιχεία

Περιγραφή

value

Μια προσωρινή μεταβλητή που αποθηκεύει το τρέχον στοιχείο στην επανάληψη.

expression_list

Η συλλογή στοιχείων που επαναλαμβάνονται (π.χ. λίστα, συμβολοσειρά, εύρος).

# Move back and forth four times then land.
drone.take_off(climb_to=500)
for i in range(4):
    drone.move_for(direction=0, distance=500, velocity=50, units=MM)
    wait(1, SECONDS)
    drone.move_for(direction=180, distance=500, velocity=50, units=MM)
    wait(1, SECONDS)
drone.land()

# Print each item in a list.
colors = ["Red", "Green", "Blue"]
for color in colors:
    controller.screen.print(color)
    controller.screen.next_row()

if#

if εκτελεί το μπλοκ κώδικα με εσοχή αν η συνθήκη είναι True.

Χρήση:

if condition:
    pass

Στοιχεία

Περιγραφή

condition

Μια έκφραση ή μεταβλητή που ελέγχεται κατά την εκτέλεση της πρότασης. Εάν είναι True, ο κώδικας μέσα στο μπλοκ if εκτελείται. Εάν είναι False, το μπλοκ παραλείπεται.

# Take a picture when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
    # Move with controller
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )

    if controller.button5.pressing():
        drone.camera.capture_image(FORWARD_CAMERA)

    wait(5, MSEC)

if/else#

if και else καθορίζουν ποιο μπλοκ κώδικα με εσοχή εκτελείται με βάση το αν η συνθήκη είναι True ή False.

Χρήση:

if condition:
    pass
else:
    pass

Στοιχεία

Περιγραφή

condition

Μια έκφραση ή μεταβλητή που ελέγχεται κατά την εκτέλεση της πρότασης. Εάν είναι True, ο κώδικας μέσα στο μπλοκ if εκτελείται. εάν είναι False, ο κώδικας μέσα στο μπλοκ else εκτελείται αντ’ αυτού.

# Climb when the left joystick is moved up.
drone.take_off(climb_to=500)
while True:
    if controller.axis1.position() > 0:
        drone.climb(direction=UP, velocity=50)
    else:
        drone.hover()
    wait(5, MSEC)

if/elif/else#

Η δομή if/elif/else επιλέγει ποιο μπλοκ κώδικα με εσοχή εκτελείται με βάση τις συνθήκες:

  • if εκτελεί το μπλοκ του αν η συνθήκη είναι True.

  • elif ελέγχει πρόσθετες συνθήκες μόνο εάν όλες οι προηγούμενες συνθήκες είναι elifΜπορούν να χρησιμοποιηθούν πολλαπλές False εντολές elif.

  • else εκτελεί το μπλοκ του μόνο αν καμία από τις προηγούμενες συνθήκες δεν είναι αληθής True.

Χρήση:

if condition:
    pass
elif condition:
    pass
else:
    pass

Στοιχεία

Περιγραφή

condition

Μια έκφραση ή μεταβλητή που ελέγχεται κατά την εκτέλεση της πρότασης. Η πρώτη συνθήκη που είναι True καθορίζει ποιο μπλοκ εκτελείται. Εάν κανένα δεν είναι True, το μπλοκ else εκτελείται.

# Move the drone up or down based on the position of the joystick.
drone.take_off(climb_to=500)
while True:
    position = controller.axis1.position()
    if position > 0:
        drone.climb(direction=UP, velocity=50)
    elif position < 0:
        drone.climb(direction=DOWN, velocity=50)
    else:
        drone.hover()
    wait(5, MSEC)

while#

while εκτελεί επανειλημμένα κώδικα εφόσον η συνθήκη είναι TrueΜπορεί επίσης να χρησιμοποιηθεί ως “για πάντα” χρησιμοποιώντας True ως συνθήκη ή ως “περιμένετε μέχρι” προσθέτοντας not στη συνθήκη, όπως φαίνεται στα παρακάτω παραδείγματα.

Χρήση:

while condition:
    pass

Στοιχεία

Περιγραφή

condition

Μια έκφραση ή μεταβλητή που ελέγχεται πριν από κάθε επανάληψη. Εάν είναι True, ο βρόχος συνεχίζεται. εάν είναι False, ο βρόχος σταματά.

# Hover at 200 mm.
drone.take_off(climb_to=500)
while drone.range.get_distance(DOWNWARD_RANGE, MM) > 200:
    drone.climb(direction=DOWN, velocity=10)
drone.hover()
wait(3, SECONDS)
drone.land()

break#

break τερματίζει αμέσως έναν βρόχο. break μπορεί να χρησιμοποιηθεί για να εγκαταλείψει βρόχους που διαφορετικά θα επαναλαμβάνονταν για πάντα.

# Land when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
    # Move with controller
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    if controller.button5.pressing():
        break
    wait(5, MSEC)
drone.land()

quit#

quit τερματίζει ένα έργο που εκτελείται.

Usage:
quit()

Παράμετροι

Περιγραφή

Αυτή η μέθοδος δεν έχει παραμέτρους.

# Land when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
    # Move with controller
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    if controller.button5.pressing():
        quit()
    wait(5, MSEC)
drone.land()

pass#

Το pass είναι ένα σύμβολο κράτησης θέσης για μελλοντικό κώδικα και μπορεί να χρησιμοποιηθεί για την αποφυγή σφαλμάτων σε κενούς βρόχους, υπό όρους και συναρτήσεις.

if condition:
    pass

def function():
    pass