Variablen#

Einführung#

Variablen speichern Daten und ermöglichen deren Wiederverwendung und Bearbeitung im gesamten Programm. Python ist eine dynamisch typisierte Sprache, das heißt, der Typ einer Variablen muss nicht explizit deklariert werden. Stattdessen wird der Typ automatisch anhand des zugewiesenen Werts abgeleitet. Zum Beispiel:

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

Python ist außerdem stark typisiert, was bedeutet, dass Sie keine Operationen mit inkompatiblen Datentypen durchführen können, ohne diese explizit zu konvertieren. Zum Beispiel:

red_disks = 2                       # red_disks is an integer
green_disks = "4"                      # green_disks is a string
result = red_disks + green_disks  # Creates a TypeError

Um solche Probleme zu beheben, müssen Sie die Datentypen gegebenenfalls explizit konvertieren:

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

Diese API erklärt gängige Variablentypen in Python. Die Liste ist zwar nicht vollständig, deckt aber die Typen ab, die Sie in der Praxis am häufigsten verwenden werden.

  • Lokale Variablen – Werden innerhalb einer Funktion deklariert und nur innerhalb dieses Gültigkeitsbereichs verwendet; am besten geeignet für temporäre oder isolierte Werte.

  • Globale Variablen – Werden außerhalb jeder Funktion deklariert und im gesamten Projekt verwendet; gut geeignet, um Daten zwischen Funktionen auszutauschen.

  • Ganzzahl – Ganze Zahlen, die zum Zählen, für Entfernungen oder für alles ohne Dezimalstellen verwendet werden.

  • Float – Zahlen mit Dezimalstellen, nützlich für präzise Messungen oder Berechnungen.

  • String – Textwerte, die für Meldungen, Beschriftungen oder die Anzeige lesbarer Ausgaben verwendet werden.

  • Boolean – True oder False Werte für Logik und Entscheidungsfindung.

  • NoneType – Stellt das Fehlen eines Wertes in Python dar.

  • Bereich – Erzeugt automatisch Zahlenfolgen, die am häufigsten in Schleifen verwendet werden.

  • Liste – Eine veränderliche Sammlung von Elementen; gut geeignet zum Speichern von Wertegruppen wie Objekten oder Sensormesswerten.

  • 2D Liste – Eine Liste von Listen; ideal zur Darstellung von Zeilen, Rastern oder tabellenartigen Daten.

  • Tupel – Eine feste Folge von Werten, die nicht verändert werden kann; nützlich für gruppierte, unveränderliche Daten.

Deklarieren und Zuweisen einer Variablen#

Um eine Variable zu erstellen, weisen Sie ihr einfach einen Wert mit dem Operator = zu:

distance = 100

Bei der Benennung einer Variablen müssen folgende Regeln beachtet werden:

  • Der Name darf keine Sonderzeichen enthalten (z. B. kein Ausrufezeichen).

  • Der Name darf nicht mit einer Zahl beginnen.

  • Der Name darf keine Leerzeichen enthalten.

  • Der Name darf kein reserviertes Wort in VEXcode sein (z. B. Drivetrain).

Local Variables#

Lokale Variablen werden innerhalb einer Funktion oder eines Codeblocks definiert. Sie sind nur innerhalb des Gültigkeitsbereichs dieser Funktion oder dieses Blocks zugänglich und außerhalb davon nicht sichtbar.

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)

Lokale Variablen werden häufig verwendet, um temporäre Werte zu speichern, die nur innerhalb einer bestimmten Funktion oder eines bestimmten Teils des Programms relevant sind.

Global Variables#

Globale Variablen werden außerhalb jeglicher Funktionen oder Blöcke definiert. Sie können überall im Programm, auch innerhalb von Funktionen, aufgerufen und gelesen werden.

Hinweis: Eine globale Variable kann überall im Projekt verwendet werden. Das kann hilfreich sein, erschwert aber auch die Fehlersuche. Ändert sich der Wert, müssen Sie möglicherweise viele Teile des Projekts überprüfen, um die Änderung zu finden. Verwenden Sie eine lokale Variable, wenn nur eine Funktion den Wert benötigt.

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

Standardmäßig erzeugt die Zuweisung eines Wertes zu einer Variablen innerhalb einer Funktion eine lokale Variable. Um eine globale Variable innerhalb einer Funktion zu ändern, müssen Sie sie explizit mit dem Schlüsselwort global deklarieren.

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

Datentypen#

Python-Variablen können verschiedene Datentypen speichern, die jeweils für unterschiedliche Anwendungsfälle geeignet sind. Im Folgenden sind die gebräuchlichsten Typen aufgeführt:

Integer#

Eine ganze Zahl ist eine positive oder negative Zahl.

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

Eine Gleitkommazahl ist eine Dezimalzahl.

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#

Eine Zeichenkette ist eine Folge von Zeichen, die üblicherweise für Texte verwendet wird.

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)

Hinweis: Eine Zeichenkette muss immer in passende Anführungszeichen eingeschlossen werden, entweder in einfache (’) oder doppelte (”). Sie können beide Stile verwenden, aber die öffnenden und schließenden Anführungszeichen müssen übereinstimmen.

Boolean#

Ein Boolescher Wert repräsentiert True (Falsch) oder False Falsch).

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)

Boolesche Werte können zu jedem Zeitpunkt im Projekt geändert werden.

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 repräsentiert das Fehlen eines Wertes in Python.

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#

Ein Bereich ist eine Zahlenfolge, die häufig in Schleifen verwendet wird, um Zahlenfolgen zu erzeugen. Er hat folgendes Format:

range(start, stop, step)

Komponenten

Beschreibung

start

Optional. Der Startwert ist inklusive (die Sequenz beginnt hier). Der Standardwert ist 0.

stop

Der Stoppwert ist exklusiv (die Sequenz endet vor dieser Zahl).

step

Optional. Dieser Schritt bestimmt, um wie viel jede Zahl erhöht (oder verringert) wird. Der Standardwert ist 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#

Eine Liste speichert eine Gruppe von Elementen in einer Variable. Sie können Elemente hinzufügen, entfernen, ändern oder jedes Element einzeln in Ihrem Projekt verwenden. Listen sind nützlich, wenn Sie zusammengehörige Werte wie Sensorwerte, Farben oder Objektnamen zusammenhalten möchten. Listen werden mit eckigen Klammern erstellt [].

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)

Verwenden Sie append , um Elemente zu einer Liste hinzuzufügen.

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#

Eine 2D-Liste, oder Liste von Listen, wird häufig zur Darstellung von Rastern, Tabellen oder Matrizen verwendet. Jede Unterliste repräsentiert eine Zeile oder eine bestimmte Datengruppe.

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)

Sie können einzelne Elemente oder sogar ganze Unterlisten innerhalb einer 2D-Liste ändern:

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#

Ein Tupel ist eine Folge von Elementen, die nach ihrer Erstellung nicht mehr verändert werden können. Tupel werden häufig verwendet, um zusammengehörige Werte zu gruppieren.

def main():
    # Define a tuple
    set_1 = (100, "Left")

    # Print the tuple
    console.print(set_1)

# Start threads — Do not delete
start_thread(main)

Tupel werden mit runden Klammern () anstatt mit eckigen Klammern [] erstellt.