Μεταβλητές#
Εισαγωγή#
Οι μεταβλητές αποθηκεύουν δεδομένα και σας επιτρέπουν να τα επαναχρησιμοποιείτε και να τα χειρίζεστε σε όλο το πρόγραμμά σας. Η Python είναι μια γλώσσα δυναμικής τυποποίησης, που σημαίνει ότι δεν χρειάζεται να δηλώσετε ρητά τον τύπο μιας μεταβλητής. Αντίθετα, ο τύπος συνάγεται αυτόματα με βάση την τιμή που της έχει αντιστοιχιστεί. Για παράδειγμα:
angle = 90 # angle is an integer
dist = "Distance: " # dist is a string
steps = 2.5 # steps is a float
Η Python είναι επίσης έντονα τυποποιημένη, πράγμα που σημαίνει ότι δεν μπορείτε να εκτελέσετε λειτουργίες σε ασύμβατους τύπους χωρίς να τους μετατρέψετε ρητά. Για παράδειγμα:
controller = 1 # controller is an integer
modules = "3" # modules is a string
result = controller + modules # Creates a TypeError
Για να επιλύσετε τέτοια προβλήματα, πρέπει να μετατρέψετε ρητά τους τύπους, εάν είναι απαραίτητο:
controller = 1 # controller is an integer
modules = "3" # modules is a string
# Convert modules to an integer before adding.
result = int(modules) + controller
Αυτό το API εξηγεί τους κοινούς τύπους μεταβλητών στην Python. Αν και δεν είναι μια εξαντλητική λίστα, καλύπτει τους τύπους που είναι πιο πιθανό να χρησιμοποιήσετε στην πράξη.
Τοπικές μεταβλητές – Δηλώνονται μέσα σε μια συνάρτηση και χρησιμοποιούνται μόνο εντός αυτού του πεδίου εφαρμογής. Ιδανικό για προσωρινές ή απομονωμένες τιμές.
Καθολικές μεταβλητές – Δηλώνονται εκτός οποιασδήποτε συνάρτησης και χρησιμοποιούνται σε όλο το έργο. Κατάλληλες για την κοινή χρήση δεδομένων μεταξύ συναρτήσεων.
Ακέραιος – Ακέραιοι αριθμοί που χρησιμοποιούνται για μέτρηση, αποστάσεις ή οτιδήποτε άλλο χωρίς δεκαδικά ψηφία.
Κυμαινόμενος αριθμός – Αριθμοί με δεκαδικά ψηφία, χρήσιμοι για ακριβείς μετρήσεις ή υπολογισμούς.
Συμβολοσειρά – Τιμές κειμένου, που χρησιμοποιούνται για μηνύματα, ετικέτες ή για την εμφάνιση αναγνώσιμων δεδομένων εξόδου.
Boolean –
TrueorFalsevalues 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!"
controller.screen.print(message)
show_local()
Οι τοπικές μεταβλητές χρησιμοποιούνται συνήθως για την αποθήκευση προσωρινών τιμών που είναι σχετικές μόνο σε μια συγκεκριμένη συνάρτηση ή μέρος του προγράμματος.
Global Variables#
Οι καθολικές μεταβλητές ορίζονται εκτός οποιασδήποτε συνάρτησης ή μπλοκ. Μπορούν να προσπελαστούν και να διαβαστούν οπουδήποτε στο πρόγραμμα, συμπεριλαμβανομένων και των συναρτήσεων που βρίσκονται μέσα σε αυτές.
Σημείωση: Μια καθολική μεταβλητή μπορεί να χρησιμοποιηθεί οπουδήποτε στο έργο σας. Αυτό μπορεί να είναι χρήσιμο, αλλά μπορεί επίσης να δυσκολέψει τον εντοπισμό σφαλμάτων. Εάν η τιμή αλλάξει, ίσως χρειαστεί να ελέγξετε πολλά μέρη του έργου για να δείτε πού άλλαξε. Χρησιμοποιήστε μια τοπική μεταβλητή όταν μόνο μία συνάρτηση χρειάζεται την τιμή.
# The variable is defined outside a function.
message = "I'm global!"
def show_global():
# You can access 'message' inside a function.
controller.screen.print(message)
controller.screen.next_row()
show_global()
# And you can access 'message' outside a function.
controller.screen.print(message)
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
controller.screen.print(f"Count: {count}")
controller.screen.next_row()
increase_count()
increase_count()
Τύποι Δεδομένων#
Οι μεταβλητές Python μπορούν να αποθηκεύσουν διάφορους τύπους δεδομένων, καθένας από τους οποίους είναι κατάλληλος για διαφορετικές περιπτώσεις χρήσης. Παρακάτω αναφέρονται οι πιο συχνά χρησιμοποιούμενοι τύποι:
Integer#
Ένας ακέραιος είναι ένας θετικός ή αρνητικός αριθμός.
distance = 50
drone.take_off(climb_to=500)
# Move the robot forward for the variable value in mm.
drone.climb_for(direction=DOWN, distance=distance, velocity=50, units=MM)
wait(2, SECONDS)
# Add to the variable and move forward the new value,
# for 100mm total.
distance = distance + 50
drone.climb_for(direction=UP, distance=distance, velocity=50, units=MM)
wait(2, SECONDS)
drone.land()
Float#
Ένας float είναι ένας αριθμός με υποδιαστολή.
# Store a value with decimal points.
raw_value = 0.88
# Print the decimal value as a percentage.
controller.screen.print(raw_value * 100, "%")
String#
Μια συμβολοσειρά είναι μια ακολουθία χαρακτήρων, που χρησιμοποιείται συνήθως για κείμενο.
# Set the variable to a string then print the string.
message = "Ready!"
controller.screen.print(message)
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.
# Set the state of the variable.
delivered = False
# Print different messages depending on the Boolean.
if delivered:
controller.screen.print("Package delivered!")
else:
controller.screen.print("Delivering...")
Οι λογικές τιμές μπορούν να αλλάξουν σε οποιοδήποτε σημείο του έργου.
# Print the value of the delivered variable
delivered = True
controller.screen.print(delivered)
wait(2,SECONDS)
# Clear the screen and print the value of the variable again
controller.screen.clear_screen(color=GREEN)
delivered = False
controller.screen.print(delivered)
NoneType#
NoneType αντιπροσωπεύει την απουσία μιας τιμής στην Python.
# Write what the controller's task should be as a string
current_task = None
# Check if a task is assigned
if current_task is None:
controller.screen.print("No task!")
else:
controller.screen.print(f"Task: {current_task}")
Range#
Ένα εύρος είναι μια ακολουθία αριθμών, που χρησιμοποιείται συνήθως σε βρόχους για τη δημιουργία αριθμητικών ακολουθιών. Ακολουθεί τη μορφή:
range(start, stop, step)
Στοιχεία |
Περιγραφή |
|---|---|
|
Προαιρετικό. Η αρχική τιμή είναι συμπεριληπτική (η ακολουθία ξεκινάει από εδώ). Η προεπιλογή είναι 0. |
|
Η τιμή διακοπής είναι αποκλειστική (η ακολουθία σταματά πριν από αυτόν τον αριθμό). |
|
Προαιρετικό. Το βήμα καθορίζει πόσο αυξάνεται (ή μειώνεται) κάθε αριθμός. Η προεπιλογή είναι 1. |
# 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()
# Count by 2 starting at 1 and ending before 12.
for index in range(1, 12, 2):
# Print the values on the screen with each loop.
controller.screen.print(index)
controller.screen.next_row()
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 [].
# Define a list of colors.
colors = ["Red", "Green", "Blue"]
# Repeat for the number of items in the colors list.
for color in colors:
# Print each color in order
controller.screen.print(color)
controller.screen.next_row()
Use append to add items to a list.
# Define a list of colors.
colors = ["Red", "Green", "Blue"]
# Append a new color to the list.
colors.append("Yellow")
# Repeat for the number of items in the colors list.
for color in colors:
# Print each color in order
controller.screen.print(color)
controller.screen.next_row()
2D List#
Μια δισδιάστατη λίστα ή λίστα λιστών χρησιμοποιείται συνήθως για την αναπαράσταση πλεγμάτων, πινάκων ή μητρών. Κάθε υπολίστα αντιπροσωπεύει μια γραμμή ή μια συγκεκριμένη ομαδοποίηση δεδομένων.
# 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:
controller.screen.print(element, end=", ")
controller.screen.next_row()
Μπορείτε να τροποποιήσετε συγκεκριμένα στοιχεία ή ακόμα και ολόκληρες υπολίστες μέσα σε μια δισδιάστατη λίστα:
# 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.
controller.screen.print(matrix[0])
Tuple#
Μια πλειάδα είναι μια ακολουθία στοιχείων που δεν μπορούν να αλλάξουν μετά τη δημιουργία τους. Χρησιμοποιούνται συχνά για την ομαδοποίηση σχετικών τιμών.
# Define a tuple.
set_1 = (100, "Left")
# Print the tuple.
controller.screen.print(set_1)
Tuples are created using parentheses () rather than square brackets [].