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:

controller = 1                 # controller is an integer
modules = "3"                  # modules is a string
result = controller + modules  # Creates a TypeError

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

controller = 1                 # controller is an integer
modules = "3"                  # modules is a string

# Convert modules to an integer before adding.
result = int(modules) + controller

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

show_global()
# And you can access 'message' outside a function.
controller.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
    controller.screen.print(f"Count: {count}")
    controller.screen.next_row()

increase_count()
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 = 50

drone.take_off(climb_to=500)
# Move the robot forward for the variable value in mm.
drone.climb_for(direction=DOWN, distance=distance, velocity=50, units=MM)
wait(2, SECONDS)

# Add to the variable and move forward the new value, 
# for 100mm total.
distance = distance + 50
drone.climb_for(direction=UP, distance=distance, velocity=50, units=MM)
wait(2, SECONDS)

drone.land()

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.
controller.screen.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!"
controller.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:
    controller.screen.print("Package delivered!")
else: 
    controller.screen.print("Delivering...")

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

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

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

NoneType#

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

# Write what the controller's task should be as a string
current_task = None

# Check if a task is assigned
if current_task is None:
    controller.screen.print("No task!")
else:
    controller.screen.print(f"Task: {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.

# Move back and forth four times then land.
drone.take_off(climb_to=500)
for i in range(4):
    drone.move_for(direction=0, distance=500, velocity=50, units=MM)
    wait(1, SECONDS)
    drone.move_for(direction=180, distance=500, velocity=50, units=MM)
    wait(1, SECONDS)
drone.land()

# 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.
    controller.screen.print(index)
    controller.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"]

# Repeat for the number of items in the colors list.
for color in colors:
    # Print each color in order
    controller.screen.print(color)
    controller.screen.next_row()

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

# Define a list of colors.
colors = ["Red", "Green", "Blue"]

# Append a new color to the list.
colors.append("Yellow")

# Repeat for the number of items in the colors list.
for color in colors:
    # Print each color in order
    controller.screen.print(color)
    controller.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: 
        controller.screen.print(element, end=", ")
    controller.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.
controller.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.
controller.screen.print(set_1)

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