Čeká tě procvičování práce se seznamy. Některé z projektů – a zvlášť ten poslední – potřebují trochu přemýšlení; nebudeš-li vědět jak dál, zeptej se na internetu nebo na sraze ostatních a řešte společně!
Udělej si seznam domácích zvířat. Budeš ho potřebovat v dalších úlohách.
Domácí zvířata známe tato: "pes", "kočka", "králík", "had"
, můžeš přidat
nějaké svoje oblíbené, žádné ale neubírej.
Napiš funkci, která přebere seznam a slovo a zjistí, jestli je to slovo v seznamu domácích zvířat.
„Zjistí“ znamená, že funkce vrátí True
nebo False
.
Napiš program, který na konec seznamu zvířat přidá zvíře zadané uživatelem, ale pozor jen, pokud tam ještě není. Upravený seznam program vypíše.
Napiš funkci, která dostane dva seznamy jmen domácích zvířat a vrátí tři seznamy:
Napiš funkci, která ze seznamu jmen domácích zvířat (zadaný argumentem) vrátí ta, která jsou kratší než 5 písmen.
Napiš funkci, která ze seznamu jmen domácích zvířat (zadaný argumentem) vrátí ta,
která začínají na písmeno k
.
Napiš program, který seřadí seznam domácích zvířat podle abecedy.
Had byl pyšný na to, že je v abecedě první.
Dokud nepřiletěla "andulka"
.
Abys hada uklidnila, vytvoř funkci, která zvířata seřadí podle abecedy, ale bude ignorovat první písmeno t.j. vrátí:
"had", "pes", "andulka", "kočka", "králík".
Postup:
(klíč, hodnota)
.Proč má zrovna had takovéhle výsadní postavení, zjistíš později.
Jedna klasická programovací úloha, která nejspíš pořádně potrápí tvé logické myšlení. Je nepovinná, nemáš-li na ni aspoň pár hodin, tak ji přeskoč.
Výzva
Napiš funkci, která převede římské číslice zadané jako řetězec str
na číslo int
.
A nakonec projekt na přemýšlení.
Výzva Napište program, který vyřeší následující úlohu: Na dlouhé chodbě je 100 dveří, všechny jsou na začátku zavřené. Při prvním průchodu otočíme (tzn. zavřeme pokud byly otevřené/otevřeme pokud byly zavřené) všechny dveře, při druhém průchodu otočíme pouze každé druhé dveře, při třetím průchodu každé třetí atd. až do 100 průchodů, kdy otočíme pouze poslední dveře. Které dveře zůstanou na konci otevřené? Vypište jejich pořadová čísla.
Následující projekty závisí jeden na druhém, řeš je postupně. Až je uděláš, můžeš si zahrát hru! Tahle sekce není jednoduchá (a poslední dva projekty jsou obzvláště náročné). Můžeš zkusit spojit síly s ostatními účastnicemi kurzu!
Pro usnadnění orientace v celém projektu jsme připravili kostru, kterou najdeš tady
Napiš funkci, která dostane seznam souřadnic (párů čísel menších než 10,
která určují sloupec a řádek)
a vypíše je jako mapu: mřížku 10×10, kde na políčka která jsou v seznamu
napíše X
, jinde tečku.
Například:
nakresli_mapu([(0, 0), (1, 0), (2, 2), (4, 3), (8, 9), (8, 9)])
X X . . . . . . . .
. . . . . . . . . .
. . X . . . . . . .
. . . . X . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . X .
Jak na to?
[['.', '.', '.'], ['.', '.', '.'], ['.', '.', '.']]
.for
zanořených do sebe.Napiš funkci pohyb
, která dostane seznam souřadnic a světovou stranu
("s"
, "j"
, "v"
nebo "z"
)
a přidá k seznamu poslední bod „posunutý“ v daném směru. Např.:
souradnice = [(0, 0)]
pohyb(souradnice, 'v')
print(souradnice) # → [(0, 0), (1, 0)]
pohyb(souradnice, 'v')
print(souradnice) # → [(0, 0), (1, 0), (2, 0)]
pohyb(souradnice, 'j')
print(souradnice) # → [(0, 0), (1, 0), (2, 0), (2, 1)]
pohyb(souradnice, 's')
print(souradnice) # → [(0, 0), (1, 0), (2, 0), (2, 1), (2, 0)]
Funkce by neměla nic vracet. Jen mění už existující seznam.
Nezapomeň na testy.
Napiš cyklus, který se bude ptát uživatele na světovou stranu,
podle ní zavolá pohyb
, a následně vykreslí seznam jako mapu.
Pak se opět se zeptá na stranu atd.
Začínej se seznamem [(0, 0), (1, 0), (2, 0)]
.
Doplň funkci pohyb
tak, aby při pohybu umazala první bod ze seznamu
souřadnic. Výsledný seznam tak bude mít stejnou délku, jako před voláním.
Uprav testy.
Doplň funkci pohyb
tak, aby zamezila:
Vhodná výjimka pro tyto situace je ValueError('Game over')
.
Doplň i testy.
Přidej do hry hadí potravu. Tady jsou pravidla pro vegetariánského hada, ale můžeš si je změnit podle chuti:
Seznam ovoce obsahuje na začátku jedno ovoce na políčku, na kterém není had
(například: [(2, 3)]
znamená jedno ovoce na pozici (2, 3)).
Když had sežere ovoce, vyroste („nesmaže“ se mu ocas, tedy neprovede se to,
cos přidala v projektu 13),
a pokud na mapě zrovna není další ovoce, na náhodném místě (kde není had) vyroste ovoce nové.
Každých 30 tahů vyroste nové ovoce samo od sebe.
Na mapě se toto tajemné ovoce zobrazuje jako otazník (?
).
Hadí hřiště může mít libovolné rozměry větší než 4×1. Třeba 20×20 nebo 10×30.