Változók#

Bevezetés#

A változók tárolják az adatokat, és lehetővé teszik azok újrafelhasználását és manipulálását a programban. A Python egy dinamikusan típusozott nyelv, ami azt jelenti, hogy nem kell explicit módon deklarálni a változó típusát. Ehelyett a típus automatikusan kikövetkezteti a hozzárendelt érték alapján. Például:

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

A Python erősen típusos, ami azt jelenti, hogy nem lehet műveleteket végrehajtani inkompatibilis típusokon anélkül, hogy explicit módon konvertálnánk őket. Például:

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

Az ilyen problémák megoldásához explicit módon át kell konvertálni a típusokat, ha szükséges:

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

Ez az API a Pythonban gyakori változótípusokat ismerteti. Bár nem teljes lista, lefedi azokat a típusokat, amelyeket a gyakorlatban a legnagyobb valószínűséggel használsz.

  • Lokális változók – Függvényen belül deklarálva, és csak az adott hatókörön belül használva; ideiglenes vagy elszigetelt értékekhez a legmegfelelőbb.

  • Globális változók – Függvényeken kívül deklarálhatók, és a projekt során használják őket; jól használhatók függvények közötti adatmegosztásra.

  • Integer – Egész számok, amelyeket számlálásra, távolságokra vagy tizedesjegyek nélküli bármilyen más értékre használnak.

  • Float – Tizedesvesszővel ellátott számok, amelyek hasznosak a pontos mérésekhez vagy számításokhoz.

  • Karakterlánc – Szöveges értékek, üzenetekhez, címkékhez vagy olvasható kimenet megjelenítéséhez használatos.

  • Boolean – True vagy False érték a logikához és a döntéshozatalhoz.

  • NoneType – Egy érték hiányát jelöli Pythonban.

  • Tartomány – Automatikusan számsorozatokat generál, leggyakrabban ciklusokban használják.

  • Lista – Változtatható elemgyűjtemény; alkalmas értékcsoportok, például objektumok vagy érzékelőértékek tárolására.

  • 2D lista – Listák listája; ideális sorok, rácsok vagy táblázatszerű adatok ábrázolására.

  • Tuple – Egy rögzített értéksorozat, amely nem módosítható; hasznos csoportosított, változatlan adatok esetén.

Változó deklarálása és értékadása#

Változó létrehozásához egyszerűen rendeljünk hozzá egy értéket a névhez a = operátorral:

distance = 100

Változók elnevezésekor a következő szabályokat kell betartani:

  • A név nem tartalmazhat speciális karaktereket (pl. felkiáltójelet).

  • A név nem kezdődhet számmal.

  • A név nem tartalmazhat szóközöket.

  • A név nem lehet foglalt szó a VEXkódban (pl. Drivetrain).

Local Variables#

A lokális változók egy függvényen vagy kódblokkon belül vannak definiálva. Csak az adott függvény vagy blokk hatókörén belül érhetők el, azon kívül nem láthatók.

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)

A lokális változókat általában olyan ideiglenes értékek tárolására használják, amelyek csak egy adott függvényen vagy a program egy részén belül relevánsak.

Global Variables#

A globális változók bármely függvényen vagy blokkon kívül definiálhatók. Hozzáférhetők és olvashatók a program bárhonnan, beleértve a függvényeken belül is.

Megjegyzés: A globális változó a projekted bármely pontján használható. Ez hasznos lehet, de a hibák megtalálását is megnehezítheti. Ha az érték megváltozik, akkor lehet, hogy a projekt számos részét ellenőrizned kell, hogy lásd, hol változott. Használj lokális változót, ha csak egy függvénynek van szüksége az értékre.

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

Alapértelmezés szerint egy függvényen belüli változóhoz érték hozzárendelése lokális változót hoz létre. Egy globális változó módosításához egy függvényen belül explicit módon deklarálni kell azt a global kulcsszó használatával.

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

Adattípusok#

A Python változók különféle típusú adatokat tárolhatnak, amelyek mindegyike más-más felhasználási esetekre alkalmas. Az alábbiakban a leggyakrabban használt típusok láthatók:

Integer#

Az egész szám pozitív vagy negatív szám.

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

A float egy tizedesvesszős szám.

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#

A karakterlánc egy karaktersorozat, amelyet általában szövegekhez használnak.

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)

Megjegyzés: Egy karakterláncot mindig egyező idézőjelek közé kell tenni, amelyek lehetnek egyes (’) vagy dupla (”). Bármelyik stílust használhatod, de a nyitó és záró jelnek meg kell egyeznie.

Boolean#

A Boolean True vagy False értéket jelöl.

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)

A logikai értékek a projekt bármely pontján módosíthatók.

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#

A NoneType egy érték hiányát jelöli Pythonban.

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#

A tartomány egy számsorozat, amelyet általában ciklusokban használnak numerikus sorozatok létrehozására. A formátuma a következő:

range(start, stop, step)

Alkatrészek

Leírás

start

Opcionális. A kezdőérték inkluzív (a sorozat itt kezdődik). Az alapértelmezett érték 0.

stop

A stop érték kizárja a számot (a sorozat e szám előtt megáll).

step

Opcionális. A lépésköz határozza meg, hogy az egyes számok mennyivel növekedjenek (vagy csökkenjenek). Az alapértelmezett érték 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#

Egy lista egy csoport elemet tárol egyetlen változóban. Hozzáadhat elemeket, eltávolíthat elemeket, módosíthat elemeket, vagy egyszerre minden elemet használhat a projektben. A listák akkor hasznosak, ha a kapcsolódó értékeket, például az érzékelők által leolvasott értékeket, a színeket vagy az objektumneveket együtt szeretné tárolni. A listák szögletes zárójelek használatával hozhatók létre [].

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 paranccsal adhatsz hozzá elemeket egy listához.

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#

A 2D listákat, vagy listák listáját általában rácsok, táblázatok vagy mátrixok ábrázolására használják. Minden allista egy sort vagy egy adott adatcsoportot jelöl.

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)

Módosíthat adott elemeket vagy akár teljes allistákat egy 2D listán belül:

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#

A tuple olyan elemek sorozata, amelyek létrehozásuk után nem módosíthatók. Gyakran használják őket kapcsolódó értékek csoportosítására.

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

    # Print the tuple
    console.print(set_1)

# Start threads — Do not delete
start_thread(main)

A tuple-k zárójelek () használatával jönnek létre szögletes zárójelek [] helyett.