5.3 For cikli
Stundas uzdevums: Pārveidot datu "jucekli" par skaistu saskarni. Apgūsi, kā izmantot for ciklus, lai "izķemmētu" sarakstus un vārdnīcas, parādot spēlētājam glītu inventāru, statusa ziņojumus un aprēķinot spēles progresu automātiski.
70 min plāns: Teorija un paraugs (~10 min) · 1. uzdevums (~15 min) - izej cauri sarakstam ar for · 2. uzdevums (~25 min) - izdrukā vārdnīcu ar .items() · 3. uzdevums (~20 min) - saskaiti un filtrē ciklā. Papildu uzdevumu sāc tikai tad, ja pārējie trīs ir gatavi.
Pirms sāc: atver VS Code un izveido failu cikli_kolekcijas.py. Noderēs 5.1 saraksti un 5.2 vārdnīcas.
Teorija: Iterācija (pārlūkošana)
Iterācija ir process, kurā dators izpilda vienu un to pašu koda bloku katram kolekcijas elementam. Tas ir kā pārskaitīt visas monētas makā vienu pēc otras, nezinot iepriekš, cik to tur būs.
| Sintakse | Pielietojums | Rezultāts |
|---|---|---|
for x in saraksts: |
Sarakstiem | Piekļūst katram elementam (x) pēc kārtas. |
for a, v in dict.items(): |
Vārdnīcām | Ļauj izmantot gan atslēgu (a), gan vērtību (v) vienlaicīgi. |
for a in dict.keys(): |
Vārdnīcām | Piekļūst tikai nosaukumiem (atslēgām). |
Atkāpju (Indentation) nozīme
Viss kods, kas atrodas "zem" for rindas un ir nobīdīts pa labi (4 atstarpes jeb 1 Tab), tiks atkārtots. Tiklīdz Tu beidz rakstīt ar atkāpi, cikls beidzas, un dators turpina lasīt kodu tālāk tikai vienreiz.
Praktiskie uzdevumi
1. uzdevums -
Izej cauri sarakstam ar for
Beigās viens cikls apstrādās jebkura garuma sarakstu.
- Ieraksti
materiali = ["marķieris", "taimeris", "uzlīmes"]. - Uzraksti
for lieta in materiali:un zem tā izdruku. - Palaid un saskaiti rindas.
- Pievieno sarakstam vēl vienu elementu un palaid vēlreiz.
- Pārbaudi, vai bija jāmaina cikls.
- Nomaini sarakstu uz tukšu un palaid vēlreiz.
Gatavs, kad: cikls pielāgojas jebkuram garumam, un ar tukšu sarakstu tas vienkārši neizpildās.
2. uzdevums -
Izdrukā vārdnīcu ar .items()
Beigās tu vienā ciklā dabūsi gan nosaukumu, gan vērtību.
- Ieraksti
statistika = {"Punkti": 150, "Enerģija": 85}. - Uzraksti
for nosaukums, skaitlis in statistika.items():. - Izdrukā ciklā
print(f"{nosaukums}: {skaitlis}"). - Palaid un pārbaudi izvadi.
- Nomaini ciklu uz
for a in statistika:un izdrukāa. - Pieraksti, ko izdrukāja šis variants - atslēgas vai vērtības.
- Pievieno
.upper()nosaukumam un palaid vēlreiz.
Gatavs, kad: ar .items() dabū abus, bet bez tā - tikai atslēgas.
3. uzdevums -
Saskaiti un filtrē ciklā
Beigās cikls ne tikai izdrukās, bet arī izrēķinās.
- Ieraksti pirms cikla
kopa = 0. - Pievieno ciklā
kopa += skaitlis. - Izdrukā pēc cikla kopsummu.
- Pievieno ciklā nosacījumu, kas izdrukā tikai vērtības virs 100.
- Palaid un pārbaudi, cik ierakstu izfiltrējās.
- Pievieno skaitītāju, cik ierakstu bija virs 100.
- Pieraksti vienu secinājumu: kāpēc
kopajādefinē pirms cikla, nevis tajā.
Gatavs, kad: kopsumma sakrīt ar visu vērtību summu, un filtrs atlasa tikai lielās vērtības.
Papildu uzdevums - Pievieno enumerate
Ja pamatdarbs ir gatavs, izdrukā sarakstu ar automātisku numerāciju.
- Uzraksti
for nr, lieta in enumerate(materiali, 1):. - Izdrukā ciklā
print(f"{nr}. {lieta}"). - Palaid un pārbaudi, ar ko sākas numerācija.
- Nomaini
1uz0un palaid vēlreiz. - Pieraksti, ko dara otrais arguments funkcijā
enumerate.
Gatavs, kad: ar enumerate(materiali, 1) numerācija sākas ar 1, nevis ar 0.
Biežākās kļūdas:
1. Pazudis kols: Neaizmirsti:rindas beigās pēcforteikuma.
2. Atkāpes kļūda: Ja kods nav nobīdīts pa labi, Python nezinās, ka tam jābūt cikla daļai un izpildīs to tikai vienreiz.
3. Items aizmirstība: Mēģinot iet cauri vārdnīcai bez.items()(tikaifor x in vardnica:), Tu iegūsi tikai atslēgu nosaukumus, nevis pašus datus.
Koda piemērs
# Glīta vārdnīcas izvade
statistika = {"Punkti": 150, "Enerģija": 85, "Mēģinājumi": 12}
print("--- TAVA STATISTIKA ---")
for nosaukums, skaitlis in statistika.items():
# Lietojam .upper(), lai atslēgas būtu ar lielajiem burtiem
print(f"{nosaukums.upper()}: {skaitlis}")
print("-----------------------")
PUNKTI: 150
ENERĢIJA: 85
MĒĢINĀJUMI: 12
-----------------------