Kintamieji#

Įvadas#

Kintamieji saugo duomenis ir leidžia juos pakartotinai naudoti bei manipuliuoti visoje programoje. „Python“ yra dinamiškai tipizuota kalba, o tai reiškia, kad nereikia aiškiai deklaruoti kintamojo tipo. Vietoj to, tipas automatiškai nustatomas pagal jam priskirtą reikšmę. Pavyzdžiui:

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

Python taip pat yra griežtai tipizuotas, o tai reiškia, kad negalite atlikti operacijų su nesuderinamais tipais jų aiškiai nekonvertuodami. Pavyzdžiui:

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

Norėdami išspręsti tokias problemas, turite aiškiai konvertuoti tipus, jei tinka:

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

Šioje API sąsajoje paaiškinami dažniausiai pasitaikantys kintamųjų tipai „Python“ kalboje. Nors tai nėra išsamus sąrašas, jame aprašomi tipai, kuriuos greičiausiai naudosite praktikoje.

  • Vietiniai kintamieji – Deklaruojami funkcijos viduje ir naudojami tik toje srityje; geriausiai tinka laikinoms arba izoliuotoms reikšmėms.

  • Globalieji kintamieji – Deklaruojami už bet kurios funkcijos ribų ir naudojami visame projekte; tinka duomenims bendrinti tarp funkcijų.

  • Sveikasis skaičius – Sveikieji skaičiai, naudojami skaičiavimui, atstumams ar bet kam be dešimtainių trupmenų.

  • Float – skaičiai su taškais, naudingi tiksliems matavimams ar skaičiavimams.

  • Eilutė – Tekstinės reikšmės, naudojamos pranešimams, žymoms arba skaitomos išvesties rodymui.

  • Būlio – True arba False reikšmės logikai ir sprendimų priėmimui.

  • NoneType – Nurodo reikšmės nebuvimą „Python“ kalboje.

  • Diapazonas – Automatiškai generuoja skaičių sekas, dažniausiai naudojamas cikluose.

  • Sąrašas – Keičiamas elementų rinkinys; tinka reikšmių grupėms, pvz., objektams ar jutiklių rodmenims, saugoti.

  • 2D sąrašas – Sąrašų sąrašas; idealiai tinka eilutėms, tinkleliams arba lentelių tipo duomenims pavaizduoti.

  • Tuple – fiksuota reikšmių seka, kurios negalima keisti; naudinga sugrupuotiems, nekintantiems duomenims.

Kintamojo deklaravimas ir priskyrimas#

Norėdami sukurti kintamąjį, tiesiog priskirkite reikšmę pavadinimui naudodami operatorių =:

distance = 100

Pavadinant kintamąjį, reikia laikytis šių taisyklių:

  • Pavadinime negali būti specialiųjų simbolių (pvz., šauktuko).

  • Pavadinimas negali prasidėti skaičiumi.

  • Pavadinime negali būti tarpų.

  • Pavadinimas negali būti rezervuotas žodis VEX kode (pvz., „Drivetrain“).

Local Variables#

Vietiniai kintamieji yra apibrėžti funkcijos arba kodo bloko viduje. Jie pasiekiami tik tos funkcijos arba bloko ribose ir nėra matomi už jų ribų.

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)

Vietiniai kintamieji dažniausiai naudojami laikinoms reikšmėms, kurios yra svarbios tik tam tikroje funkcijoje arba programos dalyje, saugoti.

Global Variables#

Globalūs kintamieji apibrėžiami už bet kurios funkcijos ar bloko ribų. Juos galima pasiekti ir skaityti bet kur programoje, įskaitant funkcijų viduje.

Pastaba: globalusis kintamasis gali būti naudojamas bet kurioje projekto vietoje. Tai gali būti naudinga, tačiau taip pat gali apsunkinti klaidų paiešką. Jei reikšmė pasikeičia, gali tekti patikrinti daugelį projekto dalių, kad pamatytumėte, kur ji pasikeitė. Naudokite vietinį kintamąjį, kai reikšmės reikia tik vienai funkcijai.

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

Pagal numatytuosius nustatymus, priskyrus reikšmę kintamajam funkcijos viduje, sukuriamas lokalus kintamasis. Norėdami modifikuoti globalųjį kintamąjį funkcijos viduje, turite jį aiškiai deklaruoti naudodami raktinį žodį 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)

Duomenų tipai#

„Python“ kintamieji gali saugoti įvairių tipų duomenis, kurių kiekvienas tinka skirtingiems naudojimo atvejams. Žemiau pateikiami dažniausiai naudojami tipai:

Integer#

Sveikasis skaičius yra teigiamas arba neigiamas skaičius.

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

Slankiojantis skaičius yra dešimtainis skaičius su kableliu.

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#

Eilutė yra simbolių seka, dažniausiai naudojama tekstui.

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)

Pastaba: Eilutė visada turi būti rašoma atitinkamose kabutėse – viengubose (’) arba dvigubose (”). Galite naudoti bet kurį stilių, tačiau pradiniai ir uždaromieji kabutės turi sutapti.

Boolean#

Būlio reikšmė yra True True“ (teisinga) arba 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)

Būlio reikšmes galima keisti bet kuriame projekto etape.

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 reiškia reikšmės nebuvimą Python kalboje.

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#

Diapazonas yra skaičių seka, dažniausiai naudojama cikluose skaitinėms sekoms generuoti. Ji atitinka tokį formatą:

range(start, stop, step)

Komponentai

Aprašymas

start

Pasirinktinai. Pradinė reikšmė yra imtinai (seka prasideda čia). Numatytoji reikšmė yra 0.

stop

Stabdymo reikšmė yra neįtraukiama (seka sustoja prieš šį skaičių).

step

Pasirinktinai. Žingsnis nustato, kiek padidėja (arba sumažėja) kiekvienas skaičius. Numatytoji reikšmė yra 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#

Sąrašas saugo elementų grupę viename kintamajame. Galite pridėti elementus, pašalinti juos, keisti juos arba naudoti kiekvieną elementą po vieną savo projekte. Sąrašai yra naudingi, kai norite laikyti susijusias reikšmes kartu, pvz., jutiklių rodmenis, spalvas ar objektų pavadinimus. Sąrašai kuriami naudojant laužtinius skliaustus [].

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)

Norėdami pridėti elementus prie sąrašo, naudokite 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 sąrašas, arba sąrašų sąrašas, dažniausiai naudojamas tinkleliams, lentelėms arba matricoms pavaizduoti. Kiekvienas poskyris žymi eilutę arba konkrečią duomenų grupę.

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)

Galite modifikuoti konkrečius elementus arba net ištisus 2D sąrašo poskyrius:

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#

Rinkinys yra elementų seka, kurios negalima keisti po sukūrimo. Jie dažnai naudojami susijusioms reikšmėms grupuoti.

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

    # Print the tuple
    console.print(set_1)

# Start threads — Do not delete
start_thread(main)

Rinkiniai kuriami naudojant skliaustus () , o ne laužtinius skliaustus [].