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 – True lub False wartoś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

start

Opcjonalnie. Wartość początkowa jest inkluzywna (sekwencja zaczyna się tutaj). Wartość domyślna to 0.

stop

Wartość końcowa ma charakter wyłączny (sekwencja kończy się przed tą liczbą).

step

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 [].