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:

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

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

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

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

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

show_local()

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

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

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
    controller.screen.print(f"Count: {count}")
    controller.screen.next_row()

increase_count()
increase_count()

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.

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#

Plodiņskaitlis ir decimālzīmes skaitlis.

# Store a value with decimal points.
raw_value = 0.88

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

String#

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

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

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.

# 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ūla vērtības var mainīt jebkurā projekta brīdī.

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

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

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.

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

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

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

Lai sarakstam pievienotu vienumus, izmantojiet 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 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.

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

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

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

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.

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

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

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