Variáveis#

Introdução#

As variáveis ​​armazenam dados e permitem reutilizá-los e manipulá-los em todo o seu programa. Python é uma linguagem dinamicamente tipada, o que significa que não tem de declarar o tipo de uma variável explicitamente. Em vez disso, o tipo é inferido automaticamente com base no valor que lhe é atribuído. Por exemplo:

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

O Python também é fortemente tipado, o que significa que não pode realizar operações em tipos incompatíveis sem os converter explicitamente. Por exemplo:

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

Para resolver estes problemas, deve converter explicitamente os tipos, se apropriado:

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

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

Esta API explica os tipos de variáveis ​​mais comuns em Python. Embora não seja uma lista exaustiva, abrange os tipos que provavelmente irá utilizar na prática.

  • Variáveis ​​locais – Declaradas dentro de uma função e utilizadas apenas dentro desse âmbito; melhor para valores temporários ou isolados.

  • Variáveis ​​globais – Declaradas fora de qualquer função e utilizadas em todo o projeto; boas para partilhar dados entre funções.

  • Inteiro – Números inteiros utilizados para contagem, distâncias ou qualquer coisa sem decimais.

  • Float – Números com casas decimais, úteis para medições ou cálculos precisos.

  • String – Valores de texto, utilizados para mensagens, etiquetas ou visualização de saída legível.

  • Booleano – True ou False valores para a lógica e tomada de decisão.

  • NoneType – Representa a ausência de um valor em Python.

  • Range – Gera automaticamente sequências de números, mais comummente utilizadas em loops.

  • List – Uma coleção mutável de itens; bom para armazenar grupos de valores como objetos ou leituras de sensores.

  • Lista 2D – Uma lista de listas; ideal para representar linhas, grelhas ou dados em formato de tabela.

  • Tupla – Uma sequência fixa de valores que não podem ser alterados; útil para dados agrupados e imutáveis.

Declarar e atribuir um valor a uma variável#

Para criar uma variável, basta atribuir um valor a um nome utilizando o operador =:

distance = 100

Ao nomear uma variável, devem ser observadas as seguintes regras:

  • O nome não pode conter caracteres especiais (por exemplo, um ponto de exclamação).

  • O nome não pode começar por um número.

  • O nome não pode conter espaços.

  • O nome não pode ser uma palavra reservada no VEXcode (ex: Drivetrain).

Local Variables#

As variáveis ​​locais são definidas dentro de uma função ou bloco de código. Só são acessíveis no âmbito dessa função ou bloco e não são visíveis fora dele.

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

show_local()

As variáveis ​​locais são normalmente utilizadas para armazenar valores temporários que são relevantes apenas dentro de uma função específica ou parte do programa.

Global Variables#

As variáveis ​​globais são definidas fora de qualquer função ou bloco. Podem ser acedidas e lidas em qualquer lugar do programa, incluindo dentro de funções.

Nota: Uma variável global pode ser utilizada em qualquer parte do seu projeto. Isto pode ser útil, mas também pode dificultar a localização de erros. Se o valor mudar, poderá ser necessário verificar várias partes do projeto para ver onde ocorreu a alteração. Utilize uma variável local quando apenas uma função necessita do valor.

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

Por predefinição, a atribuição de um valor a uma variável dentro de uma função cria uma variável local. Para modificar uma variável global dentro de uma função, deve declará-la explicitamente utilizando a palavra-chave 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()

Tipos de dados#

As variáveis ​​em Python podem armazenar diversos tipos de dados, cada um adequado a diferentes casos de utilização. Abaixo estão os tipos mais comuns:

Integer#

Um número inteiro é um número positivo ou negativo.

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#

Um float é um número decimal.

# Store a value with decimal points.
raw_value = 0.88

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

String#

Uma string é uma sequência de caracteres, normalmente utilizada para texto.

# Set the variable to a string then print the string.
message = "Ready!"
controller.screen.print(message)

Nota: Uma string deve ser sempre delimitada por aspas correspondentes, simples ( ’ ) ou duplas ( ” ). Pode utilizar qualquer um dos estilos, mas as aspas de abertura e fecho devem ser iguais.

Boolean#

Um valor Booleano representa True (Verdadeiro), False Falso).

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

Os valores booleanos podem ser alterados em qualquer ponto do projeto.

# 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 representa a ausência de um valor em 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#

Um intervalo é uma sequência de números, normalmente utilizada em loops para gerar sequências numéricas. Segue o formato:

range(start, stop, step)

Componentes

Descrição

start

Opcional. O valor inicial é inclusivo (a sequência começa aqui). O predefinido é 0.

stop

O valor de paragem é único (a sequência termina antes desse número).

step

Opcional. O incremento determina o quanto cada número aumenta (ou diminui). O predefinido é 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#

Uma lista armazena um grupo de artigos numa variável. Pode adicionar, remover, alterar ou utilizar cada item individualmente no seu projeto. As listas são úteis quando pretende manter valores relacionados juntos, como leituras de sensores, cores ou nomes de objetos. As listas são criadas usando parênteses rectos [].

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

Utilize append para adicionar itens a uma 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#

Uma lista bidimensional, ou lista de listas, é normalmente utilizada para representar grelhas, tabelas ou arrays. Cada sublista representa uma linha ou um agrupamento específico de dados.

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

Pode modificar elementos específicos ou até mesmo sublistas inteiras dentro de uma 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.
controller.screen.print(matrix[0])

Tuple#

Uma tupla é uma sequência de itens que não pode ser alterada após a sua criação. São frequentemente usadas para agrupar valores relacionados.

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

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

As tuplas são criadas utilizando parênteses () em vez de parênteses rectos [].