Seznamy a n-tice  1. dubna 2019

Materiály

Domácí projekty

Poslední úkol 1D piškvorek zůstává na další týden.

0.

Zvládneš pro počítač naprogramovat lepší strategii? Třeba aby se snažil hrát vedle svých existujících symbolů nebo aby bránil protihráčovi? Stačí jen docela malé vylepšení!

Testy by stále měly procházet.

Odevzdej celý soubor ai.py.

Pojďme si procvičit práci se seznamem.

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 ostatních a řešte společně!

1.

Napiš funkci vytvor_seznam_zvirat(), která vrátí seznam domácích zvířat. Domácí zvířata známe tato: "pes", "kočka", "králík", "had".

Tuto funkci použiješ pro otestování dalších úloh. Nehledej v ní nic složitého.

Příklad:

>>> vytvor_seznam_zvirat()
['pes', 'kočka', 'králík', 'had']
2.

Napiš funkci filtruj_kratka_jmena, která dostane seznam řetězců a vrátí seznam těch, která jsou kratší než 5 písmen.

Například:

>>> zvirata = vytvor_seznam_zvirat()
>>> filtruj_kratka_jmena(zvirata)
['pes', 'had']

Vzpomeň si, jak se vytváří seznam: začni s prázdným seznamem a postupně přidávej prvek po prvku.

3.

Napiš funkci filtruj_k, která dostane seznam řetězců a vrátí seznam těch, která začínají na k.

Například:

>>> zvirata = vytvor_seznam_zvirat()
>>> filtruj_k(zvirata)
['kočka', 'králík']
4.

Napiš funkci obsahuje, která dostane seznam a slovo a zjistí, jestli je to slovo v daném seznamu. Podle toho vrátí True nebo False.

Například:

>>> zvirata = vytvor_seznam_zvirat()
>>> obsahuje(zvirata, 'pes')
True
>>> obsahuje(zvirata, 'vodováha')
False
5.

Napiš funkci zrus_prvni, která dostane seznam jmen a vrátí seznam se všemi jeho prvky kromě prvního.

>>> zvirata = vytvor_seznam_zvirat()
>>> zvirata
['pes', 'kočka', 'králík', 'had']
>>> zrus_prvni(zvirata)
['kočka', 'králík', 'had']

Ale pozor! Funkce by neměla změnit původní seznam:

>>> zvirata
['pes', 'kočka', 'králík', 'had']

A měla by fungovat i pro prázdný seznam:

>>> zrus_prvni([])
[]
6.

Had byl pyšný na to, že je v abecedě první. Dokud nepřiletěla "andulka".

Abys hada uklidnila, vytvoř funkci serad_od_druheho, která zvířata seřadí podle abecedy, ale bude ignorovat první písmeno. Například:

>>> zvirata = vytvor_seznam_zvirat()
>>> serad_od_druheho(zvirata)
["had", "pes", "andulka", "kočka", "králík"]
>>> # (barvy jsou tu jen pro přehlednost, tvůj program vypisuje bez barev)

Máš tady seznam hodnot, které chceš seřadit podle nějakého klíče. Klíč se dá z každé hodnoty vypočítat – v našem případě je to hodnota kromě prvního písmenka (tedy od druhého písmenka dál).

Postup:

  • Vytvoř seznam dvojic (klíč, hodnota).
  • Seřaď tento seznam dvojic – dvojice se řadí nejdřív podle prvního prvku, pak druhého atd.
  • Nakonec vytvoř ze seznamu dvojic výsledný seznam hodnot.

Vytvoření seznamu se dělá tak, že začneš s prázdným seznamem a postupně do něj přidáváš hodnoty jednu po druhé.