Переменные#

Введение#

Переменные хранят данные и позволяют повторно использовать и изменять их во всей программе. Python — это язык с динамической типизацией, то есть вам не нужно явно указывать тип переменной. Вместо этого тип определяется автоматически на основе присвоенного ей значения. Например:

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

Python также является строго типизированным языком, что означает, что вы не можете выполнять операции над несовместимыми типами без явного преобразования. Например:

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

Для решения подобных проблем необходимо явно преобразовать типы, если это необходимо:

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

В этом API описаны распространенные типы переменных в Python. Хотя это не исчерпывающий список, он охватывает типы, которые вы, скорее всего, будете использовать на практике.

  • Локальные переменные – Объявляются внутри функции и используются только в пределах этой области видимости; лучше всего подходят для временных или изолированных значений.

  • Глобальные переменные – Объявляются вне любой функции и используются во всем проекте; удобны для обмена данными между функциями.

  • Целое число – Целые числа, используемые для счета, измерения расстояний или чего-либо без десятичных знаков.

  • Числа с плавающей запятой – Числа с десятичными знаками, полезные для точных измерений или вычислений.

  • Строка – Текстовые значения, используемые для сообщений, меток или отображения читаемого вывода.

  • Логическое значение – True или False значения для логики и принятия решений.

  • NoneType – Обозначает отсутствие значения в Python.

  • Диапазон – Автоматически генерирует последовательности чисел, чаще всего используемые в циклах.

  • Список – Изменяемая коллекция элементов; хорошо подходит для хранения групп значений, таких как объекты или показания датчиков.

  • Двумерный список – Список списков; идеально подходит для представления строк, таблиц или данных в табличном виде.

  • Кортеж – Фиксированная последовательность значений, которые нельзя изменить; полезно для сгруппированных, неизменяемых данных.

Объявление и присваивание переменной#

Для создания переменной достаточно присвоить ей имя, используя оператор =:

distance = 100

При именовании переменной необходимо соблюдать следующие правила:

  • Имя не может содержать специальные символы (например, восклицательный знак).

  • Имя не может начинаться с цифры.

  • В имени нельзя использовать пробелы.

  • Название не может быть зарезервированным словом в VEXcode (например, Drivetrain).

Local Variables#

Локальные переменные определяются внутри функции или блока кода. Они доступны только в пределах этой функции или блока и не видны за его пределами.

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)

Локальные переменные обычно используются для хранения временных значений, которые актуальны только в рамках конкретной функции или части программы.

Global Variables#

Глобальные переменные определяются вне какой-либо функции или блока. Доступ к ним и их чтение возможны в любом месте программы, включая функции.

Примечание: Глобальную переменную можно использовать в любом месте вашего проекта. Это может быть полезно, но также может затруднить поиск ошибок. Если значение переменной изменится, вам может потребоваться проверить множество частей проекта, чтобы увидеть, где произошло изменение. Используйте локальную переменную, когда значение переменной требуется только одной функции.

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

По умолчанию, присвоение значения переменной внутри функции создает локальную переменную. Чтобы изменить глобальную переменную внутри функции, необходимо явно объявить ее, используя ключевое слово global ( 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)

Типы данных#

Переменные в Python могут хранить различные типы данных, каждый из которых подходит для разных задач. Ниже перечислены наиболее часто используемые типы:

Integer#

Целое число — это положительное или отрицательное число.

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

Число с плавающей запятой (float) — это число с десятичной запятой.

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#

Строка — это последовательность символов, обычно используемая для текста.

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)

Примечание: Строка всегда должна быть заключена в одинаковые кавычки, одинарные (“) или двойные (»). Можно использовать любой стиль, но открывающие и закрывающие кавычки должны совпадать.

Boolean#

Логическое значение (Boolean) обозначает True или False значения.

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)

Логические значения можно изменять на любом этапе проекта.

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

Диапазон (или диапазон) — это последовательность чисел, обычно используемая в циклах для генерации числовых последовательностей. Она имеет следующий формат:

range(start, stop, step)

Компоненты

Описание

start

Необязательно. Начальное значение включает в себя (последовательность начинается здесь). Значение по умолчанию — 0.

stop

Значение остановки является исключительным (последовательность заканчивается до этого числа).

step

Необязательный параметр. Этот шаг определяет, насколько увеличивается (или уменьшается) каждое число. Значение по умолчанию — 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#

Список хранит группу элементов в одной переменной. Вы можете добавлять элементы, удалять элементы, изменять элементы или использовать каждый элемент по отдельности в своем проекте. Списки полезны, когда вы хотите хранить связанные значения вместе, например, показания датчиков, цвета или имена объектов. Списки создаются с помощью квадратных скобок [].

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)

Используйте 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#

Двумерный список, или список списков, обычно используется для представления таблиц, сеток или матриц. Каждый подсписок представляет собой строку или определенную группу данных.

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)

В двумерном списке можно изменять отдельные элементы или даже целые подсписки:

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#

Кортеж — это последовательность элементов, которые нельзя изменить после их создания. Они часто используются для группировки связанных значений.

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

    # Print the tuple
    console.print(set_1)

# Start threads — Do not delete
start_thread(main)

Кортежи создаются с использованием круглых скобок () вместо квадратных скобок [].