====== Úvodní cvičení ze základů programování ====== [[https://en.wikipedia.org/wiki/Python_(programming_language)|Python]] je interpretovaný vysokoúrovňový programovací jazyk vytvořený v roce 1991.
Instalaci pythonu je možné stáhnout na [[https://www.python.org/|stránce]], aktuální nejnovější verze je Python 3.9.7 (psáno 11.9.2021). Pro spuštění příkazového okna (interaktivního režimu, interpreteru) jazyku python stačí v příkazové řádce (např. cmd ve windows) zavolat příkaz ''%%python%%'' (eventuelně ''%%python3%%'' pro spuštění verze 3 v případě více nainstalovaných verzí jazyka python). Pro psaní skriptů je možné použít jakýkoli textový editor a daný příkaz či jejich posloupnost uložit do textového soubour (doporučená přípona py). Interpretace příkazů je pak možné provést z příkazové řádky pomocí ''%%python nazev.py%%'' Intalace Pythonu v sobě obsahuje jednoduchý editor spolu s příkazovým oknem (command window) zvaný [[https://docs.python.org/3/library/idle.html|Idle]] Dále je možné pracovat v celé řadě vývojových prostředí, například v profesionálním [[https://www.jetbrains.com/pycharm/promo/?source=google&medium=cpc&campaign=14124132468&gclid=CjwKCAjwyvaJBhBpEiwA8d38vEoqA7PCaUK3YsH3WRNiVC_nwwhzMfyskCpDjZxFrO9d9-lhL6v4mhoCbRYQAvD_BwE|PyCharm]] jehož instalace je pro studenty ČVUT dostupná zdarma na tomto [[https://download.cvut.cz/jetbrains/|odkazu]]. Jako alternativa k instalci Pythonu a hledaní vývojového prostředí je možné nainstalovat platformu [[https://www.anaconda.com|Anaconda]] jejíž součástí je vývojové prostředí [[https://www.spyder-ide.org/|Spyder]]. Pokud nechcete instalovat celou platformu Anaconda, je možné nainstalovat její minimální varinatu zvanou [[https://docs.conda.io/projects/conda/en/latest/user-guide/install/windows.html|Miniconda]] a později doinstalovat potřebné knihovny či vývojové prostředí Spyder. Interaktivní variantu příkazového okna (interpreteru) nabízí Interactive Python - [[https://en.wikipedia.org/wiki/IPython|IPython]] [[https://ipython.org/|(web]], [[https://ipython.readthedocs.io/en/stable/index.html|dokumentace)]]
* paralelní a distrubované výpočty * současně plní roli příkazové řádky počítače * pomocí 'magických' příkazů volaných pomocí symbolu % nebo %% umožňuje uložit, editovat, spustit skript (program) Po vzoru programů [[https://www.wolfram.com/mathematica/|Mathematica]] či [[https://www.maplesoft.com/|Maple]], které mají prostředí ve stylu notebooku, kde jednotlivé výpočty uživatel provádí v buňkách, byl v roce 2011 vytvořen IPython notebook nabízející prostředí integrované do webového prohlížeče. V roce 2014 vzešel z IPython nooteboku projekt [[https://en.wikipedia.org/wiki/Project_Jupyter|Jupyter]] ([[https://jupyter.org/|web]]), který představuje prostředí umožňující integrovat výpočty ve více programovacích jazycích. Název vychází ze tří jazyků: [[https://en.wikipedia.org/wiki/Julia_(programming_language)|Julia]], [[https://en.wikipedia.org/wiki/Python_(programming_language)|Python]], a [[https://en.wikipedia.org/wiki/R_(programming_language)|R]]. V roce 2018 vznikl Jupterlab představující nové rozhraní (novou generaci) integrující v sobě Jupyter notebook. Jupyterlab v sobě lépe integruje potřebné nástroje pro vývoj: textový editor, příkazovou řádku, prohlížeč souborů, atd. Pro více informací je zde krátké [[https://www.youtube.com/watch?v=ctOM-Gza04Y|video]] Projekt Jupyter je vhodný zejména ve výuce a výzkumu. Interaktivnost notebooku spolu s možností připojit komentář (dokumentaci) umožňuje prezentovat a sdílet výsledky výzkumu s ostatními. Příklad notebooku je [[https://mybinder.org/v2/gh/vencov/zpr_tutorials/main|zde]] ===== Prostředí ===== * [[https://jupyter-notebook.readthedocs.io/en/latest/?badge=latest|Jupyter Notebook]] * [[https://jupyterlab.readthedocs.io/en/stable/index.html|Jupyter Labs]] * [[https://code.visualstudio.com/docs/datascience/jupyter-notebooks|Visual Studio Code]] [[https://code.visualstudio.com/docs/python/jupyter-support-py|(případně)]] ===== Markdown (psaní komentářů/popisek v Jupyter notebooku) ===== Markdown je tzv. značkovácí (markup) jazyk, který slouží pro úpravu/formátování textu. Tato buňka, i buňky předcházející, obsahují Markdown. Markdown umožňuje jednoduše formátovat text: **tučný text**, //kurziva//, [[https://cw.fel.cvut.cz/b221/courses/bab37zpr/start|odkaz]] > citace * list - list viz [[https://www.markdownguide.org/cheat-sheet/|Syntax 1]], [[https://github.com/hnsreeny/markdown/blob/master/markdown-cheatsheet-online.pdf|Syntax 2]] ===== Python komentáře ===== # komentar na jednom radku ''' vice radkovy komentar vice radkovy komentar vice radkovy komentar ''' ===== Základní proměnné ===== a = 5 b = 9 # součet dvou proměnných a zápis do nové proměnné c = a + b ==== Pozor, Python rozlišuje mezi velkými a malými písmeny ==== c = A + b V případě, že máte v kódu chybu Python vypíše tzv. [[https://realpython.com/python-traceback/|traceback]]. ==== Proměnné nemusí být jen celá čísla ==== # desetinná čísla (float) d = 0.75 # komplexní čísla e = 1 + 2j # text (string) f = 'foo' g = "foo" # binární logická hodnota (True/False) h = True === Explicitní deklarace/přetypování === a = int('4') b = float(4) c = str(4.0) d = complex(2,5) e = bool("false") === Zjištění typu proměnné === type(b) # respektive print(type(b)), viz níže ===== Tisk na standardni vystup ===== # program vypise retezec Hello world na standardni vystup print('Hello world!') # Stejný výsledek i bez print # POZOR - Toto lze jen díky IPythonu, standardní Python by skončíl chybou! 'Hello World!' ==== Práce s proměnnými ==== a = 5 b = a print(a,b) a = 5 b = a a = 7 print(a,b) a = b = c = 9 print(a,b,c) a, b, c = 1, 2, 3 print(a,b,c) a, b = 1,2 b, a = a, b print(a,b) === Matematické operace === # Násobení a*2 # Mocnina a**2 # Dělení a/2 # Celočíselné dělení a//2 # Modulo (zbytek po dělení) a%2 === Úloha 1 - Pokud je proměnná a typ int, jaký typ bude mít proměnná b = a/2? === Deklarujte proměnnou //a//, vypočítejte/deklarujte proměnnou //b// a zjistěte typ proměnné //b//. # Kombinace se zápisem do proměnné a = 14 a += 1 # místo a = a+1 a /= 3 a %= 3 # Jaké číslo bude v proměnné a? === Operace s textem === a = 'nula' b = "jedna" c = a+b # Můžeme sečíst číslo a text? c = 5+a # Můžeme vynásobit číslo a text? c = 5*a a = "Cvičení nás "strašně" baví!" print(a) # tzv. escape znaku a = "Cvičení nás \"strašně\" baví!" print(a) ==== Standardni vstup ==== jmeno = input('zadejte vase jmeno: ') prijmeni = input('zadejte vase prijmeni: ') vek = input('zadejte svuj vek: ') print('Jmenuji se ',jmeno, ' ', prijmeni, 'a je mi ', vek, 'let.') === Výše uvedenou větu můžeme vypsat i jinak: === print('Jmenuji se %s %s a je mi %s let.' % (jmeno, prijmeni, vek)) print(f'Jmenuji se {jmeno} {prijmeni} a je mi {vek} let.') print('Jmenuji se {0:s} {1:s} a je mi {2:s} let.'.format(jmeno, prijmeni, vek)) === Úloha 2 - Napište kolik Vám bude za dva roky === Použijte proměnnou **vek**. Zamyslete se nad postupem. budouci_vek = print('Za dva roky mi bude {0:d}.'.format(budouci_vek)) === Standardni výstup - pokročilé formátování === x = 3.14159265 \u03C0 je Unicode znak pro $\pi$ print('\u03C0 = ',x) Vyzkoušejte a zkuste pochopit jak fungují jednotlivé formátovací možnosti print('\u03C0 = %s' % x) print('\u03C0 = %d' % x) print('\u03C0 = %.3d' % x) print('\u03C0 = %.3f' % x) print(f'\u03C0 = {x}') print('\u03C0 = {0:.3f}'.format(x)) === Úloha 3 - výpočet přepony pravoúhlého trojúhelníku === Nechte uživatele zapsat délky odvěsen (standardni vstup). Vypočtěte přeponu, výsledek zapište do nové proměnné a pomocí funkce pro standardní výstup vypište výsledek. //Odmocninu můžete vypočítat pomocí mocniny.// === Formátování textu === # Nový řádek print('prvni radek\ndruhy radek') # Tabulator print('list:\n\tovoce\n\tzelenina') === Jak se zbavit přebytečných znaků === Co když uživatel omylem zadá omylem mezeru (nebo nějaký jiný znak) před/za svůj věk? //Použití metod .rstrip, .lstrip, .strip// vek = '*90 ' budouci_vek = print(f'Uzivateli je {vek} let a za rok mu bude {budouci_vek}.') === Centrování/zarovnání řetězce s pomocí vyplňovacího znaku === //Použití metod .rjust, .ljust, .center// Použijte libovolnou metodu pro centrování/zarovnání s libovolným vyplňovacím znakem tak, aby byla výsledná délka řetezce 30 znaků. Ověřte. test_string = 'Konec cviceni' # funkce len() složí pro výpočet délky/počtu znaků proměnné print(len(test_string)) ===== Úlohy na doma ===== * Instalace Pythonu na domácí počítač * Instalace VS Code a potřebných rozšíření (Python, Jupyter), případně vhodného IDE pro práci s Pythonem * Zkuste si otevřít Jupyter notebook pro první cvičení a ověřte, že vše funguje tak jak má * Zkuste si otevřít Python z příkazové řádky (ověřte nějaké základní matematické operace)