Stundas uzdevums: Pārvērst vienkāršu sarakstu par "viedo karti". Kad mēs ielādējam datus no CSV, tie bieži ir "netīri" (ar liekām atstarpēm vai tikai teksta formātā). Apgūsi, kā notīrīt datus un transformēt tos, izveidojot vārdnīcu, kurā lokācijas ID nodrošina acumirklīgu piekļuvi visai istabas informācijai.
SR 2.4.14. (Datu apstrāde un validācija)70 min darba sadalījums: 1. uzdevums (~20 min) - atjauno teorijas piemēru vai minimālo prototipu; 2. uzdevums (~25 min) - pielieto to galvenajā uzdevumā; 3. uzdevums (~25 min) - pārbaudi rezultātu, izlabo kļūdas un tikai beigās pieraksti vienu secinājumu. Papildus/4. līmeņa uzdevums ir paredzēts tikai tad, ja pamatdarbs ir pabeigts.
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ļā.
Kad mēs nolasām CSV ar csv.DictReader, mēs iegūstam rindu sarakstu. Lai tajā atrastu 50. lokāciju, datoram ir jāpārskata 49 iepriekšējās. Transformējot datus lielā vārdnīcā, mēs iegūstam tūlītēju piekļuvi pēc atslēgas (ID).
| Metode / Funkcija | Ko tā dara? | Kāpēc tas palīdz CSV apstrādē? |
|---|---|---|
.strip() |
Noņem tukšās atstarpes no teksta sākuma un beigām. | Izlabo Excel eksporta kļūdas (piem., " 1 " kļūst par "1"). |
int(teksts) |
Pārvērš tekstu par veselu skaitli. | CSV visi dati ir teksts (str). Mums ID vajag kā skaitļus. |
if atslēga in dict: |
Pārbauda, vai konkrētā atslēga eksistē vārdnīcā. | Novērš programmas avarēšanu, ja spēlētājs izvēlas neesošu vietu. |
Š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.3 Datu transformācija; detalizētu izpratni veidosi nākamajos uzdevumos.
Kopējamais piemērs vai sagatave: izmanto šo bloku kā starta punktu, nevis kā gala risinājumu.
temats = "6.3 Datu transformācija"
print("Iesildīšanās:", temats)
print("Pirmais rezultāts:", 2 + 3)
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.
1. Reģistrjutība: Python atšķir'id'no'ID'. Pārliecinies, ka koda atslēgas precīzi sakrīt ar CSV galvenēm!
2. ValueError konvertējot tukšumu: Tu nevari izdarītint(""). Vienmēr pārbaudi (if rinda['merkis'] != "":), pirms mēģini tekstu pārvērst par skaitli.
3. Lokālo mainīgo pazušana: Japasaules_karte = {}definēsi iekšpusēwith open()blokam vai ciklā, tai būs grūti piekļūt no ārpuses vai tā pārrakstīsies katru reizi no jauna.
import csv
pasaules_karte = {}
with open('pasaule.csv', mode='r', encoding='utf-8') as f:
lasitajs = csv.DictReader(f)
for rinda in lasitajs:
# Notīrām un konvertējam galveno ID
id_skaitlis = int(rinda['id'].strip())
# Pievienojam rindu vārdnīcai
pasaules_karte[id_skaitlis] = rinda
# Tagad piekļuve jebkurai istabai ir acumirklīga:
# Izprintēsim 2. lokācijas nosaukumu un tekstu
istaba = pasaules_karte[2]
print(f"Tu atrodies: {istaba['nosaukums']}")
print(istaba['teksts'])