4. tēma: 4.2 Vērtību atgriešana (return)

Tavs šīs stundas izaicinājums: Izprast datu plūsmu funkcijās un pielietot Return statement (Atgriešanas komandu), lai aprēķinu rezultātus padotu atpakaļ galvenajai programmai tālākai apstrādei.

2.4.15. Veido modulāras programmas un funkcijas.

Teorija: Datu atgriešanas mehānisms

Funkcijas var ne tikai veikt darbības (kā teksta izvadīšanu), bet arī izrēķināt jaunu vērtību un "atdot" to atpakaļ vietai, no kuras funkcija tika izsaukta. To dara ar atslēgvārdu return.

1. uzdevums: Punktu kalkulators

Izveido vienkāršu funkciju, kas veic aprēķinu un atgriež rezultātu tālākai apstrādei.

Izpildes soļi:

  1. VS Code izveido failu punktu_sistema.py.
  2. Definē funkciju ar diviem Parameters (Parametriem): def aprekinat_punktus(punkti, bonuss):.
  3. Funkcijas iekšienē izveido lokālu mainīgo: kopa = punkti + bonuss.
  4. Nākamajā rindā atgriez šo vērtību, izmantojot return kopa.
  5. Ārpus funkcijas bloka (koda kreisajā malā) izsauc to un saglabā rezultātu mainīgajā: rezultats = aprekinat_punktus(100, 20).
  6. Izdrukā iegūto rezultats terminālī.

2. uzdevums: Veselības stāvokļa pārbaude

Izmanto Return kopā ar Boolean (Patiesumvērtību), lai funkcija kalpotu kā spēles loģikas pārbaude.

Izpildes soļi:

  1. Izveido failu speletaja_statuss.py.
  2. Definē funkciju: def ir_dzivs(hp):.
  3. Funkcijas iekšienē izmanto zarošanos (if/else): ja hp ir lielāks par 0, atgriez True, citādi atgriez False.
  4. Ārpus funkcijas izveido mainīgo mana_veseliba = 45.
  5. Izmanto if konstrukciju, kuras nosacījumā pa tiešo izsauc funkciju: if ir_dzivs(mana_veseliba):.
  6. Ja funkcija atgriež True, izvadi "Turpini cīņu!", ja False – "Spēle beigusies!".

3. uzdevums: Nejaušs ienaidnieka ģenerators

Apvieno random moduli un iespēju atgriezt vairākus mainīgos vienlaicīgi no vienas funkcijas.

Izpildes soļi:

  1. Izveido failu ienaidnieki.py un faila sākumā importē random moduli.
  2. Definē funkciju bez parametriem: def generet_ienaidnieku():.
  3. Funkcijā izveido sarakstu ar pretiniekiem: veidi = ["Skelets", "Orks", "Pūķis"].
  4. Izmanto random.choice(veidi), lai izvēlētos nosaukumu, un random.randint(1, 10) spēka līmenim.
  5. Atgriez abus datus vienā rindā (atdalot ar komatu): return vards, speks.
  6. Ārpus funkcijas izsauc to un "atpako" mainīgos: v, s = generet_ienaidnieku(). Pēc tam izvadi tos terminālī.
  7. Iesūtīt uzdevuma github saiti e-klasē.

Papildus uzdevums: Universāla ievades validācijas funkcija

Apvieno funkcijas ar kļūdu apstrādi, lai izveidotu rīku drošai skaitļu iegūšanai jebkurā spēles brīdī.

Izpildes soļi:

  1. Izveido failu drosa_ievade.py.
  2. Definē funkciju: def iegut_skaitli(jautajums):.
  3. Iekšpusē izveido while True: ciklu ar try/except ValueError bloku.
  4. Iekš try bloka mēģini iegūt lietotāja ievadi: vertiba = int(input(jautajums)).
  5. Ja konvertācija izdodas, atgriez vērtību: return vertiba (return automātiski pārtrauc arī while ciklu!).
  6. Kļūdas gadījumā izvadi brīdinājumu, ļaujot ciklam atkārtoties.
  7. Pārbaudi funkciju ārpus tās: vecums = iegut_skaitli("Cik Tev gadu? ").

Biežākās kļūdas (un kā tās labot):

Koda piemērs: Vērtību iegūšana un atdošana

# Funkcija ieroča bojājuma noteikšanai
def dabut_ieroca_boju(tips):
    if tips == "zobens":
        return 15
    elif tips == "loks":
        return 10
    
    # Noklusējuma vērtība, ja neizpildās if/elif
    return 5

# Saglabājam atgriezto vērtību jaunā mainīgajā
mans_bojajums = dabut_ieroca_boju("zobens")

print(f"Tu nodarīji ienaidniekam {mans_bojajums} HP bojājumu!")
Tu nodarīji ienaidniekam 15 HP bojājumu!
⬅ Iepriekšējā stunda Nākamā stunda ➡