Programování 1 pro matematiky
Ve školním roce 2024/2025 vedu cvičení z předmětu Programování 1 [NMIN111],
což je základní kurs programování pro studenty matematiky.
Cvičení se koná každé úterý od 12:20 v N11.
Budu rád, když se mi budete ozývat. Když vám cokoliv nepůjde, nestyďte se říci si o radu.
Když vám něco půjde, nestyďte se pochlubit se :) Napište mi mail na mares+p1m@kam.mff.cuni.cz,
případně si můžeme domluvit konzultaci. Také jsem k zastižení na Matrixu
jako @mj:matrix.ucw.cz a na Telegramu
jako @golluxino.
Zápočet se uděluje za domácí úkoly odevzdávané v ReCodExu.
Úkoly se testují automaticky, cvičící pak může body korigovat (odměnit zvláště elegantní
řešení, penalizovat nefunkční řešení, které náhodou prošlo testy apod.).
Na zápočet je potřeba získat aspoň 70 bodů. Úkoly budou vypsané za alespoň 100 bodů.
Ve výjimečných případech (např. dlohodobá nemoc) se lze domluvit na individuálních
podmínkách.
Co jsme dělali
datum
| téma
|
---|
1. 10. |
|
8. 10. |
|
15. 10. |
|
22. 10. |
|
29. 10. |
- Výklad: Funkce
- Napište funkci, která:
- vrátí nejmenší ze tří čísel:
řešení
- vrátí n-té Fibonacciho číslo:
řešení
- spočítá, kolik je v seznamu sudých čísel:
řešení
- vybere ze seznamu sudá čísla (a vrátí jejich seznam):
řešení
- dostane dva seřazené seznamy čísel a vrátí jejich průnik:
řešení
- dostane koeficienty kvadratické rovnice ax2 + bx + c = 0
a vrátí seznam jejích kořenů:
řešení
|
5. 11. |
Necvičíme, protože cvičíme: Děkanský sportovní den
|
12. 11. |
- Výklad: Seznamy, řezy a řetězce
- Napište funkci, která:
- otočí řetězec (
datel → letad )
- otočí číslo v desítkové soustavě (
1024 → 4201 ; může se hodit,
že int(x) převádí z řetězce na číslo a str(x) opačně)
- spočítá, kolik zadaný řetězec obsahuje slov (oddělených mezerami)
- … kolik různých slov
- vyhodnotí výraz se sčítáním (
12+34+1 → 47 )
- vyjádří číslo česky (
123 → "sto dvacet tři" ):
řešení
- Řešení příkladů
|
19. 11. |
- Výklad: List comprehensions
- Napište funkci, která:
- vytvoří tabulku násobilky (a×b pro všechna a, b od 1 do daného čísla)
- zjistí průnik dvou (neuspořádaných) seznamů
- vybere z textu slova, která jsou palindromická (čtou se stejně popředu jako pozpátku)
- spočítá skalární součin dvou vektorů
- vynásobí dvě matice (ne nutně čtvercové)
- seřadí slova na řádku podle jejich délky (nápověda: nejprve slova převést na dvojice
(délka, slovo), ty pak setřídit a nakonec z dvojic zase udělat slova)
- Řešení příkladů
|
26. 11. |
Plán:
- Výklad: Množiny a slovníky
- Příklady: robůtek, kontakty
- Napište funkci, která:
- Vrátí
True nebo False podle toho, zda jsou
dané dva seznamy stejné až na pořadí prvků. Co když se mohou prvky
v seznamech opakovat?
- Vrátí
True nebo False podle toho, zda jsou
všechny prvky daného seznamu navzájem různé.
- Spočítejte frekvence všech k-gramů (k-tic znaků) v textu.
K-gramy vypište uspořádaně podle frekvence.
Můžete vyzkoušet třeba na originálu Psa baskervillského
z Projektu Gutenberg. Řádky souboru můžete načítat pomocí
for řádek in open('soubor', encoding='utf-8') .
- Aplikace k-gramů:
- Pro každý k-gram zjistěte, jaká všechna písmena po něm mohou následovat.
Pokud jedno písmeno opakuje, uložte ho vícekrát.
- Předchozí tabulku využijte k náhodnému generování textu. První k-gram zvolte
náhodně a pak opakovaně vybírejte náhodné následující písmeno. Pro náhodný
výběr ze seznamu se může hodit
random.choose(seznam) (nezapomeňte
na import random ).
|
Odkazy