Níže se budou postupně objevovat drobné aktuální zprávy z výuky (např. odkazy na další studijní materiály, příklady k procvičování apod.). Budou řazeny chronologicky od nejnovějších k nejstarším.
Výuka se v tomto školním roce nekoná a zatím se bohužel nezdá, že situace se v nejbližší budoucnosti změní.
Vedení školy se z rozpočtových důvodů rozhodlo neotevřít výuku tohoto předmětu ani v tomto školním roce, přestože zájem žáků byl značný.
V tomto školním roce se nepovinný předmět Základy programování nekoná. Zájemci mohou vyčkat na příští školní rok.
Náměty k samostatné činnosti:
vstup_int pro vstup celého čísla z klávesnice. Podobně jako funkci input jí můžeme předat text s výzvou. Při neplatném zadání (např. 5.17, AB18, prázdném vstupu) funkce vypíše upozornění o nesprávném vstupu a žádá nový vstup. Návratová hodnota je typu int.sort, řazení českých řetězců, řazení podle vlastního kritéria, funkce sortedNáměty k samostatné činnosti:
['2.5 m', '5 h', '36.1 s', '15 s', '0.085 h', '0.15 m', '418 s']
substituce pro náhradu znaků v řetězci a její použití na některé úlohy: odstranění diakritiky z českého textu, úvod do šifrování a Caesarova šifraNáměty k samostatné činnosti:
kostky (tisk histogramu)xgefuf fmwahq lbdmhk zqzu hgnqo anfulzq mzu nql baoufmoq
zašifrovaný pomocí Caesarovy šifry.
Náměty k samostatné činnosti:
řešení úlohy „ovladač“
def zapnout(stav, cislo): return stav | 1 << cislo def vypnout(stav, cislo): return stav & (1 << cislo) ^ 0b1111_1111 def prepnout(stav): return stav ^ 0b1111_1111 def stav_rele(stav): print(" stav relé: ", end = "") for bit in range(8): print(bit, "+" if stav & (1 << bit) else "-", sep = "", end = " ") print()
Náměty k samostatné činnosti:
pascal, která na základě jednoho řádku vytvoří řádek následující. Funkce přijímá jako parametr seznam položek typu int, její návratová hodnota je rovněž seznam celých čísel. Výsledný řádek vždy začíná prvkem 1, následují položky tvořené jako součet dvou prvků vstupního řádku (pro i-tý prvek na indexech i-1 a i) a je zakončen opět prvkem 1. Výstupní seznam je o jeden prvek delší než vstupní.str) do řádků tak, aby nikdy nepřekročil určenou délku řádku. Stáhněte si soubor sazba-zadani.py a doplňte funkci odstavec. Vstupními parametry funkce jsou řetězec text a maximální povolená délka řádku limit. Výstupem (tj. návratovou hodnotou funkce) je seznam řetězců, přičemž každý prvek reprezentuje jeden řádek. Slova jsou na řádcích zarovnána vlevo1) (tj. mezi nimi je právě jedna mezera), délka řádku je omezena limitem s výjimkou slov, která sama o sobě přesahují daný limit. Řešení testujte pro různé limity délky řádku.split). Slova pak procházejte a průběžně počítejte délku řádku (nezapomeňte na mezery). Tímto způsobem dostanete rozsah slov (určených pomocí indexů), která společně patří na řádek. Nyní zbývá vytvořit řetězec pro další řádek (řetězcová metoda join) a přidat jej do seznamu řádků.Náměty k samostatné činnosti:
format - dokončení výkladu a procvičováníNáměty k samostatné činnosti:
Dokončete úlohu na tisk tabulky součinů, kterou jsme začali při hodině, např. při volání funkce nasobilka(5) by měl výstup vypadat takto
Násobilka do 5 | 1 2 3 4 5 ---+------------------------- 1 | 1 2 3 4 5 2 | 2 4 6 8 10 3 | 3 6 9 12 15 4 | 4 8 12 16 20 5 | 5 10 15 20 25
Vytiskněte tabulku ASCII znaků (v rozsahu kódů 32 až 127). Za hlavičkou bude následovat tisk znaků v různých reprezentacích (jeden znak na řádek). Řádek bude mít 2 až 5 sloupců, povinné jsou vyjádření v desítkové soustavě a znakové vyjádření, volitelné sloupce jsou vyjádření ve dvojkové, osmičkové a šesctnáctkové soustavě. Definice funkce začíná takto
def tabulka(bin = False, oct = False, hex = False):
parametry logického typu určují, zda se bude příslušný sloupec tisknout. Při volání
tabulka(bin = True, oct = True, hex = True)
vypadá začátek tabulky následovně
# bin oct hex ch --------------------------- 32 0010_0000 0040 20 33 0010_0001 0041 21 ! 34 0010_0010 0042 22 " 35 0010_0011 0043 23 # 36 0010_0100 0044 24 $
s parametry
tabulka(bin = True, oct = False, hex = False)
# bin ch ----------------- 32 0010_0000 33 0010_0001 ! 34 0010_0010 " 35 0010_0011 # 36 0010_0100 $
formatNáměty k samostatné činnosti:
Napište funkci, která určí počet slov v textu (za „slovo“ budeme považovat skupinu znaků jiných než oddělovač).
def pocet_slov(text): """ počet slov v textu text: řetězec, ve kterém se počítají slova (slova jsou skupiny znaků bez oddělovačů (' ', '\t', '\n') návratová hodnota: int - počet slov """ pass
Napište funkci pro obrácení pořadí slov ve větě (budeme předpokládat, že slova jsou skupiny znaků oddělených mezerami).
def obracena_veta(veta): """ obrácení pořadí slov ve větě veta: řetězec, za slova pokládáme části oddělené mezerami návratová hodnota: řetězec, slova v opačném pořadí, oddělení mezerami zachováno """ pass
Pozn.: Je možná překvapivé, že opravdu důkladné vymezení pojmu „slovo“ není úplně snadné (máme-li vzít v úvahu i sousloví oddělená pomlčkou, rozdělená slova na konci řádku, zkrácená slova pomocí apostrofu v angličtině apod.).
Náměty k samostatné činnosti:
Napište funkci, která zarovná řetězec na požadovanou délku (>= 6): kratší řetězce doplňte zprava mezerami, delší řetězce zkraťte a zakončete pomocí tří teček a posledních dvou znaků původního řetězce (např. zkrácením "dlouhý řetězec z několika slov" na 10 znaků získáme "dlouh...ov").
def zarovnani(text, delka): """ zarovnání řetězce text: řetězec k zarovnání delka: požadovaná délka (alespoň 6) návratová hodnota: řetezec délky 'delka' je-li 'text' kratší => doplněn zprava mezerami je-li 'text' delší => zkrácen + '...' + poslední 2 znaky """ pass
Napište funkci pro převod délkových údajů na float s uvažováním jednotky (např. pro řetězec "2.1 mm" je výsledek 0.0021).
def prevod_delky(delka): """ převod řetězce s délkou (hodnota + jednotka) na float delka: řetězec (číslo, mezera, jednotka), např. '5.6 cm' povolené jednotky - mm, cm, dm, m, km návratová hodnota: float - délka v metrech pro nesprávně formátovaný vstup dojde k chybě nebo je vráceno None """ pass
Dne 3. ledna 2018 bylo ohlášeno nalezení již 50. Mersennova prvočísla 277 232 917 − 1 s více než 23 milióny číslic, které se tak stalo největším známým prvočíslem. Více podrobností viz tisková zpráva.
Náměty k samostatné práci:
Rozšiřte modul kalendářních funkcí o dvě nové funkce:
def platne_datum(den, mesic, rok): """ ověří platnost data ověří se, že zadané datum je podle gregoriánského kalendáře platné (zjednodušeně uvažuje rok >= 1600) návratová hodnota: bool """ pass def tyden_roku(den, mesic, rok): """ tyden roku pro zadaný den určí týden roku, do kterého patří zadaný den dle ISO 8601 (1. týden obsahuje 4. leden resp. první čtvrtek roku) návratová hodnota: int - číslo týdne (0 pro poslední týden loňského roku) """ pass
Samozřejmě můžete využít (je to přímo doporučeno) již hotových funkcí v modulu. Pro testování druhé funkce můžete použít následující kousek kódu jako hlavní program modulu.
if __name__ == "__main__": for rok in range(2015, 2025): tisk_kalendare(1, rok) print("1.1.", rok, " t", tyden_roku(1, 1, rok), sep = "") print("4.1.", rok, " t", tyden_roku(4, 1, rok), sep = "") print("10.1.", rok, " t", tyden_roku(10, 1, rok), sep = "") print("15.1.", rok, " t", tyden_roku(15, 1, rok), sep = "") print("31.1.", rok, " t", tyden_roku(31, 1, rok), sep = "")
S jeho pomocí máte před sebou všechny možné situace na začátku roku a můžete tak ověřit správné výsledky své funkce tyden_roku.
Náměty k samostatné práci:
Přeji vám radostné a pohodové prožití Vánoc a ať se vám v roce 2018 všechno daří dle představ!
Náměty k samostatné práci:
"pondělí"). Využijte k tomu funkci jul_datum z ukázkového programu julian.py (viz dnešní výklad). Správnou funkci ověřte v jednoduchém programu, např. pro aktuální den, den vašeho narození apod.mathNáměty k samostatné práci:
+.printNáměty k samostatné práci:
4: 1^2 + 2^2 + 3^2 + 4^2 = 30.Náměty k samostatné práci:
forelse u příkazu cyklu while - popis zde, demonstrační příklad hledani_cislice.py a porovnání řešení s verzí bez této konstrukce hledani_cislice_2.pyNáměty k samostatné práci:
mersenne2.py (viz výklad) tak, aby kromě nalezených prvočísel vypsal také odpovídající dokonalá čísla a jejich ciferaci (viz již dříve probíraná úloha soucet_cislic_2.py z 11. října).Náměty k samostatné práci:
Náměty k samostatné práci:
cislo_pi.py).euler.py a cislo_pi.py z hodiny tak, aby počítaly výsledky s přesností na mnoho destinných míst.float nemá dostatečnou přesnost, využijte tedy vhodně typ int. Při požadované přesnosti např. 100 desetinných míst počítejte 10100.e v celočíselné aritmetice a až v závěrečném tisku zobrazte výsledek jako desetinné číslo (stejně tak pro π). Výsledky pro e na 1000 desetinných míst si můžete porovnat se správnou hodnotou euler.txt, stejně tak pro π na 200 desetinných míst pi.txt.floatNáměty k samostatné práci:
float hodnoty a nastaví proměnnou x0 takto - v intervalu 0.1 až 10.0 na 1.0, v intervalu 10.0 až 1_000.0 na 10.0, pro 1_000.0 až 100_000.0 na 100.0 atd. pro větší čísla a v intervalu 0.001 až 0.1 na 0.1, v intervalu 0.000_01 až 0.001 na 0.01 atd. pro menší kladná čísla. Tj. odhad se mění o jeden řád při změně mezí vstupní hodnoty o dva řády. Hraniční body zpracujte dle svého uvážení.prumer.py (viz výklad cyklů) tak, aby kromě počtu zadaných hodnot a aritmetického průměru nalezl také maximální a minimální hodnotu a vypočetl směrodatnou odchylku (dle posledního vzorce na stránce o statistice). Ošetřete prázdný soubor vstupních dat a situaci s jednou zadanou hodnotou. Nápověda: můžete s výhodou využít nově probraných vlastností typu float pro inicializaci proměnných.Náměty k samostatné práci:
whilebreakShrnutí nového učiva je ve druhé části stránky.
Náměty k samostatné práci:
bool a logické výrazyProbrané učivo je vysvětleno v první části článku Větvení a cykly.
Náměty k samostatné práci:
int, float a početní operace s nimiK zopakování probraných témat můžete použít tento materiál.
Náměty k samostatné práci:
float) a následně vytiskne přepočet této hodnoty na celé dny, celé hodiny a (případně necelé) minuty.float zaokrouhlit (tj. ne jen useknout desetinnou část) na celé číslo. A co zaokrouhlení na 2 desetinná místa?
Poznámka: Při instalaci prostředí Python na OS Windows dle našeho postupu dojde mj. k přiřazení přípony .py k interpretru Pythonu, takže je možné „přímé spuštění“ zdrojového kódu (poklepáním myší z grafického prostředí či vypsáním jména z příkazového řádku). V prostředí GNU/Linuxu stejného efektu dosáhneme takto. Na první řádek zdrojového souboru (uvažujeme test.py) vložíme odkaz na interpretr7) #!/usr/bin/env python38)
a po nastavení spustitelného příznaku9)
již můžeme program přímo spustit pomocí ./test.py nebo z GUI10). V případě obou OS dojde k automatickému spuštění interpretru, který ihned začne vykonávat kód předaného programu.
Jednoduché vývojové prostředí jazyka Python na počítače s operačním systémem Windows si můžete nainstalovat podle tohoto návodu (prakticky stejně je nainstalován Python 3 ve školní učebně výpočetní techniky).
2. září 2017
Jsem ráda, že se setkáváme při výuce základů programování. Předpokládám, že o předmět máte zájem, a já se budu snažit, aby výuka byla prakticky orientovaná a co nejzajímavější. Dobře si uvědomuji, že jde o nepovinný předmět, proto budeme tempo výuky a částečně i obsah korigovat dle vašich možností a požadavků.
1. září 2017
vim, nano, grafický gedit či jiný váš oblíbený#!/usr/bin/python3 u distribucí jako Debian, Ubuntu apod. či #/bin/python3 u těch založených na RedHat (CentOS, Fedora) chmod u+x test.pypython3 test.py z příkazové řádky