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_blocks = 2                     # red_blocks is an integer
blue_blocks = "4"                  # blue_blocks is a string
result = red_blocks + blue_blocks  # Creates a TypeError

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

red_blocks = 2     # red_blocks is an integer
blue_blocks = "4"  # blue_blocks is a string

# Convert blue_blocks to an integer before adding
result = int(blue_blocks) + red_blocks

Š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 VEXkode (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!" 
    brain.screen.print(message)

show_local()

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
    brain.screen.print(message)

show_global()
# And you can access 'message' outside a function
brain.screen.print(message)

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
    brain.screen.print("Count: {}".format(count))

increase_count()
brain.screen.next_row()
increase_count()

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.

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)

Float#

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

# Store a value with decimal points
raw_value = 0.88

# Print the decimal value as a percentage
print(raw_value * 100, "%")

String#

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

# Set the variable to a string then print the string
message = "Ready!"
brain.screen.print(message)

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.

# Set the state of the variable
delivered = False

# Print different messages depending on the Boolean.
if delivered:
    brain.screen.print("Package delivered!")
else: 
    brain.screen.print("Delivering...")

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

# Print the value of the delivered variable
delivered = True
brain.screen.print(delivered)
wait(2,SECONDS)

# Clear the screen and print the value of the variable again
brain.screen.clear_screen()
delivered = False
brain.screen.print(delivered)

NoneType#

NoneType reiškia reikšmės nebuvimą Python kalboje.

# 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.screen.print("No task!")
else:
    brain.screen.print("Task: {}".format(current_task))

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.

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

# 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
    brain.screen.print(index)
    brain.screen.next_row()

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 [].

# 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.screen.print(index)
    brain.screen.next_row()

Norėdami pridėti elementus prie sąrašo, naudokite append.

# 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.screen.print(index)
    brain.screen.next_row()

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ę.

# 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.screen.print(element, ", ")
    brain.screen.next_row()

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

# 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.screen.print(matrix[0])

Tuple#

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

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

# Print the tuple
brain.screen.print(set_1)

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