Μεταβλητές#

Εισαγωγή#

Οι μεταβλητές αποθηκεύουν δεδομένα και σας επιτρέπουν να τα επαναχρησιμοποιείτε και να τα χειρίζεστε σε όλο το πρόγραμμά σας. Η Python είναι μια γλώσσα δυναμικής τυποποίησης, που σημαίνει ότι δεν χρειάζεται να δηλώσετε ρητά τον τύπο μιας μεταβλητής. Αντίθετα, ο τύπος συνάγεται αυτόματα με βάση την τιμή που της έχει αντιστοιχιστεί. Για παράδειγμα:

angle = 90           # angle is an integer
dist = "Distance: "  # dist is a string
steps = 2.5          # steps is a float

Η Python είναι επίσης έντονα τυποποιημένη, πράγμα που σημαίνει ότι δεν μπορείτε να εκτελέσετε λειτουργίες σε ασύμβατους τύπους χωρίς να τους μετατρέψετε ρητά. Για παράδειγμα:

blocks = 2                       # blocks is an integer
disks = "4"                      # disks is a string
result = blocks + disks  # Creates a TypeError

Για να επιλύσετε τέτοια προβλήματα, πρέπει να μετατρέψετε ρητά τους τύπους, εάν είναι απαραίτητο:

blocks = 2  # blocks is an integer
disks = "4" # disks is a string

# Convert disks to an integer before adding
result = int(disks) + blocks

Αυτό το API εξηγεί τους κοινούς τύπους μεταβλητών στην Python. Αν και δεν είναι μια εξαντλητική λίστα, καλύπτει τους τύπους που είναι πιο πιθανό να χρησιμοποιήσετε στην πράξη.

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

  • Καθολικές μεταβλητές – Δηλώνονται εκτός οποιασδήποτε συνάρτησης και χρησιμοποιούνται σε όλο το έργο. Κατάλληλες για την κοινή χρήση δεδομένων μεταξύ συναρτήσεων.

  • Ακέραιος – Ακέραιοι αριθμοί που χρησιμοποιούνται για μέτρηση, αποστάσεις ή οτιδήποτε άλλο χωρίς δεκαδικά ψηφία.

  • Κυμαινόμενος αριθμός – Αριθμοί με δεκαδικά ψηφία, χρήσιμοι για ακριβείς μετρήσεις ή υπολογισμούς.

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

  • BooleanTrue or False values for logic and decision-making.

  • NoneType – Αντιπροσωπεύει την απουσία μιας τιμής στην Python.

  • Εύρος – Δημιουργεί αυτόματα ακολουθίες αριθμών, που χρησιμοποιούνται συνήθως σε βρόχους.

  • Λίστα – Μια συλλογή στοιχείων με δυνατότητα αλλαγής. Κατάλληλη για την αποθήκευση ομάδων τιμών όπως αντικείμενα ή μετρήσεις αισθητήρων.

  • Δισδιάστατη Λίστα – Μια λίστα λιστών. Ιδανική για την αναπαράσταση γραμμών, πλεγμάτων ή δεδομένων τύπου πίνακα.

  • Πλειάδα – Μια σταθερή ακολουθία τιμών που δεν μπορεί να αλλάξει. Χρήσιμο για ομαδοποιημένα, αμετάβλητα δεδομένα.

Δήλωση και ανάθεση μεταβλητής#

To create a variable, simply assign a value to a name using the = operator:

distance = 100

Κατά την ονομασία μιας μεταβλητής, πρέπει να τηρούνται οι ακόλουθοι κανόνες:

  • Το όνομα δεν μπορεί να περιέχει ειδικούς χαρακτήρες (π.χ., θαυμαστικό).

  • Το όνομα δεν μπορεί να ξεκινά με αριθμό.

  • Το όνομα δεν μπορεί να χρησιμοποιήσει κενά.

  • Το όνομα δεν μπορεί να είναι δεσμευμένη λέξη στον κώδικα VEX (π.χ., Σύστημα μετάδοσης κίνησης).

Local Variables#

Οι τοπικές μεταβλητές ορίζονται μέσα σε μια συνάρτηση ή ένα μπλοκ κώδικα. Είναι προσβάσιμες μόνο εντός του πεδίου εφαρμογής αυτής της συνάρτησης ή του μπλοκ και δεν είναι ορατές εκτός αυτού.

def show_local():
    # This variable only exists inside this function
    message = "I'm local!" 
    brain.print(message)

def main():
    show_local()

# VR threads — Do not delete
vr_thread(main)

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

Global Variables#

Οι καθολικές μεταβλητές ορίζονται εκτός οποιασδήποτε συνάρτησης ή μπλοκ. Μπορούν να προσπελαστούν και να διαβαστούν οπουδήποτε στο πρόγραμμα, συμπεριλαμβανομένων και των συναρτήσεων που βρίσκονται μέσα σε αυτές.

Σημείωση: Μια καθολική μεταβλητή μπορεί να χρησιμοποιηθεί οπουδήποτε στο έργο σας. Αυτό μπορεί να είναι χρήσιμο, αλλά μπορεί επίσης να δυσκολέψει τον εντοπισμό σφαλμάτων. Εάν η τιμή αλλάξει, ίσως χρειαστεί να ελέγξετε πολλά μέρη του έργου για να δείτε πού άλλαξε. Χρησιμοποιήστε μια τοπική μεταβλητή όταν μόνο μία συνάρτηση χρειάζεται την τιμή.

# The variable is defined outside a function
message = "I'm global!"  

def show_global():
    # You can access 'message' inside a function
    brain.print(message)
    brain.new_line()

def main():
    show_global()
    # And you can access 'message' outside a function
    brain.print(message)

# VR threads — Do not delete
vr_thread(main)

By default, assigning a value to a variable inside a function creates a local variable. To modify a global variable inside a function, you must explicitly declare it using the global keyword.

# Define the global variable
count = 0 

def increase_count():
    # Use the global keyword to let you modify the
    # global variable
    global count
    count = count + 1
    brain.print("Count: {}".format(count))
    brain.new_line()

def main():
    increase_count()
    increase_count()

# VR threads — Do not delete
vr_thread(main)

Τύποι Δεδομένων#

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

Integer#

Ένας ακέραιος είναι ένας θετικός ή αρνητικός αριθμός.

def main():
    distance = 100

    # Move the robot forward for the variable value in mm
    drivetrain.drive_for(FORWARD, distance, MM)

    # Add to the variable and move forward the new value, 
    # for 200mm total
    wait(1, SECONDS)
    distance = distance + 100
    drivetrain.drive_for(FORWARD, distance, MM)

# VR threads — Do not delete
vr_thread(main)

Float#

Ένας float είναι ένας αριθμός με υποδιαστολή.

def main():
    # Store a value with decimal points
    raw_value = 0.88

    # Print the decimal value as a percentage
    brain.print(raw_value * 100, "%")

String#

Μια συμβολοσειρά είναι μια ακολουθία χαρακτήρων, που χρησιμοποιείται συνήθως για κείμενο.

def main():
    # Set the variable to a string then print the string
    message = "Ready!"
    brain.print(message)

# VR threads — Do not delete
vr_thread(main)

Note: A string must always be enclosed within matching quotation marks, either single () or double (). You can use either style, but the opening and closing marks must match.

Boolean#

A Boolean represents True or False values.

def main():
    # Set the state of the variable
    delivered = False

    # Print different messages depending on the Boolean.
    if delivered:
        brain.print("Package delivered!")
    else: 
        brain.print("Delivering...")

# VR threads — Do not delete
vr_thread(main)

Οι λογικές τιμές μπορούν να αλλάξουν σε οποιοδήποτε σημείο του έργου.

def main():
    # Print the value of the delivered variable
    delivered = True
    brain.print(delivered)
    wait(2,SECONDS)

    # Clear the screen and print the value of the variable again
    brain.clear()
    delivered = False
    brain.print(delivered)

# VR threads — Do not delete
vr_thread(main)

NoneType#

NoneType αντιπροσωπεύει την απουσία μιας τιμής στην Python.

def main():
    # Write what the robot's task should be as a string
    current_task = None

    # Check if a task is assigned
    if current_task is None:
        brain.print("No task!")
    else:
        brain.print("Task: {}".format(current_task))

# VR threads — Do not delete
vr_thread(main)

Range#

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

range(start, stop, step)

Στοιχεία

Περιγραφή

start

Προαιρετικό. Η αρχική τιμή είναι συμπεριληπτική (η ακολουθία ξεκινάει από εδώ). Η προεπιλογή είναι 0.

stop

Η τιμή διακοπής είναι αποκλειστική (η ακολουθία σταματά πριν από αυτόν τον αριθμό).

step

Προαιρετικό. Το βήμα καθορίζει πόσο αυξάνεται (ή μειώνεται) κάθε αριθμός. Η προεπιλογή είναι 1.

def main():
    # Drive and turn 4 times to move in a square
    for index in range(4):
        drivetrain.drive_for(FORWARD, 100, MM)
        drivetrain.turn_for(RIGHT, 90, DEGREES)

# VR threads — Do not delete
vr_thread(main)

def main():
    # Count by 2 starting at 1 and ending before 12
    for index in range(1, 12, 2): 
        # Print the values with each loop
        brain.print(index)
        brain.new_line()

# VR threads — Do not delete
vr_thread(main)

List#

A list stores a group of items in one variable. You can add items, remove items, change items, or use each item one at a time in your project. Lists are useful when you want to keep related values together, like sensor readings, colors, or object names. Lists are created using square brackets [].

def main():
    # Define a list of colors
    colors = ["Red", "Green", "Blue", "Purple"]

    # Repeat for the number of items in the colors list
    for index in colors:
        # Print each color in order
        brain.print(index)
        brain.new_line()

# VR threads — Do not delete
vr_thread(main)

Use append to add items to a list.

def main():
    # Define a list of colors
    colors = ["Red", "Green", "Blue", "Purple"]

    # Append a new color to the list
    colors.append("Yellow")

    # Repeat for the number of items in the colors list
    for index in colors:
        # Print each color in order
        brain.print(index)
        brain.new_line()

# VR threads — Do not delete
vr_thread(main)

2D List#

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

def main():
    # Assign the values in the matrix 2D list
    matrix = [
        ["A", 1, "Red"],
        ["B", 2, "Orange"],
        ["C", 3, "Yellow"]
    ]
    # Loop through each row
    for row in matrix: 
        # Loop through each column in the row 
        for element in row: 
            brain.print(element, ", ")
        brain.new_line()

# VR threads — Do not delete
vr_thread(main)

Μπορείτε να τροποποιήσετε συγκεκριμένα στοιχεία ή ακόμα και ολόκληρες υπολίστες μέσα σε μια δισδιάστατη λίστα:

def main():
    # Assign the values in the matrix 2D list
    matrix = [
        ["A", 1, "Red"],
        ["B", 2, "Orange"],
        ["C", 3, "Yellow"]
    ]
    # Modify the color (in column 2) in row 0
    matrix[0][2] = "Blue"

    # Print the modified row from the matrix 2D list 
    brain.print(matrix[0])

# VR threads — Do not delete
vr_thread(main)

Tuple#

Μια πλειάδα είναι μια ακολουθία στοιχείων που δεν μπορούν να αλλάξουν μετά τη δημιουργία τους. Χρησιμοποιούνται συχνά για την ομαδοποίηση σχετικών τιμών.

def main():
    # Define a tuple
    set_1 = (100, "Left")

    # Print the tuple
    brain.print(set_1)

# VR threads — Do not delete
vr_thread(main)

Tuples are created using parentheses () rather than square brackets [].