Proměnné#

Zavedení#

Proměnné ukládají data a umožňují je opakovaně používat a manipulovat s nimi v celém programu. Python je dynamicky typovaný jazyk, což znamená, že typ proměnné není nutné explicitně deklarovat. Místo toho se typ automaticky odvodí na základě hodnoty, která jí je přiřazena. Například:

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

Python je také silně typovaný, což znamená, že nelze provádět operace s nekompatibilními typy bez jejich explicitní konverze. Například:

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

Chcete-li tyto problémy vyřešit, musíte v případě potřeby explicitně převést typy:

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

Toto API vysvětluje běžné typy proměnných v Pythonu. I když se nejedná o vyčerpávající seznam, zahrnuje typy, které v praxi nejpravděpodobněji použijete.

  • Lokální proměnné – Deklarované uvnitř funkce a používané pouze v rámci daného rozsahu platnosti; nejvhodnější pro dočasné nebo izolované hodnoty.

  • Globální proměnné – Deklarované mimo jakoukoli funkci a používané v celém projektu; vhodné pro sdílení dat mezi funkcemi.

  • Celé číslo – Celá čísla používaná pro počítání, vzdálenosti nebo cokoli bez desetinných míst.

  • Float – Čísla s desetinnými čárkami, užitečná pro přesná měření nebo výpočty.

  • String – Textové hodnoty, používané pro zprávy, popisky nebo zobrazení čitelného výstupu.

  • Boolean – True nebo False hodnoty pro logiku a rozhodování.

  • NoneType – Představuje absenci hodnoty v Pythonu.

  • Rozsah – Automaticky generuje sekvence čísel, nejčastěji používané ve smyčkách.

  • Seznam – Měnitelný soubor položek; vhodný pro ukládání skupin hodnot, jako jsou objekty nebo hodnoty ze senzorů.

  • 2D seznam – Seznam seznamů; ideální pro reprezentaci řádků, mřížek nebo tabulkových dat.

  • N-tice – Pevná posloupnost hodnot, kterou nelze změnit; užitečná pro seskupená, neměnná data.

Deklarace a přiřazení proměnné#

Chcete-li vytvořit proměnnou, jednoduše přiřaďte hodnotu názvu pomocí operátoru =:

distance = 100

Při pojmenování proměnné je nutné dodržovat následující pravidla:

  • Název nesmí obsahovat speciální znaky (např. vykřičník).

  • Jméno nemůže začínat číslicí.

  • Název nesmí používat mezery.

  • Název nemůže být rezervovaným slovem ve VEXcode (např. Drivetrain).

Local Variables#

Lokální proměnné jsou definovány uvnitř funkce nebo bloku kódu. Jsou přístupné pouze v rámci dané funkce nebo bloku a nejsou viditelné mimo něj.

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)

Lokální proměnné se běžně používají k ukládání dočasných hodnot, které jsou relevantní pouze v rámci určité funkce nebo části programu.

Global Variables#

Globální proměnné jsou definovány vně jakékoli funkce nebo bloku. Lze k nim přistupovat a číst je kdekoli v programu, včetně uvnitř funkcí.

Poznámka: Globální proměnnou lze použít kdekoli v projektu. To může být užitečné, ale také to může ztížit nalezení chyb. Pokud se hodnota změní, budete možná muset zkontrolovat mnoho částí projektu, abyste zjistili, kde se změnila. Lokální proměnnou použijte, pokud hodnotu potřebuje pouze jedna funkce.

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

Ve výchozím nastavení přiřazení hodnoty proměnné uvnitř funkce vytvoří lokální proměnnou. Chcete-li upravit globální proměnnou uvnitř funkce, musíte ji explicitně deklarovat pomocí klíčového slova 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)

Typy dat#

Proměnné v Pythonu mohou ukládat různé typy dat, z nichž každý je vhodný pro jiné případy použití. Níže jsou uvedeny nejčastěji používané typy:

Integer#

Celé číslo je kladné nebo záporné číslo.

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

Číslo s desetinnou čárkou je číslo s desetinnou čárkou.

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#

Řetězec je posloupnost znaků, běžně používaná pro text.

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)

Poznámka: Řetězec musí být vždy uzavřen v uvozovkách, buď jednoduchých (’), nebo dvojitých (”). Můžete použít kterýkoli styl, ale úvodní a koncová značka se musí shodovat.

Boolean#

Logická hodnota představuje hodnoty True nebo 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)

Booleovské hodnoty lze změnit kdykoli v projektu.

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 představuje absenci hodnoty v Pythonu.

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#

Rozsah je posloupnost čísel, běžně používaná ve smyčkách ke generování číselných sekvencí. Dodržuje formát:

range(start, stop, step)

Součásti

Popis

start

Volitelné. Počáteční hodnota je inkluzivní (sekvence začíná zde). Výchozí hodnota je 0.

stop

Hodnota stop je exkluzivní (sekvence se zastaví před tímto číslem).

step

Volitelné. Krok určuje, o kolik se každé číslo zvýší (nebo sníží). Výchozí hodnota je 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#

Seznam ukládá skupinu položek do jedné proměnné. Položky můžete v projektu přidávat, odebírat, měnit nebo používat každou položku po jedné. Seznamy jsou užitečné, když chcete uchovávat související hodnoty pohromadě, jako jsou hodnoty senzorů, barvy nebo názvy objektů. Seznamy se vytvářejí pomocí hranatých závorek [].

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)

Pro přidání položek do seznamu použijte 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#

2D seznam nebo seznam seznamů se běžně používá k reprezentaci mřížek, tabulek nebo matic. Každý podseznam představuje řádek nebo specifickou skupinu dat.

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)

V 2D seznamu můžete upravovat konkrétní prvky nebo dokonce celé podseznamy:

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#

N-tice je posloupnost položek, které nelze po vytvoření změnit. Často se používají k seskupení souvisejících hodnot.

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

    # Print the tuple
    console.print(set_1)

# Start threads — Do not delete
start_thread(main)

N-tice se vytvářejí pomocí závorek () namísto hranatých závorek [].