Úlohy na procvičení
Funkce pro textové řetězce
-
Napište funkci
contains
, která pro zadaný texttext
a znakchar
zjistí, jestlitext
obsahuje znakchar
.
Ručně napište cyklus, který bude procházet přes znaky textu, nepoužívejte operátorin
(pokud ho znáte).>>> contains("banana", "n") True >>> contains("banana", "z") False
-
Napište funkci
count
, která pro zadaný texttext
a znakchar
spočítá, kolikrát se znakchar
vyskytuje vtext
u.
Nepoužívejte metodustr.count
ze standardní knihovny.>>> count("banana", "n") 2
-
Napište funkci
find
, která pro zadaný texttext
a znakchar
zjistí, na jaké pozici se znakchar
poprvé vyskytuje vtext
u. Pokud sechar
vtext
u nevyskytuje, vraťte-1
.
Nepoužívejte metodustr.find
anistr.index
ze standardní knihovny.>>> find("banana", "b") 0 >>> find("banana", "n") 2 >>> find("banana", "z") -1
Keř a Strom
Cvičení na seznamy
Je dán seznam čísel…
- zjistěte, jestli jsou všechna navzájem různá.
- vypište všechna opakující se čísla (ale každé jen jednou).
- najděte dvojici s co nejmenším rozdílem.
Jaká je časová složitost vašich řešení (vzhledem k počtu čísel)? Umíte předchozí úkoly vyřešit efektivněji, pokud víte, ze všechna zadaná čísla leží od \(1\) do \(100\)?
Transpozice matice
Napište kód pro transpozici matice (matice je seznam seznamů čísel). Začněte pomocí for
cyklů. Jestli jste odvážní, zkuste to zapsat jako list comprehension (přesněji dvě list comprehensions v sobě).
>>> matrix = [[1, 2, 3, 4], [4, 5, 6, 8]]
>>> transpose(matrix)
[[1, 4], [2, 5], [3, 6], [4, 8]]
Učební výstupy
Učební výstupy podávají zhuštěný souhrn základních konceptů a dovedností, které byste měli umět vysvětlit a/nebo použít po každém cvičení. Hvězdičkou (⭐) je označena látka nad rámec předmětu Programování 1, kterou tedy teď nemusíte umět, ale někdy v budoucnu se vám může hodit.
- ⭐ použít list comprehensions pro vytváření nových seznamů z jiných seznamů