Zmienne#
Wstęp#
Zmienne przechowują dane i umożliwiają ich ponowne wykorzystanie oraz manipulowanie nimi w całym programie. Python jest językiem dynamicznie typowanym, co oznacza, że nie trzeba jawnie deklarować typu zmiennej. Zamiast tego typ jest automatycznie wnioskowany na podstawie przypisanej do niej wartości. Na przykład:
angle = 90 # angle is an integer
dist = "Distance: " # dist is a string
steps = 2.5 # steps is a float
Python jest również silnie typizowany, co oznacza, że nie można wykonywać operacji na niekompatybilnych typach bez ich jawnej konwersji. Na przykład:
red_disks = 2 # red_disks is an integer
green_disks = "4" # green_disks is a string
result = red_disks + green_disks # Creates a TypeError
Aby rozwiązać takie problemy, należy w razie potrzeby jawnie przekonwertować typy:
red_disks = 2 # red_disks is an integer
green_disks = "4" # green_disks is a string
# Convert green_disks to an integer before adding
result = int(green_disks) + red_disks
To API wyjaśnia popularne typy zmiennych w Pythonie. Choć nie jest to wyczerpująca lista, obejmuje ona typy, których najczęściej będziesz używać w praktyce.
Zmienne lokalne – Deklarowane wewnątrz funkcji i używane tylko w jej zasięgu; najlepiej sprawdzają się w przypadku wartości tymczasowych lub izolowanych.
Zmienne globalne – Deklarowane poza jakąkolwiek funkcją i używane w całym projekcie; przydatne do udostępniania danych między funkcjami.
Całkowita – Liczby całkowite używane do liczenia, określania odległości lub czegokolwiek bez części dziesiętnych.
Float – Liczby z przecinkami dziesiętnymi, przydatne do precyzyjnych pomiarów lub obliczeń.
String – Wartości tekstowe używane w wiadomościach, etykietach lub do wyświetlania czytelnych wyników.
Boolean –
TruelubFalsewartości dla logiki i podejmowania decyzji.NoneType – oznacza brak wartości w Pythonie.
Zakres – automatycznie generuje sekwencje liczb, najczęściej używane w pętlach.
Lista – Zmienna kolekcja elementów, przydatna do przechowywania grup wartości, np. obiektów lub odczytów czujników.
Lista 2D – lista list, idealna do przedstawiania wierszy, siatek lub danych w formie tabeli.
Krotka – stała sekwencja wartości, której nie można zmienić; przydatna w przypadku zgrupowanych, niezmiennych danych.
Deklarowanie i przypisywanie zmiennej#
Aby utworzyć zmienną, wystarczy przypisać wartość do nazwy za pomocą operatora =:
distance = 100
Podczas nadawania nazw zmiennej należy przestrzegać następujących zasad:
Nazwa nie może zawierać znaków specjalnych (np. wykrzyknika).
Nazwa nie może zaczynać się od cyfry.
W nazwie nie można używać spacji.
Nazwa nie może być słowem zastrzeżonym w kodzie VEX (np. układ napędowy).
Local Variables#
Zmienne lokalne są definiowane wewnątrz funkcji lub bloku kodu. Są dostępne tylko w zakresie tej funkcji lub bloku i nie są widoczne poza nim.
def show_local():
# This variable only exists inside this function
message = "I'm local!"
console.print(message)
def main():
show_local()
# Start threads — Do not delete
start_thread(main)
Zmiennych lokalnych powszechnie używa się do przechowywania wartości tymczasowych, które są istotne tylko w obrębie konkretnej funkcji lub części programu.
Global Variables#
Zmienne globalne są definiowane poza dowolną funkcją lub blokiem. Można do nich uzyskać dostęp i odczytać je w dowolnym miejscu programu, również wewnątrz funkcji.
Uwaga: zmienna globalna może być używana w dowolnym miejscu projektu. Może to być pomocne, ale może również utrudnić znalezienie błędów. Jeśli wartość ulegnie zmianie, konieczne może być sprawdzenie wielu części projektu, aby dowiedzieć się, gdzie nastąpiła zmiana. Użyj zmiennej lokalnej, gdy tylko jedna funkcja potrzebuje tej wartości.
# The variable is defined outside a function
message = "I'm global!"
def show_global():
# You can access 'message' inside a function
console.print(message)
console.new_line()
def main():
show_global()
# And you can access 'message' outside a function
console.print(message)
# Start threads — Do not delete
start_thread(main)
Domyślnie przypisanie wartości zmiennej wewnątrz funkcji tworzy zmienną lokalną. Aby zmodyfikować zmienną globalną wewnątrz funkcji, należy ją jawnie zadeklarować za pomocą słowa kluczowego 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
console.print("Count: {}".format(count))
def main():
increase_count()
console.new_line()
increase_count()
# Start threads — Do not delete
start_thread(main)
Typy danych#
Zmienne Pythona mogą przechowywać różne typy danych, z których każdy nadaje się do innego zastosowania. Poniżej przedstawiamy najczęściej używane typy:
Integer#
Liczba całkowita jest liczbą dodatnią lub ujemną.
# Build Used: Super Code Base 2.0
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)
# Start threads — Do not delete
start_thread(main)
Float#
Float to liczba dziesiętna.
def main():
# Store a value with decimal points
raw_value = 0.88
# Print the decimal value as a percentage
console.print(raw_value * 100, "%")
# Start threads — Do not delete
start_thread(main)
String#
String to sekwencja znaków powszechnie stosowana w tekście.
def main():
# Set the variable to a string then print the string
message = "Ready!"
console.print(message)
# Start threads — Do not delete
start_thread(main)
Uwaga: Ciąg musi być zawsze ujęty w pasujące cudzysłowy, pojedyncze (’) lub podwójne (”). Możesz użyć dowolnego ze stylów, ale znaki otwierające i zamykające muszą być takie same.
Boolean#
Wartość Boolean reprezentuje wartości True lub False.
def main():
# Set the state of the variable
delivered = False
# Print different messages depending on the Boolean.
if delivered:
console.print("Package delivered!")
else:
console.print("Delivering...")
# Start threads — Do not delete
start_thread(main)
Wartości logiczne można zmieniać w dowolnym momencie projektu.
def main():
# Print the value of the delivered variable
delivered = True
console.print(delivered)
console.new_line()
wait(2,SECONDS)
# Clear the screen and print the value of the variable again
console.clear()
delivered = False
console.print(delivered)
# Start threads — Do not delete
start_thread(main)
NoneType#
NoneType oznacza brak wartości w Pythonie.
def main():
# No task is assigned yet
current_task = None
# Check if a task is assigned
if current_task is None:
console.print("No task!")
else:
console.print("Task: {}".format(current_task))
# Start threads — Do not delete
start_thread(main)
Range#
Zakres to sekwencja liczb, powszechnie używana w pętlach do generowania sekwencji liczbowych. Ma ona następujący format:
range(start, stop, step)
Komponenty |
Opis |
|---|---|
|
Opcjonalnie. Wartość początkowa jest inkluzywna (sekwencja zaczyna się tutaj). Wartość domyślna to 0. |
|
Wartość końcowa ma charakter wyłączny (sekwencja kończy się przed tą liczbą). |
|
Opcjonalnie. Ten krok określa, o ile wzrasta (lub maleje) każda liczba. Domyślnie jest to 1. |
# Build Used: Super Code Base 2.0
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)
# Start threads — Do not delete
start_thread(main)
def main():
# 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
console.print(index)
console.new_line()
# Start threads — Do not delete
start_thread(main)
List#
Lista przechowuje grupę elementów w jednej zmiennej. Możesz dodawać, usuwać, zmieniać lub używać każdego elementu osobno w projekcie. Listy są przydatne, gdy chcesz przechowywać powiązane wartości, takie jak odczyty czujników, kolory lub nazwy obiektów. Listy tworzy się za pomocą nawiasów kwadratowych [].
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
console.print(index)
console.new_line()
# Start threads — Do not delete
start_thread(main)
Użyj polecenia append , aby dodać elementy do listy.
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
console.print(index)
console.new_line()
# Start threads — Do not delete
start_thread(main)
2D List#
Lista 2D, czyli lista list, jest powszechnie używana do reprezentowania siatek, tabel lub macierzy. Każda podlista reprezentuje wiersz lub określoną grupę danych.
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:
console.print(element, ", ")
console.new_line()
# Start threads — Do not delete
start_thread(main)
Można modyfikować poszczególne elementy lub nawet całe podlisty w ramach listy 2D:
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
console.print(matrix[0])
# Start threads — Do not delete
start_thread(main)
Tuple#
Krotka to sekwencja elementów, których nie można zmienić po utworzeniu. Często używa się jej do grupowania powiązanych wartości.
def main():
# Define a tuple
set_1 = (100, "Left")
# Print the tuple
console.print(set_1)
# Start threads — Do not delete
start_thread(main)
Krotki tworzy się za pomocą nawiasów () zamiast nawiasów kwadratowych [].