Stundas uzdevums: Apvienot 6. tēmā apgūto failu lasīšanu, rakstīšanu, JSON un CSV apstrādi vienkāršā Quiz spēlē ar saglabātiem labākajiem rezultātiem.
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ļā.
Programma sākumā nolasa jautājumus no jautajumi.json faila - katrā ierakstā ir jautājuma teksts, atbilžu varianti un pareizās atbildes indekss. Spēlētājs ievada savu vārdu un atbild uz 5 nejauši izvēlētiem jautājumiem. Pēc spēles rezultāts (vārds, punkti) tiek pievienots highscore.csv failam. Visbeidzot tiek izvadīts TOP 5 spēlētāju saraksts.
with open("highscore.csv", "a", encoding="utf-8") as fails:
fails.write(f"{vards},{punkti}\n")
with open("jautajumi.json", "r", encoding="utf-8") as fails:
jautajumi = json.load(fails)
70 min plāns: JSON ielāde ~20 min, spēles cikls ~25 min, CSV highscore un README ~25 min.
jautajumi.json izveido vismaz 10 jautājumus formātā:
[
{"jautajums": "Cik ir 2+2?", "varianti": ["3","4","5"], "pareiza": 1},
...
]data.py izveido funkciju ielade_jautajumus(), kas atver JSON ar with open() un atgriež sarakstu.print(ielade_jautajumus()) izdrukā jautājumus.spele.py izveido funkciju spele_quiz(jautajumi, vards).random.sample(jautajumi, 5) izvēlies 5 nejaušus jautājumus.for ciklu rādi katru jautājumu, ievāc atbildi un palielini punktus, ja atbilde pareiza.highscore.py izveido saglaba(vards, punkti), kas pievieno rindu CSV failam (mode "a").paradi_top(), kas nolasa CSV, sakārto pēc punktiem dilstošā secībā un izvada TOP 5.main.py savieno visu: ielādē jautājumus, palaiž spēli, saglabā rezultātu, parāda TOP 5.README.md ar palaišanas instrukciju un JSON formāta aprakstu.Š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 6.6 Noslēguma projekts: Quiz spēle ar Highscore; detalizētu izpratni veidosi nākamajos uzdevumos.
Kopējamais piemērs vai sagatave: izmanto šo bloku kā starta punktu, nevis kā gala risinājumu.
[
{"jautajums": "Cik ir 2+2?", "varianti": ["3","4","5"], "pareiza": 1},
...
]
main.py failā un palaid no termināļa.Pievieno šīs stundas paņēmienu kā nelielu, strādājošu projekta daļu.
punkti, gajiens, atbilde, rezultats vai parbauda_ievadi().Pārbaudi, vai algoritms darbojas paredzami vairākās situācijās.
Ja pamatdarbs ir pabeigts, paplašini projektu ar vienu nelielu programmētu uzlabojumu.
"a", nevis "w".int, pirms salīdzini.jautajumi.json, lai kods un dati būtu atdalīti.| Kritērijs | Sācis (1-3) | Turpina (4-6) | Apguvis (7-8) | Padziļināti (9-10) |
|---|---|---|---|---|
| JSON ielāde | Jautājumi ievietoti tieši kodā. | JSON tiek nolasīts, bet bez kļūdu pārbaudes. | Lieto with open() un kods darbojas ar dažādiem JSON failiem. |
Pievienota validācija (try/except), ja JSON formāts kļūdains. |
| Spēles cikls | Cikls neizpildās vai izraisa kļūdu. | Cikls strādā, bet punktu skaitīšanā ir kļūda. | Cikls korekti rāda jautājumus un skaita punktus. | Pievienots laika ierobežojums vai bonusa punkti. |
| CSV pastāvība | Rezultāts netiek saglabāts. | Rezultāts tiek pārrakstīts katru reizi. | Rezultāts tiek pievienots, TOP 5 tiek pareizi sakārtots. | Veikta papildu analīze (vidējais punktu skaits, statistika). |
| Modularitāte un Git | Viens fails, viens commit. | Vairāki faili, bet imports nepilnīgs. | Sadalīts 3+ moduļos, PEP 8, 4+ commit. | Profesionāls README, type hints, izvērsta Git vēsture. |
main.py.jautajumi.json faila, nevis cietkodēti.highscore.csv (nevis pārrakstīts).import json
def ielade_jautajumus(fails="jautajumi.json"):
"""Nolasa jautājumus no JSON faila un atgriež sarakstu."""
with open(fails, "r", encoding="utf-8") as f:
return json.load(f)
jautajumi = ielade_jautajumus()
print(f"Ielādēti {len(jautajumi)} jautājumi.")