›_ ebskola.lv
← 3.5

3.6 Noslēguma projekts: "Gudrais Akmens-Šķēres-Papīrīts"

Stundas uzdevums: Izveidot kļūdu izturīgu "Akmens-Šķēres-Papīrīts" spēli, izmantojot tikai 3. tēmā apgūto: if/elif/else, loģiskos operatorus, while ciklu, break/continue, sarakstus un ievades validāciju.

SR 2.4.10. Atkļūdošana un testēšana SR 2.4.13. Pamatkonstrukcijas un datu tipi SR 2.4.14. Vadības struktūras SR 2.4.16. Saliktas datu struktūras

Pirms sāc: izmanto iepriekš apgūto un šīs lapas teorijas/koda piemērus. Ja vajadzīga jauna komanda vai rīks, vispirms atrodi tās paraugu teorijas sadaļā.

Teorija: tiesnesis, cikls un validācija

Spēlei vajadzīgas trīs pazīstamas daļas. Saraksts glabā atļautās izvēles, random.choice() izvēlas datora gājienu, bet if/elif/else salīdzina spēlētāja un datora izvēli. while True ļauj spēlēt vairākus raundus, bet continue pasargā spēli no nepareizas ievades.

varianti = ["akmens", "skeres", "papirs"]

gajiens = input("Izvēlies: ").lower().strip()
if gajiens not in varianti:
    print("Nederīga izvēle.")
    continue
Iepriekš apgūts: saraksts, input, lower/strip, if un continue.

70 min plāns: spēles kodols ~25 min, validācija un cikls ~25 min, koda noformēšana un GitHub ~20 min.

Praktiskie uzdevumi

1. uzdevums - Iesildies ar gatavu piemēru

Šis ir īss iesildīšanās uzdevums. Nokopē sagatavi, ielīmē to pareizajā koda vietā un palaid. Šeit pietiek droši izmēģināt tēmu 3.6 Noslēguma projekts: "Gudrais Akmens-Šķēres-Papīrīts"; detalizētu izpratni veidosi nākamajos uzdevumos.

Kopējamais piemērs vai sagatave: izmanto šo bloku kā starta punktu, nevis kā gala risinājumu.

varianti = ["akmens", "skeres", "papirs"]

gajiens = input("Izvēlies: ").lower().strip()
if gajiens not in varianti:
    print("Nederīga izvēle.")
    continue
  1. Atver darba failu vai rīku. Python fragmentu ievieto main.py failā un palaid no termināļa.
  2. Nokopē visu piemēra bloku no šī uzdevuma un ielīmē to norādītajā vietā.
  3. Palaid kodu tieši tādu, kāds tas ir, un pārliecinies, ka parādās rezultāts, izvade vai vismaz nav kļūdas paziņojuma.
  4. Atrodi vienu drošu vietu, ko drīkst mainīt: tekstu, skaitli, krāsu, mainīgā vērtību vai testa ierakstu.
  5. Maini tikai šo vienu vērtību un palaid kodu vēlreiz.
  6. Salīdzini rezultātu pirms un pēc izmaiņas. Ja parādās kļūda, atcel pēdējo izmaiņu un palaid vēlreiz.
  7. Turpini pie 2. uzdevuma tikai tad, kad šis mazais piemērs darbojas.

2. uzdevums - Ievieto algoritmu projektā

Pievieno šīs stundas paņēmienu kā nelielu, strādājošu projekta daļu.

  1. Izvēlies vienu konkrētu projekta vietu: ievadi, aprēķinu, izvēli, ciklu, datu struktūru, funkciju vai rezultāta izvadi.
  2. Nosauc funkcijas un mainīgos pēc to lomas, piemēram, punkti, gajiens, atbilde, rezultats vai parbauda_ievadi().
  3. Uzraksti funkciju vai koda bloku, kas nolasa sākuma datus, tos apstrādā un atgriež vai izvada rezultātu.
  4. Savieno šo kodu ar jau esošo projekta plūsmu, nevis atstāj to atsevišķā demonstrācijā.
  5. Pievieno vienu īsu komentāru pie sarežģītākās darbības.
  6. Pārbaudi, ka iepriekšējais kods joprojām darbojas pēc jaunā fragmenta pievienošanas.
  7. Salabo pirmo atrasto kļūdu pirms paplašini risinājumu.
  8. Veic Git commit ar īsu ziņu par pievienoto funkcionalitāti.

3. uzdevums - Testē kodu un izdari secinājumu

Pārbaudi, vai algoritms darbojas paredzami vairākās situācijās.

  1. Izveido trīs testa scenārijus: parasta ievade, robežgadījums un kļūdaina vai tukša ievade.
  2. Palaid parasto scenāriju un pārbaudi termināļa izvadi.
  3. Palaid robežgadījumu ar mazāko, lielāko vai tukšāko vērtību, ko šis kods var saņemt.
  4. Palaid kļūdaino scenāriju un pārbaudi, vai programma neavarē.
  5. Izlabo vienu konkrētu problēmu kodā, datos vai ievades pārbaudē.
  6. Pārbaudi labojumu vēlreiz ar visiem trim scenārijiem.
  7. Beigās pieraksti vienu secinājumu: kura koda rinda vai algoritma solis vislabāk palīdzēja saprast tēmu 3.6 Noslēguma projekts: "Gudrais Akmens-Šķēres-Papīrīts".

Papildu uzdevums - Pievieno mazu funkciju

Ja pamatdarbs ir pabeigts, paplašini projektu ar vienu nelielu programmētu uzlabojumu.

  1. Izvēlies vienu mazu papildinājumu, kas izmanto to pašu šīs stundas paņēmienu.
  2. Pievieno vienu jaunu mainīgo, funkciju, nosacījumu, ciklu, datu elementu vai rezultāta izvadi.
  3. Savieno papildinājumu ar esošo projekta kodu.
  4. Pārbaudi, ka pamatfunkcija un papildinājums darbojas kopā.
  5. Saglabā izmaiņas ar Git commit tikai pēc veiksmīgas pārbaudes.

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

Snieguma līmeņa apraksts (Vērtēšanas tabula)

Kritēriji Sācis apgūt (1-3) Turpina apgūt (4-6) Apguvis (7-8) Apguvis padziļināti (9-10)
Loģika un Nejaušība Dators izvēlas fiksētu gājienu vai loģikā ir kļūdas. Izmantots random, bet spēles rezultāti mēdz būt neprecīzi. Precīza tiesneša loģika un veiksmīga random.choice integrācija. Nevainojama loģika, izmantoti loģiskie operatori koda optimizācijai.
Cikli un Validācija Programma izpildās vienreiz vai avarē pie kļūdainas ievades. Cikls darbojas, bet kļūdaina ievade netiek pilnībā apstrādāta. Lietots while True un break. Programma ir izturīga pret kļūdām. Izmantoti try/except, continue un kompleksi validācijas filtri.
Koda kvalitāte Nav atkāpju, mainīgo nosaukumi ir neskaidri (a, b, c). Kods ir lasāms, bet trūkst konsekvences stila ievērošanā. Ievērots Snake Case. Svarīgākās daļas ir komentētas. Kods ir elegants, profesionāli strukturēts un pašdokumentējošs.
Git vēsture Nav Git vēstures vai tikai viens saglabāšanas punkts. Ir Git vēsture, bet ziņojumi ir neinformatīvi (piem., "fix"). Git vēsture rāda progresu (3+ punkti) ar skaidriem aprakstiem. Vēsture dokumentē loģisku izstrādes gaitu un funkciju pieaugumu.

Koda paraugs iedvesmai

# Profesionālas ievades un cikla kontroles piemērs
import random

varianti = ["akmens", "skeres", "papirs"]

print("--- LAIPNI LŪGTI SPĒLĒ ---")

while True:
    gajiens = input("\nIzvēlies (akmens, skeres, papirs vai stop): ").lower().strip()
    
    if gajiens == "stop":
        print("Paldies par spēli! Uz redzēšanos.")
        break
        
    if gajiens not in varianti:
        print("Kļūda! Lūdzu, raksti kādu no dotajiem variantiem.")
        continue
    
    dators = random.choice(varianti)
    print(f"Dators izvēlējās: {dators}")
    
    # Šeit turpini ar tiesneša loģiku...
Izvēlies: AKMENS
Dators izvēlējās: skeres
Tu uzvarēji! Akmens salauž šķēres.

Izvēlies: stop
Paldies par spēli! Uz redzēšanos.
⬅ Iepriekšējā stunda Tēmas apkopojums ➡