Variables#

Introducción#

Las variables almacenan datos y permiten reutilizarlos y manipularlos en todo el programa. Python es un lenguaje de tipado dinámico, lo que significa que no es necesario declarar explícitamente el tipo de una variable. En su lugar, el tipo se infiere automáticamente en función del valor asignado. Por ejemplo:

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

Python también está fuertemente tipado, lo que significa que no se pueden realizar operaciones con tipos incompatibles sin convertirlos explícitamente. Por ejemplo:

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

Para resolver estos problemas, debe convertir explícitamente los tipos, si corresponde:

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

Esta API explica los tipos de variables comunes en Python. Si bien no es una lista exhaustiva, abarca los tipos que probablemente usará en la práctica.

  • Variables locales – Se declaran dentro de una función y solo se usan dentro de ese ámbito; mejor para valores temporales o aislados.

  • Variables globales – Se declaran fuera de cualquier función y se utilizan en todo el proyecto; son útiles para compartir datos entre funciones.

  • Entero – Números enteros utilizados para contar, distancias o cualquier cosa sin decimales.

  • Float – Números con puntos decimales, útiles para mediciones o cálculos precisos.

  • Cadena – Valores de texto, utilizados para mensajes, etiquetas o para mostrar resultados legibles.

  • BooleanoTrue o False valores para la lógica y la toma de decisiones.

  • NoneType – Representa “ningún valor todavía”, a menudo se utiliza como marcador de posición.

  • Rango – Genera automáticamente secuencias de números, comúnmente utilizadas en bucles.

  • Lista – Una colección de elementos modificables; útil para almacenar grupos de valores como objetos o lecturas de sensores.

  • Lista 2D – Una lista de listas; ideal para representar filas, cuadrículas o datos similares a tablas.

  • Tupla – Una secuencia fija de valores que no se pueden cambiar; útil para datos agrupados e inmutables.

Declaración y asignación de una variable#

Para crear una variable, simplemente asigne un valor a un nombre usando el operador =:

distance = 100

Al nombrar una variable, se deben respetar las siguientes reglas:

  • El nombre no puede contener caracteres especiales (por ejemplo, un signo de exclamación).

  • El nombre no puede comenzar con un número.

  • El nombre no puede utilizar espacios.

  • El nombre no puede ser una palabra reservada en VEXcode (por ejemplo, Drivetrain).

Local Variables#

Las variables locales se definen dentro de una función o bloque de código. Solo son accesibles dentro del alcance de esa función o bloque y no son visibles fuera de él.

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)

Las variables locales se utilizan comúnmente para almacenar valores temporales que solo son relevantes dentro de una función o parte específica del programa.

Global Variables#

Las variables globales se definen fuera de cualquier función o bloque. Se puede acceder a ellas y leerlas en cualquier parte del programa, incluso dentro de las funciones.

Nota: Las variables globales son accesibles desde cualquier parte del programa, lo que facilita el intercambio de datos entre funciones. Sin embargo, depender excesivamente de ellas puede tener efectos secundarios no deseados, ya que los cambios en la variable en una parte del programa pueden afectar a otras partes de forma impredecible. Por esta razón, se suelen preferir las variables locales siempre que sea posible, ya que limitan el alcance de una variable a la función específica donde se define. Esto reduce la probabilidad de conflictos y facilita la depuración.

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

De forma predeterminada, al asignar un valor a una variable dentro de una función, se crea una variable local. Para modificar una variable global dentro de una función, debe declararla explícitamente con la palabra clave 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)

Tipos de datos#

Las variables de Python pueden almacenar varios tipos de datos, cada uno adecuado para diferentes casos de uso. A continuación, se muestran los tipos más comunes:

Integer#

Un entero es un número entero.

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

Un float es un número con punto decimal.

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#

Una cadena es una secuencia de caracteres, comúnmente utilizada para texto.

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)

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#

Un booleano representa True o False valores.

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)

Los valores booleanos se pueden cambiar en cualquier momento del proyecto.

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 representa la ausencia de un valor en Python.

def main():
    # 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:
        console.print("No task!")
    else:
        console.print("Task: {}".format(current_task))

# Start threads — Do not delete
start_thread(main)

Range#

Un rango es una secuencia de números, comúnmente utilizada en bucles para generar secuencias numéricas. Su formato es el siguiente:

range(start, stop, step)

  • The start value is inclusive (the sequence begins here). This is an optional parameter that defaults to 0.

  • El valor stop es exclusivo (la secuencia se detiene antes de este número).

  • The step determines how much each number increases (or decreases). This is an optional parameter that defaults 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#

Una lista es una estructura versátil que almacena múltiples valores en una sola variable. Su contenido se puede modificar, acceder e iterar fácilmente.

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)

Se pueden agregar listas usando append.

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#

Una lista 2D, o lista de listas, se usa comúnmente para representar cuadrículas, tablas o matrices. Cada sublista representa una fila o un grupo específico de datos.

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)

Puede modificar elementos específicos o incluso sublistas enteras dentro de una lista 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#

Una tupla es una secuencia de elementos que no se pueden modificar una vez creados. Se suelen usar para agrupar valores relacionados.

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

    # Print the tuple
    console.print(set_1)

# Start threads — Do not delete
start_thread(main)

Tuples are created using parentheses () rather than square brackets [].