From 884303196805915ca32bbfbccb9d79df0e05d226 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Pe=C5=A1=C3=ADk?= Date: Sun, 21 Aug 2022 20:29:43 +0200 Subject: [PATCH] #24 (#27) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Kapitola Čtení z terminálu --- .../vstup-vystup/cteni-z-terminalu.md | 77 +++++++++++++++++++ prvni-krucky/vstup-vystup/entry.yml | 1 + 2 files changed, 78 insertions(+) create mode 100644 prvni-krucky/vstup-vystup/cteni-z-terminalu.md diff --git a/prvni-krucky/vstup-vystup/cteni-z-terminalu.md b/prvni-krucky/vstup-vystup/cteni-z-terminalu.md new file mode 100644 index 0000000..8d82f0e --- /dev/null +++ b/prvni-krucky/vstup-vystup/cteni-z-terminalu.md @@ -0,0 +1,77 @@ +## Čtení z terminálu + +Náš program zatím umí převést na koruny pouze cenu lístku. Uvažujme ale, že vytváříme +program pro směnárnu, který by měl umět převést libovolnou částku dle přání zákazníka. +Náš program by se tedy měl na začátku zeptat uživatele, jaká částka má být převedena. +K tomu slouží funkce `input()`. Jako vstup zadáme zprávu, která se má zobrazit uživateli, +aby věděl, jakou informaci program očekává. + +Důležité je, že funkce `input()` vždy vrací hodnotu vloženou uživatelem jako typ **řetězec**, +a to i v případě, že uživatel zadal pouze čísla. Na číslo musíme hodnotu **převést**. K tomu +využijeme funkci `int()`, která nemění hodnotu vstupu, ale **mění typ hodnoty**, v tomto případě +převádí řetězec na celé číslo. + +```python +kurz = 25 +euro = input("Zadej počet euro: ") +euro = int(euro) +cena = euro * kurz +``` + +### Komentáře + +K využití funkcí můžeme přidat vysvětlující poznámku, kterou označujeme jako **komentář**. +Komentář je řádka programu, která má programátorům pomoci se v programu zorientovat a při +samotném spuštění ji Python ignoruje. Komentář začítáme symbolem `#` a za něj můžeme +napsat cokoli. + +```python +kurz = 25 +# Získávám hodnotu od uživatele +euro = input("Zadej počet euro: ") +# Je potřeba převést řetězec na číslo +euro = int(euro) +cena = euro * kurz +``` + +### Složitější výpis + +Tento program sice výsledek spočítá, ale nevypíše. K vypsání můžeme použít funkci `print()`. +Ve výpisu potřebujeme zkombinovat vysvětlující text a peněžní částku. Jednotlivé informace +oddělíme čárkami. Funkce `print()` je spojí dohromady do jednoho textu a oddělí mezerami, ty +tedy nemusíme do výpisu přidávat. + +```python +print("Cena je", cena, "Kč.") +``` + +Pokud by nám toto chování nevyhovovalo a chceme si o mezerách rozhodnout sami, můžeme +použít vstup `sep` (od anglického slova :term{cs="oddělovač" en="separator"}). +Ten musíme napsat i **se jménem** a vždy až **na konec**, +aby funkce věděla, že se nejedná o další text k vypsání. +Nyní již musíme mezery přidat do řetězců v uvozovkách, aby se ve výpisu objevily. + +```python +print("Cena je ", cena, " Kč.", sep="") +``` + +### Převod na řetězec + +Další možností, jak výpis provést, je použití operátorů `+` pro spojení více řetězců dohromady. +Musíme ale myslet na to, že proměnná `cena` je typ číslo. Nyní tedy musíme provést +obrácenou operaci, než jsou dělá funkce `int()`, a to je **převod čísla na řetězec**. +K převodu slouží funkce `str()`. Jakmile máme všechny hodnoty převedené na řetězec, můžeme +je spojit dohromady pomocí `+`. + +```python +cena = str(cena) +print("Cena je " + cena + " Kč.") +``` + +Oba řádky je možné spojit do jednoho a provést převod na řetězec uvnitř funkce `print()`. +Pokud ti ale tento zápis připadá příliš složitý, není vůbec problém nechat jej +rozdělený na dva řádky. + +```python +print("Cena je " + str(cena) + " Kč.") +``` diff --git a/prvni-krucky/vstup-vystup/entry.yml b/prvni-krucky/vstup-vystup/entry.yml index 6a66bb4..7fc387d 100644 --- a/prvni-krucky/vstup-vystup/entry.yml +++ b/prvni-krucky/vstup-vystup/entry.yml @@ -3,4 +3,5 @@ lead: Vstup a výstup potřebujeme aby program dokázal komunikovat s uživatele sections: - vystup-do-terminalu - prvni-program + - cteni-z-terminalu - excs