Muuttujat#

Johdanto#

Muuttujat tallentavat dataa ja mahdollistavat sen uudelleenkäytön ja käsittelyn koko ohjelmassasi. Python on dynaamisesti tyypitetty kieli, mikä tarkoittaa, että sinun ei tarvitse määrittää muuttujan tyyppiä eksplisiittisesti. Sen sijaan tyyppi päätellään automaattisesti sille annetun arvon perusteella. Esimerkiksi:

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

Python on myös vahvasti tyypitetty, mikä tarkoittaa, että yhteensopimattomille tyypeille ei voi suorittaa toimintoja muuntamatta niitä erikseen. Esimerkiksi:

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

Tällaisten ongelmien ratkaisemiseksi sinun on muunnettava tyypit erikseen, jos se on tarkoituksenmukaista:

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

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

Tämä API selittää yleisiä Pythonin muuttujatyyppejä. Vaikka luettelo ei olekaan tyhjentävä, se kattaa tyypit, joita todennäköisimmin käytät käytännössä.

  • Paikalliset muuttujat – Määritetään funktion sisällä ja käytetään vain sen laajuuden sisällä; parhaiten väliaikaisille tai yksittäisille arvoille.

  • Globaalit muuttujat – Esitetään minkä tahansa funktion ulkopuolella ja käytetään koko projektin ajan; hyvä tiedon jakamiseen funktioiden välillä.

  • Integer – Kokonaisluvut, joita käytetään laskemiseen, etäisyyksien määrittämiseen tai mihin tahansa ilman desimaaleja.

  • Float – Desimaalipilkulla varustettuja numeroita, jotka ovat hyödyllisiä tarkkoihin mittauksiin tai laskelmiin.

  • Merkkijono – Tekstiarvot, joita käytetään viesteissä, otsikoissa tai luettavan tulosteen näyttämisessä.

  • Totuusarvo – True tai False arvoa logiikkaa ja päätöksentekoa varten.

  • NoneType – Ilmaisee arvon puuttumista Pythonissa.

  • Alue – Luo automaattisesti numerosarjoja, käytetään yleisimmin silmukoissa.

  • Lista – Muutettava kokoelma kohteita; sopii hyvin arvoryhmien, kuten objektien tai anturilukemien, tallentamiseen.

  • 2D-lista – Luetteloluettelo; ihanteellinen rivien, ruudukoiden tai taulukkomaisen datan esittämiseen.

  • Tuple – Kiinteä arvojen sarja, jota ei voi muuttaa; hyödyllinen ryhmitellylle, muuttumattomalle datalle.

Muuttujan määrittäminen ja sijoittaminen#

Muuttujan luomiseksi anna sille arvo käyttämällä operaattoria =:

distance = 100

Muuttujaa nimettäessä on noudatettava seuraavia sääntöjä:

  • Nimessä ei saa olla erikoismerkkejä (esim. huutomerkkiä).

  • Nimi ei voi alkaa numerolla.

  • Nimessä ei saa käyttää välilyöntejä.

  • Nimi ei voi olla varattu sana VEX-koodissa (esim. Drivetrain).

Local Variables#

Paikalliset muuttujat määritellään funktion tai koodilohkon sisällä. Ne ovat käytettävissä vain kyseisen funktion tai lohkon sisällä, eivätkä ne ole näkyvissä sen ulkopuolella.

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)

Paikallisia muuttujia käytetään yleisesti sellaisten väliaikaisten arvojen tallentamiseen, jotka ovat merkityksellisiä vain tietyssä funktiossa tai ohjelman osassa.

Global Variables#

Globaalit muuttujat määritellään minkä tahansa funktion tai lohkon ulkopuolella. Niitä voi käyttää ja lukea mistä tahansa ohjelmassa, myös funktioiden sisältä.

Huomautus: Globaalia muuttujaa voidaan käyttää missä tahansa projektissasi. Tästä voi olla hyötyä, mutta se voi myös vaikeuttaa virheiden löytämistä. Jos arvo muuttuu, sinun on ehkä tarkistettava useita osia projektista nähdäksesi, missä se on muuttunut. Käytä paikallista muuttujaa, kun vain yksi funktio tarvitsee arvon.

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

Oletusarvoisesti funktion sisällä olevalle muuttujalle arvon määrittäminen luo paikallisen muuttujan. Jos haluat muokata globaalia muuttujaa funktion sisällä, sinun on määriteltävä se eksplisiittisesti käyttämällä avainsanaa 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)

Tietotyypit#

Python-muuttujiin voidaan tallentaa erityyppisiä tietoja, joista jokainen sopii erilaisiin käyttötapauksiin. Alla on lueteltu yleisimmin käytetyt tyypit:

Integer#

Kokonaisluku on positiivinen tai negatiivinen luku.

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#

Liukuluku on desimaaliluku.

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#

Merkkijono on merkkijono, jota käytetään yleisesti tekstissä.

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)

Huomautus: Merkkijonon on aina oltava lainausmerkkien sisällä, jotka ovat joko yksinkertaisia ​​(’) tai kaksinkertaisia ​​(”). Voit käyttää kumpaakin tyyliä, mutta aloittavan ja päättävän merkin on oltava samat.

Boolean#

Totuusarvo edustaa arvoja True tai False.

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)

Totuusarvoja voidaan muuttaa missä tahansa projektin vaiheessa.

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 edustaa arvon puuttumista Pythonissa.

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#

Väliö on numerosarja, jota käytetään yleisesti silmukoissa numeeristen sekvenssien luomiseen. Se noudattaa muotoa:

range(start, stop, step)

Komponentit

Kuvaus

start

Valinnainen. Aloitusarvo on inklusiivinen (sekvenssi alkaa tästä). Oletusarvo on 0.

stop

Pysäytysarvo on poissulkeva (sekvenssi pysähtyy ennen tätä numeroa).

step

Valinnainen. Askel määrittää, kuinka paljon kukin luku kasvaa (tai pienenee). Oletusarvo on 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#

Lista tallentaa joukon alkioita yhteen muuttujaan. Voit lisätä alkioita, poistaa niitä, muuttaa niitä tai käyttää kutakin alkiota yksi kerrallaan projektissasi. Listat ovat hyödyllisiä, kun haluat pitää toisiinsa liittyvät arvot yhdessä, kuten anturilukemat, värit tai objektien nimet. Listat luodaan käyttämällä hakasulkeita [].

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)

Käytä append lisätäksesi kohteita luetteloon.

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#

2D-listaa eli listojen listaa käytetään yleisesti ruudukoiden, taulukoiden tai matriisien esittämiseen. Jokainen alilista edustaa riviä tai tiettyä tietoryhmää.

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)

Voit muokata tiettyjä elementtejä tai jopa kokonaisia ​​alilistoja 2D-listan sisällä:

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#

Tuple (tuple) on joukko alkioita, joita ei voida muuttaa luomisen jälkeen. Niitä käytetään usein ryhmittelemään toisiinsa liittyviä arvoja.

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

    # Print the tuple
    brain.print(set_1)

# VR threads — Do not delete
vr_thread(main)

Tuplet luodaan käyttämällä sulkeita () hakasulkeiden [] sijaan.