4. tēma: Funkcijas un Modularitāte. 4. stunda: PEP 8 vadlīnijas.

Sasniedzamais rezultāts: Lietot PEP 8 stila vadlīnijas un automatizētus rīkus, lai strukturētu kodu pa failiem un izveidotu spēles mehānikas funkcijas.

SR 2.4.8. (Koda noformēšanas kultūra)

Teorija: PEP 8 Galvenie Standarti

PEP 8 ir pasaulē atzīts Python "etiķetes noteikumu" standarts. Labi noformēts kods ietaupa laiku gan Tev, gan Taviem komandas biedriem, jo kodu praksē daudz biežāk lasa nekā raksta.

# 1. Konstantes raksta ar lielajiem burtiem
MAKS_HP = 100

# 2. snake_case nosaukumi un 3. atstarpes ap operatoriem
def aprekinat_bojas(pamata_bojas, bonuss):
    # Atkāpes ir tieši 4 atstarpes
    kopejas_bojas = pamata_bojas + bonuss
    return kopejas_bojas


# 4. Starp funkcijām ir tieši divas tukšas rindas
rezultats = aprekinat_bojas(10, 5)

1. uzdevums: "Briesmīgā koda" glābšana (Vienkāršs - 15 min)

Tavs uzdevums ir izglābt un padarīt modulāru nekārtīgi uzrakstītu laupījuma (loot) ģenerēšanas skriptu, stingri sekojot PEP 8 standartiem.

Izpildes soļi:

  1. VS Code izveido failu inventars.py un iekopē tajā šo haotisko kodu:
    
    def genLoot(lvl):
    import random
      #ģenerē dārgumus
      somLiel = 20
      m=["Zelts","Zobens","Nekas"]
      if random.randint(1,100)<=lvl*10:return m[0]
      else:return random.choice(m)
    def PrintInv(inv):
     print("Inventārs:"+str(inv))
  2. Pārveido funkciju un mainīgo nosaukumus uz saprotamu snake_case (piem., generet_laupijumu).
  3. Izlabo atkāpes – visur jābūt tieši 4 atstarpēm. Saliec atstarpes ap operatoriem un aiz komatiem.
  4. Aizstāj komentāru #ģenerē mantas ar profesionālu docstring funkcijas iekšpusē un atstāj 2 tukšas rindas starp funkcijām.
  5. Izveido otru failu spele.py. Tajā importē šīs funkcijas un notestē to darbību, padodot spēlētāja līmeni.

2. uzdevums: Automātiskais stilists (Viduvējs - 15 min)

Integrēsi un izmantosi koda formatēšanas paplašinājumu VS Code vidē, lai automatizētu stila kļūdu labošanu.

Izpildes soļi:

  1. Atver VS Code paplašinājumu sadaļu (Extensions) un instalē paplašinājumu Black Formatter.
  2. Izveido jaunu failu testa_vide.py un saraksti tīši nepareizi noformētu kodu vienā garā rindā bez atstarpēm (piem., import time;def f(x):time.sleep(1);return x*2+5).
  3. Izmanto Windows taustiņu kombināciju Shift + Alt + F (Format Document).
  4. Ja VS Code prasa izvēlēties noklusējuma formatētāju, izvēlies Black Formatter.
  5. Novēro, kā VS Code pats automātiski sadala rindas, sakārto atstarpes un atkāpes.

3. uzdevums: Spēles laika mehānika (Padziļināts - 20 min)

Izstrādāsi modularizētu spēles teksta izvades funkciju, kas izmanto time bibliotēku un perfekti atbilst PEP 8 standartiem.

Izpildes soļi:

  1. Izveido jaunu failu riki.py.
  2. Izveido funkciju pauze_pirms_teksta(teksts, sekundes), kas vispirms pagaida norādīto laiku izmantojot time.sleep(), un tad izvada tekstu.
  3. Pievieno funkcijai docstring un nodrošini pareizu atstarpju lietojumu. Izmanto Black Formatter pārbaudei.
  4. Failā spele.py importē šo funkciju un izmanto to, lai radītu spriedzi pirms cīņas sākuma (piem., izvadot "Gatavojies cīņai...", tad pēc 2 sekundēm "...CĪŅA SĀKAS!").

4. EKSTRA uzdevums: Kritiskā trāpījuma pārbaude (20 min)

Izaicinājums: Izveido neatkarīgu kaujas loģikas moduli un veic tā pilnu stilistisko pārbaudi.

Izpildes soļi:

  1. Izveido failu kaujas_logika.py un importē random.
  2. Izveido funkciju aprekinat_uzbrukumu(bazes_bojas, krit_sance).
  3. Funkcijas iekšienē izmanto random.random(). Ja nejaušais skaitlis (no 0.0 līdz 1.0) ir mazāks vai vienāds ar krit_sance (piemēram, 0.2 jeb 20%), funkcija atgriež dubultotas bāzes bojājumus. Ja nē, atgriež parastos.
  4. Pievieno docstring, paskaidrojot abus parametrus un atgriezto vērtību.
  5. Importē un izsauc šo funkciju spele.py failā vismaz 5 reizes ciklā, lai notestētu, cik bieži izkrīt kritiskais trāpījums. Formatē visu projektu ar Shift + Alt + F.

Koda piemērs: PEP 8

# --- SLIKTI ---
def f(x,y):
 return x+y
print(f(1,2))

# --- LABI (PEP 8) ---
def aprekinat_summu(pirmais_skaitlis, otrais_skaitlis):
    """Atgriež divu skaitļu matemātisko summu."""
    return pirmais_skaitlis + otrais_skaitlis


rezultats = aprekinat_summu(1, 2)
print(rezultats)
3
⬅ Iepriekšējā stunda Nākamā stunda ➡