Cieľ cvičenia
V súbore kindergarten_garden.py implementujte triedu Garden. Trieda má
reprezentovať záhon v materskej škole a metóda plants() má vrátiť rastliny,
ktoré patria konkrétnemu žiakovi.
Použitie triedy vyzerá napríklad takto:
garden = Garden("RC\nGG")
garden.plants("Alena")
# ["Reďkovky", "Ďatelina", "Tráva", "Tráva"]
Konštruktor prijíma diagram záhona a voliteľne aj zoznam žiakov:
Garden(diagram, students=["Alena", "Boris"])
Ak zoznam žiakov nie je zadaný, použite štandardné mená Alena, Boris,
Cyril, Daniel, Eva, František, Gitka, Helena, Ivana, Jozef,
Karol a Ladislav.
Ako záhon funguje
Diagram má dva riadky. Každý žiak dostane štyri susediace políčka: dve políčka v hornom riadku a dve políčka v dolnom riadku.
Napríklad diagram:
VVCG
VVRC
je rozdelený takto:
VV CG
VV RC
Prvý žiak dostane prvé dva stĺpce (VV a VV) a druhý žiak ďalšie dva
stĺpce (CG a RC). Rastliny treba čítať zľava doprava: najprv dve horné
a potom dve dolné políčka.
Druhy rastlín
Každé písmeno v diagrame označuje jednu rastlinu:
| Písmeno | Rastlina |
|---|---|
G |
Tráva |
C |
Ďatelina |
R |
Reďkovky |
V |
Fialky |
Metóda plants(student) má vracať slovenské názvy rastlín, pretože práve tie
kontrolujú testy.
Príklad
Pre záhon:
garden = Garden("RC\nGG")
má Alena prvé dve políčka v oboch riadkoch:
R C
G G
Preto:
garden.plants("Alena")
# ["Reďkovky", "Ďatelina", "Tráva", "Tráva"]
Pri väčšom diagrame sa žiaci priraďujú podľa abecedného poradia. Ak je
zadaný vlastný zoznam students, musí sa najprv zoradiť abecedne; poradie
vstupného zoznamu teda nemusí byť zoradené.
Odporúčaný postup
- Rozdeľte diagram na dva riadky.
- Zoraďte zoznam žiakov podľa mena.
- Nájdite poradie požadovaného žiaka v zoradenom zozname.
- Pre jeho poradie vypočítajte začiatok dvojice stĺpcov:
poradie * 2. - Z oboch riadkov vyberte dva znaky patriace žiakovi.
- Preložte písmená
G,C,RaVna názvy rastlín a vráťte ich v poradí horný riadok, horný riadok, dolný riadok, dolný riadok.
Na rozdelenie diagramu môžete použiť napríklad:
rows = diagram.splitlines()
Ak je start začiatok žiakovej dvojice stĺpcov, výrez jedného riadku získate
ako row[start:start + 2].
Časté chyby
- Použitie poradia žiaka zo vstupného zoznamu bez jeho abecedného zoradenia.
- Výber dvoch susedných políčok iba z jedného riadku.
- Zmiešanie poradia políčok; výsledok má byť horný riadok a potom dolný.
- Vrátenie skratiek (
G,C,R,V) namiesto názvov rastlín. - Zabudnutie, že
plants()vracia nový zoznam štyroch rastlín. - Nesprávne spracovanie vlastného zoznamu žiakov.
Kontrola pred odovzdaním
- Funguje jednoduchý diagram s jedným žiakom.
- Správne sa vyberá prvý, prostredný aj posledný žiak.
- Mená sa spracujú abecedne aj vtedy, keď sú vstupné údaje neusporiadané.
- Každý výsledok obsahuje štyri správne pomenované rastliny.
- Písmená sa prekladajú podľa tabuľky a zachová sa ich poradie.