Variables#

Introducción#

Las variables almacenan datos y permiten reutilizarlos y manipularlos a lo largo del 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 es fuertemente tipado, lo que significa que no se pueden realizar operaciones con tipos incompatibles sin convertirlos explícitamente. Por ejemplo:

red_blocks = 2                     # red_blocks is an integer
blue_blocks = "4"                  # blue_blocks is a string
result = red_blocks + blue_blocks  # Creates a TypeError

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

red_blocks = 2     # red_blocks is an integer
blue_blocks = "4"  # blue_blocks is a string

# Convert blue_blocks to an integer before adding
result = int(blue_blocks) + red_blocks

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

  • Variables locales – Declaradas dentro de una función y utilizadas únicamente dentro de ese ámbito; ideales 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 una salida legible.

  • BooleanTrue or False values for logic and decision-making.

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

  • Rango – Genera automáticamente secuencias de números, que se utilizan con mayor frecuencia en bucles.

  • Lista – Una colección modificable de elementos; ú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 tipo tabla.

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

Declarar y asignar una variable#

To create a variable, simply assign a value to a name using the = operator:

distance = 100

Al nombrar una variable, se deben seguir 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 contener 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 ámbito 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!" 
    brain.screen.print(message)

show_local()

Las variables locales se utilizan habitualmente para almacenar valores temporales que solo son relevantes dentro de una función específica o una parte 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 compartir datos entre funciones. Sin embargo, depender excesivamente de las variables globales puede provocar efectos secundarios no deseados, ya que los cambios en una variable en una parte del programa pueden afectar a otras partes de forma impredecible. Por este motivo, generalmente se prefieren las variables locales cuando 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
    brain.screen.print(message)

show_global()
# And you can access 'message' outside a function
brain.screen.print(message)

By default, assigning a value to a variable inside a function creates a local variable. To modify a global variable inside a function, you must explicitly declare it using the global keyword.

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

increase_count()
brain.screen.next_row()
increase_count()

Tipos de datos#

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

Integer#

Un entero es un número entero.

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#

Un float es un número decimal.

# Store a value with decimal points
raw_value = 0.88

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

String#

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

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

A Boolean represents True or False values.

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

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

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

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

range(start, stop, step)

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

  • The stop value is exclusive (the sequence stops before this number).

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

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

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

Lists can be added to using append.

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

Una lista bidimensional, o lista de listas, se utiliza comúnmente para representar cuadrículas, tablas o matrices. Cada sublista representa una fila o una agrupación específica de datos.

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

Puedes modificar elementos específicos o incluso sublistas completas dentro de una lista 2D:

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

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

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

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

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