Mainīgie lielumi#

Ievads#

Mainīgie glabā datus un ļauj tos atkārtoti izmantot un manipulēt visā programmā. Python ir dinamiski tipizēta valoda, kas nozīmē, ka mainīgā tips nav jādeklarē tieši. Tā vietā tips tiek automātiski secināts, pamatojoties uz tam piešķirto vērtību. Piemēram:

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

Python ir arī stingri tipizēts, kas nozīmē, ka nevar veikt darbības ar nesaderīgiem tipiem, tos nepārveidojot. Piemēram:

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

Lai atrisinātu šādas problēmas, jums ir skaidri jāpārveido tipi, ja nepieciešams:

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

Šis API izskaidro biežāk sastopamos mainīgo tipus valodā Python. Lai gan tas nav pilnīgs saraksts, tas aptver tipus, kurus jūs, visticamāk, izmantosiet praksē.

  • Lokālie mainīgie — deklarēti funkcijas iekšpusē un tiek izmantoti tikai šajā darbības jomā; vislabāk piemēroti pagaidu vai izolētām vērtībām.

  • Globālie mainīgie — deklarēti ārpus jebkuras funkcijas un izmantoti visā projektā; labi piemēroti datu apmaiņai starp funkcijām.

  • Integer – Veseli skaitļi, ko izmanto skaitīšanai, attālumiem vai jebkam citam bez decimāldaļām.

  • Peldošais skaitlis – Skaitļi ar decimālzīmēm, noderīgi precīziem mērījumiem vai aprēķiniem.

  • Virkne – Teksta vērtības, ko izmanto ziņojumiem, etiķetēm vai lasāmas izvades attēlošanai.

  • Būla – True vai False vērtības loģikai un lēmumu pieņemšanai.

  • NoneType – norāda vērtības neesamību Python valodā.

  • Diapazons – Automātiski ģenerē skaitļu secības, visbiežāk tiek izmantotas ciklos.

  • Saraksts — maināma vienumu kolekcija; piemērota vērtību grupu, piemēram, objektu vai sensoru rādījumu, glabāšanai.

  • 2D saraksts — sarakstu saraksts; ideāli piemērots rindu, režģu vai tabulas veida datu attēlošanai.

  • Tuple – Fiksēta vērtību secība, ko nevar mainīt; noderīga grupētiem, nemainīgiem datiem.

Mainīgā deklarēšana un piešķiršana#

Lai izveidotu mainīgo, vienkārši piešķiriet nosaukumam vērtību, izmantojot operatoru =:

distance = 100

Nosaucot mainīgo, jāievēro šādi noteikumi:

  • Nosaukumā nedrīkst būt speciālās rakstzīmes (piemēram, izsaukuma zīme).

  • Nosaukums nevar sākties ar ciparu.

  • Nosaukumā nedrīkst izmantot atstarpes.

  • Nosaukums nevar būt rezervēts vārds VEXkodā (piemēram, Drivetrain).

Local Variables#

Lokālie mainīgie tiek definēti funkcijas vai koda bloka iekšpusē. Tie ir pieejami tikai šīs funkcijas vai bloka ietvaros un nav redzami ārpus tā.

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)

Lokālie mainīgie parasti tiek izmantoti, lai saglabātu pagaidu vērtības, kas ir būtiskas tikai konkrētai funkcijai vai programmas daļai.

Global Variables#

Globālie mainīgie tiek definēti ārpus jebkuras funkcijas vai bloka. Tiem var piekļūt un tos var nolasīt jebkur programmā, tostarp funkciju iekšpusē.

Piezīme: Globālo mainīgo var izmantot jebkur jūsu projektā. Tas var būt noderīgi, taču tas var arī apgrūtināt kļūdu atrašanu. Ja vērtība mainās, iespējams, būs jāpārbauda daudzas projekta daļas, lai redzētu, kur tā ir mainījusies. Izmantojiet lokālo mainīgo, ja vērtība ir nepieciešama tikai 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)

Pēc noklusējuma, piešķirot vērtību mainīgajam funkcijas ietvaros, tiek izveidots lokālais mainīgais. Lai modificētu globālo mainīgo funkcijas ietvaros, tas ir skaidri jādeklarē, izmantojot atslēgvārdu 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)

Datu veidi#

Python mainīgie var uzglabāt dažāda veida datus, katrs no tiem ir piemērots dažādiem lietošanas gadījumiem. Tālāk ir norādīti visbiežāk izmantotie veidi:

Integer#

Vesels skaitlis ir pozitīvs vai negatīvs skaitlis.

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

Plodiņskaitlis ir decimālzīmes skaitlis.

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#

Virkne ir rakstzīmju secība, ko parasti izmanto tekstā.

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)

Piezīme: Virknei vienmēr jābūt ietvertai atbilstošās pēdiņās — vai nu vienpēdiņās (’), vai dubultpēdiņās (”). Varat izmantot jebkuru no šiem stiliem, taču sākuma un beigu pēdiņām ir jāsakrīt.

Boolean#

Būla vērtība apzīmē vērtības True vai 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ūla vērtības var mainīt jebkurā projekta brīdī.

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 apzīmē vērtības neesamību Python valodā.

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#

Diapazons ir skaitļu secība, ko parasti izmanto ciklos, lai ģenerētu skaitliskas secības. Tā atbilst šādam formātam:

range(start, stop, step)

Sastāvdaļas

Apraksts

start

Neobligāti. Sākuma vērtība ir iekļaujoša (secība sākas šeit). Noklusējuma vērtība ir 0.

stop

Apstāšanās vērtība ir izslēdzoša (secība apstājas pirms šī skaitļa).

step

Neobligāti. Solis nosaka, cik daudz katrs skaitlis palielinās (vai samazinās). Noklusējuma vērtība ir 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#

Saraksts vienā mainīgajā saglabā vienumu grupu. Varat pievienot vienumus, noņemt vienumus, mainīt vienumus vai izmantot katru vienumu pa vienam savā projektā. Saraksti ir noderīgi, ja vēlaties saglabāt saistītas vērtības kopā, piemēram, sensoru rādījumus, krāsas vai objektu nosaukumus. Saraksti tiek veidoti, izmantojot kvadrātiekavas [].

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)

Lai sarakstam pievienotu vienumus, izmantojiet 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 saraksts jeb sarakstu saraksts parasti tiek izmantots, lai attēlotu režģus, tabulas vai matricas. Katrs apakšsaraksts apzīmē rindu vai noteiktu datu grupu.

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)

2D sarakstā var modificēt atsevišķus elementus vai pat veselus apakšsarakstus:

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#

Kortežs ir elementu secība, ko pēc to izveides nevar mainīt. Tos bieži izmanto, lai grupētu saistītas vērtības.

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

    # Print the tuple
    console.print(set_1)

# Start threads — Do not delete
start_thread(main)

Korteži tiek veidoti, izmantojot iekavas () , nevis kvadrātiekavas [].