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:

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

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

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

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

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

def main():
    show_local()

# VR threads — Do not delete
vr_thread(main)

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
    brain.print(message)
    brain.new_line()

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

# VR threads — Do not delete
vr_thread(main)

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
    brain.print("Count: {}".format(count))
    brain.new_line()

def main():
    increase_count()
    increase_count()

# VR threads — Do not delete
vr_thread(main)

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.

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)

# VR threads — Do not delete
vr_thread(main)

Float#

Um float é um número decimal.

def main():
    # Store a value with decimal points
    raw_value = 0.88

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

String#

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

def main():
    # Set the variable to a string then print the string
    message = "Ready!"
    brain.print(message)

# VR threads — Do not delete
vr_thread(main)

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

def main():
    # Set the state of the variable
    delivered = False

    # Print different messages depending on the Boolean.
    if delivered:
        brain.print("Package delivered!")
    else: 
        brain.print("Delivering...")

# VR threads — Do not delete
vr_thread(main)

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

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

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

# VR threads — Do not delete
vr_thread(main)

NoneType#

NoneType representa a ausência de um valor em 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:
        brain.print("No task!")
    else:
        brain.print("Task: {}".format(current_task))

# VR threads — Do not delete
vr_thread(main)

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.

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, DEGREES)

# VR threads — Do not delete
vr_thread(main)

def main():
    # Count by 2 starting at 1 and ending before 12
    for index in range(1, 12, 2): 
        # Print the values with each loop
        brain.print(index)
        brain.new_line()

# VR threads — Do not delete
vr_thread(main)

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 [].

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
        brain.print(index)
        brain.new_line()

# VR threads — Do not delete
vr_thread(main)

Utilize append para adicionar itens a uma lista.

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
        brain.print(index)
        brain.new_line()

# VR threads — Do not delete
vr_thread(main)

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.

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: 
            brain.print(element, ", ")
        brain.new_line()

# VR threads — Do not delete
vr_thread(main)

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

# VR threads — Do not delete
vr_thread(main)

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.

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

    # Print the tuple
    brain.print(set_1)

# VR threads — Do not delete
vr_thread(main)

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