Μεταβλητές#
Εισαγωγή#
Οι μεταβλητές αποθηκεύουν δεδομένα και σας επιτρέπουν να τα επαναχρησιμοποιείτε και να τα χειρίζεστε σε όλο το πρόγραμμά σας. Η 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. Αν και δεν είναι μια εξαντλητική λίστα, καλύπτει τους τύπους που είναι πιο πιθανό να χρησιμοποιήσετε στην πράξη.
Τοπικές μεταβλητές – Δηλώνονται μέσα σε μια συνάρτηση και χρησιμοποιούνται μόνο εντός αυτού του πεδίου εφαρμογής. Ιδανικό για προσωρινές ή απομονωμένες τιμές.
Καθολικές μεταβλητές – Δηλώνονται εκτός οποιασδήποτε συνάρτησης και χρησιμοποιούνται σε όλο το έργο. Κατάλληλες για την κοινή χρήση δεδομένων μεταξύ συναρτήσεων.
Ακέραιος – Ακέραιοι αριθμοί που χρησιμοποιούνται για μέτρηση, αποστάσεις ή οτιδήποτε άλλο χωρίς δεκαδικά ψηφία.
Κυμαινόμενος αριθμός – Αριθμοί με δεκαδικά ψηφία, χρήσιμοι για ακριβείς μετρήσεις ή υπολογισμούς.
Συμβολοσειρά – Τιμές κειμένου, που χρησιμοποιούνται για μηνύματα, ετικέτες ή για την εμφάνιση αναγνώσιμων δεδομένων εξόδου.
Boolean –
TrueήFalseτιμές για τη λογική και τη λήψη αποφάσεων.NoneType – Αντιπροσωπεύει την απουσία μιας τιμής στην Python.
Εύρος – Δημιουργεί αυτόματα ακολουθίες αριθμών, που χρησιμοποιούνται συνήθως σε βρόχους.
Λίστα – Μια συλλογή στοιχείων με δυνατότητα αλλαγής. Κατάλληλη για την αποθήκευση ομάδων τιμών όπως αντικείμενα ή μετρήσεις αισθητήρων.
Δισδιάστατη Λίστα – Μια λίστα λιστών. Ιδανική για την αναπαράσταση γραμμών, πλεγμάτων ή δεδομένων τύπου πίνακα.
Πλειάδα – Μια σταθερή ακολουθία τιμών που δεν μπορεί να αλλάξει. Χρήσιμο για ομαδοποιημένα, αμετάβλητα δεδομένα.
Δήλωση και ανάθεση μεταβλητής#
Για να δημιουργήσετε μια μεταβλητή, απλώς αντιστοιχίστε μια τιμή σε ένα όνομα χρησιμοποιώντας τον τελεστή =:
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)
Από προεπιλογή, η ανάθεση μιας τιμής σε μια μεταβλητή μέσα σε μια συνάρτηση δημιουργεί μια τοπική μεταβλητή. Για να τροποποιήσετε μια καθολική μεταβλητή μέσα σε μια συνάρτηση, πρέπει να τη δηλώσετε ρητά χρησιμοποιώντας τη λέξη-κλειδί global.
# 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)
Σημείωση: Μια συμβολοσειρά πρέπει πάντα να περικλείεται σε αντίστοιχα εισαγωγικά, είτε μονά (’) είτε διπλά (”). Μπορείτε να χρησιμοποιήσετε οποιοδήποτε από τα δύο στυλ, αλλά τα σημάδια έναρξης και λήξης πρέπει να ταιριάζουν.
Boolean#
Μια Λογική τιμή αντιπροσωπεύει True ή False τιμές.
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)
Στοιχεία |
Περιγραφή |
|---|---|
|
Προαιρετικό. Η αρχική τιμή είναι συμπεριληπτική (η ακολουθία ξεκινάει από εδώ). Η προεπιλογή είναι 0. |
|
Η τιμή διακοπής είναι αποκλειστική (η ακολουθία σταματά πριν από αυτόν τον αριθμό). |
|
Προαιρετικό. Το βήμα καθορίζει πόσο αυξάνεται (ή μειώνεται) κάθε αριθμός. Η προεπιλογή είναι 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#
Μια λίστα αποθηκεύει μια ομάδα στοιχείων σε μία μεταβλητή. Μπορείτε να προσθέσετε στοιχεία, να αφαιρέσετε στοιχεία, να αλλάξετε στοιχεία ή να χρησιμοποιήσετε κάθε στοιχείο ένα κάθε φορά στο έργο σας. Οι λίστες είναι χρήσιμες όταν θέλετε να διατηρήσετε μαζί σχετικές τιμές, όπως μετρήσεις αισθητήρων, χρώματα ή ονόματα αντικειμένων. Οι λίστες δημιουργούνται χρησιμοποιώντας αγκύλες [].
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)
Χρησιμοποιήστε την εντολή append για να προσθέσετε στοιχεία σε μια λίστα.
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)
Οι πλειάδες δημιουργούνται χρησιμοποιώντας παρενθέσεις () αντί για αγκύλες [].