5.5 Analīze un integrācija
Stundas uzdevums: Pārvērst viedokļus kodā. Apgūsi, kā analizēt savas Google Forms aptaujas rezultātus un "iesūknēt" populārākās idejas savā spēlē. Redzēsi, ka labs programmētājs ir kā tulks, kurš cilvēku vēlmes pārvērš sarakstos un vārdnīcās.
70 min plāns: Teorija un paraugs (~10 min) · 1. uzdevums (~15 min) - atlasi derīgās atbildes · 2. uzdevums (~25 min) - uzraksti veikala izvadi ar enumerate · 3. uzdevums (~20 min) - savieno aptaujas datus ar spēli. Papildu uzdevumu sāc tikai tad, ja pārējie trīs ir gatavi.
Pirms sāc: atver savu 5.4 stundas failu aptauja.py - šoreiz strādāsi ar tiem pašiem datiem, bet tos filtrēsi un izmantosi.
Teorija: Datu filtrēšana un tulkošana
Reāli dati no lietotājiem gandrīz vienmēr ir "netīri" (drukas kļūdas, dīvaini joki, neatbilstošas tēmas). Programmētāja darbs ir atlasīt vērtīgo.
Kā mēs pārvēršam atbildes kodā?
- Kvantitatīvie dati (Diagrammas): Lielākie "pīrāga" gabali no Multiple Choice jautājumiem kļūst par Tava koda saraksta (list) elementiem. Tas ļauj spēlē automātiski piedāvāt populārākās izvēles.
- Kvalitatīvie dati (Teksts): Brīvās teksta atbildes ir ideāli piemērotas vārdnīcām (dict), kur mēs varam saglabāt saikni:
"Autora vārds": "Viņa foršā ideja".
Profesionāls padoms: "Troksnis" datos
Ja spēlētāji balsoja par "Kosmosa kuģi", bet Tava spēle ir par viduslaiku bruņiniekiem, Tev ir divas izvēles: vai nu ignorēt šo datu punktu kā "troksni", vai arī radoši to pielāgot (piemēram, pievienot lokāciju "Nogāzies dzelzs putns").
Praktiskie uzdevumi
1. uzdevums -
Atlasi derīgās atbildes
Beigās kodā paliks tikai tās atbildes, ko tiešām var izmantot.
- Ieraksti sarakstu ar 6 atbildēm, no kurām divas ir tukšas vai jokojošas.
- Izveido tukšu sarakstu
derigas = []. - Uzraksti ciklu, kas iet cauri visām atbildēm.
- Pievieno nosacījumu, kas izlaiž tukšas atbildes.
- Pievieno derīgās atbildes sarakstā
derigasarappend. - Izdrukā, cik atbildes bija sākumā un cik palika.
Gatavs, kad: izdrukā redzams, ka derīgo atbilžu ir mazāk nekā sākotnējo, un tukšās ir pazudušas.
2. uzdevums -
Uzraksti veikala izvadi ar enumerate
Beigās lietotāju ieteikumi izskatīsies kā numurēts veikala saraksts.
- Uzraksti funkciju
def paradit_veikalu(preces):. - Izdrukā funkcijā virsrakstu
--- LIETOTĀJU IZVĒLĒTĀS PRECES ---. - Uzraksti ciklu
for nr, prece in enumerate(preces, 1):. - Izdrukā ciklā
print(f"{nr}. {prece}"). - Izsauc funkciju ar sarakstu
derigas. - Palaid un pārbaudi, vai numerācija sākas ar 1.
Gatavs, kad: veikala saraksts izdrukājas numurēts no 1 un satur tikai derīgās atbildes.
3. uzdevums -
Savieno aptaujas datus ar spēli
Beigās spēlētājs varēs izvēlēties preci no reāliem klasesbiedru ieteikumiem.
- Izsauc funkciju un pēc tam nolasi
izvele = int(input("Izvēlies preci pēc numura: ")). - Pārvērs numuru par indeksu, atņemot 1.
- Izdrukā izvēlēto preci pēc indeksa.
- Palaid un izvēlies pirmo preci.
- Palaid un ievadi numuru, kas ir lielāks par preču skaitu.
- Pievieno pārbaudi, kas neļauj izvēlēties neesošu numuru.
- Pieraksti vienu secinājumu: kāpēc lietotājam rāda numuru 1, bet kodā lieto indeksu 0.
Gatavs, kad: izvēloties 1, programma parāda pirmo preci, bet pārāk liels numurs vairs neizraisa IndexError.
Papildu uzdevums - Atrodi populārāko vārdu
Ja pamatdarbs ir gatavs, saskaiti, kurš vārds atbildēs parādās visbiežāk.
- Izveido tukšu vārdnīcu
skaits = {}. - Uzraksti ciklu, kas iet cauri visām derīgajām atbildēm.
- Palielini vārdnīcā attiecīgā vārda skaitītāju ar
.get(). - Izdrukā vārdnīcu ar
.items(). - Atrodi lielāko vērtību un izdrukā tās atslēgu.
Gatavs, kad: programma nosauc vienu vārdu, kas atbildēs parādījies visbiežāk.
Koda piemērs
# Piemērs, kā aptaujas dati ietekmē spēles sarakstu
aptaujas_rezultati = ["Ātrais marķieris", "Tāfeles vairogs pret haosu", "Miega režīma poga"]
def paradit_veikalu(preces):
print("--- LIETOTĀJU IZVĒLĒTĀS PRECES ---")
# enumerate() palīdz automātiski numurēt sarakstu no 1
for nr, prece in enumerate(preces, 1):
print(f"{nr}. {prece}")
print("----------------------------------")
paradit_veikalu(aptaujas_rezultati)
1. Ātrais marķieris
2. Tāfeles vairogs pret haosu
3. Miega režīma poga
----------------------------------