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:

blocks = 2                       # blocks is an integer
rings = "4"                      # rings is a string
result = blocks + rings          # Creates a TypeError

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

blocks = 2  # blocks is an integer
rings = "4" # rings is a string

# Convert rings to an integer before adding
result = int(rings) + blocks

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!" 
    brain.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
    brain.screen.print(message)
    brain.screen.next_row()

show_global()
# And you can access 'message' outside a function
brain.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
    brain.screen.print("Count: {}".format(count))
    brain.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 = 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)

Float#

Ett flyttal är ett decimaltal.

# Store a value with decimal points
raw_value = 0.88

# Print the decimal value as a percentage
brain.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!"
brain.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:
    brain.screen.print("Package delivered!")
else: 
    brain.screen.print("Delivering...")

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

# Print the value of the delivered variable
delivered = True
brain.screen.print(delivered)
wait(2,SECONDS)

# Clear the screen and print the value of the variable again
brain.screen.clear_screen()
delivered = False
brain.screen.print(delivered)

NoneType#

NoneType representerar avsaknaden av ett värde i Python.

# 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.screen.print("No task!")
else:
    brain.screen.print("Task: {}".format(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.

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

# 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
    brain.screen.print(index)
    brain.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", "Purple"]

# Repeat for the number of items in the colors list
for index in colors:
    # Print each color in order
    brain.screen.print(index)
    brain.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", "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.screen.print(index)
    brain.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: 
        brain.screen.print(element, ", ")
    brain.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 
brain.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
brain.screen.print(set_1)

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