Variabler#

Introduktion#

Variabler lagrar data och låter dig återanvända och manipulera den i hela ditt program. Python är ett dynamiskt typat språk, vilket innebär att du inte behöver deklarera typen för en variabel explicit. Istället härleds typen automatiskt baserat på det värde som tilldelats den. Till exempel:

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

Python är också starkt typat, vilket innebär att du inte kan utföra operationer på inkompatibla typer utan att explicit konvertera dem. Till exempel:

controller = 1                 # controller is an integer
modules = "3"                  # modules is a string
result = controller + modules  # Creates a TypeError

För att lösa sådana problem måste du explicit konvertera typerna, om det är lämpligt:

controller = 1                 # controller is an integer
modules = "3"                  # modules is a string

# Convert modules to an integer before adding.
result = int(modules) + controller

Detta API förklarar vanliga variabeltyper i Python. Även om det inte är en uttömmande lista, täcker det de typer du troligtvis kommer att använda i praktiken.

  • Lokala variabler – Deklareras inuti en funktion och används endast inom det omfånget; bäst för tillfälliga eller isolerade värden.

  • Globala variabler – Deklareras utanför vilken funktion som helst och används i hela projektet; bra för att dela data mellan funktioner.

  • Heltal – Heltal som används för räkning, avstånd eller allt utan decimaler.

  • Flyttal – Tal med decimaler, användbara för exakta mätningar eller beräkningar.

  • String – Textvärden, används för meddelanden, etiketter eller för att visa läsbar utdata.

  • Booleskt värde – True eller False värden för logik och beslutsfattande.

  • IngenTyp – Representerar avsaknaden av ett värde i Python.

  • Område – Genererar automatiskt talföljder, oftast använd i loopar.

  • Lista – En föränderlig samling av objekt; bra för att lagra grupper av värden som objekt eller sensoravläsningar.

  • 2D-lista – En lista med listor; idealisk för att representera rader, rutnät eller tabellliknande data.

  • Tupel – En fast sekvens av värden som inte kan ändras; användbar för grupperade, oförändrade data.

Deklarera och tilldela en variabel#

För att skapa en variabel, tilldela helt enkelt ett värde till ett namn med hjälp av operatorn =:

distance = 100

När man namnger en variabel måste följande regler följas:

  • Namnet får inte innehålla specialtecken (t.ex. ett utropstecken).

  • Namnet får inte börja med en siffra.

  • Namnet får inte innehålla mellanslag.

  • Namnet får inte vara ett reserverat ord i VEXcode (t.ex. Drivetrain).

Local Variables#

Lokala variabler definieras inuti en funktion eller ett kodblock. De är endast tillgängliga inom funktionens eller blockets omfattning och är inte synliga utanför det.

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

show_local()

Lokala variabler används ofta för att lagra tillfälliga värden som bara är relevanta inom en specifik funktion eller del av programmet.

Global Variables#

Globala variabler definieras utanför vilken funktion eller vilket block som helst. De kan nås och läsas var som helst i programmet, inklusive inuti funktioner.

Obs! En global variabel kan användas var som helst i ditt projekt. Detta kan vara användbart, men det kan också göra det svårare att hitta fel. Om värdet ändras kan du behöva kontrollera många delar av projektet för att se var det ändrades. Använd en lokal variabel när bara en funktion behöver värdet.

# 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)

Som standard skapas en lokal variabel när man tilldelar ett värde till en variabel inuti en funktion. För att modifiera en global variabel inuti en funktion måste du explicit deklarera den med nyckelordet 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
    controller.screen.print(f"Count: {count}")
    controller.screen.next_row()

increase_count()
increase_count()

Typer av data#

Python-variabler kan lagra olika typer av data, som alla är lämpliga för olika användningsfall. Nedan följer de vanligaste typerna:

Integer#

Ett heltal är ett positivt eller negativt tal.

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#

Ett flyttal är ett decimaltal.

# Store a value with decimal points.
raw_value = 0.88

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

String#

En sträng är en sekvens av tecken som vanligtvis används för text.

# 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#

Ett Booleskt-värde representerar True eller False.

# 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...")

Booleanska värden kan ändras när som helst i projektet.

# 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 representerar avsaknaden av ett värde i 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#

Ett intervall är en talsekvens, som vanligtvis används i loopar för att generera numeriska sekvenser. Det följer formatet:

range(start, stop, step)

Komponenter

Beskrivning

start

Valfritt. Startvärdet är inkluderande (sekvensen börjar här). Standardvärdet är 0.

stop

Stoppvärdet är exklusivt (sekvensen stoppar före detta nummer).

step

Valfritt. Steget avgör hur mycket varje tal ökar (eller minskar). Standardvärdet är 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#

En lista lagrar en grupp objekt i en variabel. Du kan lägga till objekt, ta bort objekt, ändra objekt eller använda varje objekt ett i taget i ditt projekt. Listor är användbara när du vill hålla ihop relaterade värden, som sensoravläsningar, färger eller objektnamn. Listor skapas med hjälp av hakparenteser [].

# 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()

Använd append för att lägga till objekt i en lista.

# 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#

En 2D-lista, eller lista med listor, används ofta för att representera rutnät, tabeller eller matriser. Varje dellista representerar en rad eller en specifik gruppering av data.

# 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()

Du kan ändra specifika element eller till och med hela dellistor inom en 2D-lista:

# 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#

En tupel är en sekvens av objekt som inte kan ändras efter att de har skapats. De används ofta för att gruppera relaterade värden tillsammans.

# Define a tuple.
set_1 = (100, "Left")

# Print the tuple.
controller.screen.print(set_1)

Tupler skapas med hjälp av parenteser () istället för hakparenteser [].