Lekce 3 - Proměnné, typový systém a parsování v Pythonu
Z minulé lekce, PyCharm a první konzolová aplikace v Pythonu, již umíme pracovat s prostředím PyCharm a vytvořit konzolovou aplikaci.
V tomto tutoriálu základů programování v jazyku Python si ukážeme proměnné, základní datové typy a napíšeme si první konzolové aplikace. Samozřejmě nebude chybět cvičení.
Proměnné
V Pythonu jsou proměnné brány jako odkazy na objekty, díky čemuž je můžeme používat ve funkcích a volat na nich metody (ukážeme si později). Proměnná nám většinou uchovává nějakou hodnotu určitého (datového) typu.
Typový systém
Existují dva základní typové systémy: statický a dynamický.
- Dynamický typový systém nás plně odstiňuje od toho, že proměnná má vůbec nějaký datový typ. Ona ho samozřejmě vnitřně má, ale jazyk to nedává najevo. Dynamické typování jde mnohdy tak daleko, že proměnné nemusíme ani deklarovat. Jakmile do nějaké proměnné něco uložíme a jazyk zjistí, že nebyla nikdy deklarována, sám ji založí. Do té samé proměnné můžeme ukládat text, potom objekt uživatele a potom desetinné číslo. Jazyk se s tím sám popere a vnitřně automaticky změní datový typ. V těchto jazycích jde vývoj rychleji díky menšímu množství kódu. Zástupci jsou např. PHP nebo Ruby.
- Statický typový systém naopak striktně vyžaduje definovat typ proměnné a tento typ je dále neměnný. Jakmile proměnnou jednou deklarujeme, není možné její datový typ změnit.
Python je dynamicky typovaný jazyk. Proměnné tedy nemusíme deklarovat s jejich datovým typem. Díky tomu je vývoj v jazyce rychlejší a jazyk se ze začátku lépe osvojuje.
V Pythonu máme tři základní datové typy:
- Celá čísla:
int
- Desetinná čísla:
float
- Textový řetězec:
str
Pojďme si nyní něco naprogramovat, ať si nabyté znalosti trochu osvojíme. S teorií budeme pokračovat až příště.
Program vypisující proměnnou
Založíme si nový projekt a pojmenujeme ho Vypis
(ke všem
příkladům si vždy založíme nový projekt). Zkusíme si nadeklarovat
celočíselnou proměnnou a
. Dosadíme do ní číslo
56
a její obsah vypíšeme do konzole:
a = 56
print(a)
Na prvním řádku deklarujeme proměnnou a
a přiřadíme ji
hodnotu 56. Slouží k tomu operátor "rovná se" (=
). Druhý
příkaz je nám už známý, vypíše do konzole obsah proměnné
a
. Konzole je chytrá a umí vypsat i číselné proměnné:
Konzolová aplikace
56
Pro desetinnou proměnnou by kód vypadal takto:
a = 56.6
print(a)
Je to téměř stejné jako s celočíselnou proměnnou. Jako desetinný
oddělovač používáme tečku (.
). Pokud bychom chtěli zjistit,
jakého datového typu proměnná je, můžeme typ zjistit pomocí funkce
type()
:
a = 5.56 print(type(a))
Ve výstupu vidíme:
Konzolová aplikace
<'class-float'>
Program Papoušek
Minulý program byl poněkud nudný, zkusme tedy nějak reagovat na vstup od
uživatele. Napíšeme program papoušek, který bude dvakrát opakovat to, co
uživatel napsal. Ještě jsme nezkoušeli z konzole nic načítat, ale je to
velmi jednoduché. Slouží k tomu metoda input()
, která nám
vrátí textový řetězec z konzole. Zkusme si napsat následující kód:
print("Ahoj, jsem virtuální papoušek Lóra, rád opakuji!")
print("Napiš něco: ")
vstup = input()
vystup = vstup + ", " + vstup + "!"
print(vystup)
To už je trochu zábavnější 🙂 První dva řádky jsou jasné. V
dalším deklarujeme textový řetězec vstup
. Do proměnné
vstup
se přiřadí hodnota z metody input()
na
konzoli, tedy to, co uživatel zadal. Pro výstup si pro názornost zakládáme
další proměnnou typu textový řetězec. Zajímavé je, jak do
vystup
přiřadíme. Využíváme přitom tzv. konkatenace
(spojování) řetězců. Pomocí operátoru +
totiž můžeme
spojit několik textových řetězců do jednoho. Je jedno, jestli je řetězec
v proměnné, nebo jestli je explicitně zadán v uvozovkách ve zdrojovém
kódu. Do proměnné tedy přiřadíme vstup
, dále čárku, znovu
vstup
, a poté vykřičník. Nakonec proměnnou vypíšeme do
konzole.
Program zdvojnásobovač
Zdvojnásobovač si vyžádá na vstupu číslo, které zdvojnásobí a vypíše. Asi bychom s dosavadními znalostmi napsali něco takového:
print("Zadejte číslo k zdvojnásobení:") a = input() a = a * 2 print(a)
Zdvojnásobení čísla a
jsme provedli pomocí přiřazení.
Pokud zkusíme program přehrát, v konzoli se nám vypíše dvakrát námi
zadané číslo! Narážíme na fakt, že funkce input()
nám
vrací textový řetězec. Pokud se pokusíme sečíst dva řetězce, jednoduše
se oba řetězce spojí (jako když se spojují brčka). Cokoli tedy přijde z
textové konzole je vždy text. A to i když zadáme číslo. Abychom získali
skutečně číslo, budeme ho muset tzv. naparsovat.
Parsování
Parsováním se myslí převod z textové podoby na nějaký specifický typ,
např. číslo. Pokud budeme chtít naparsovat např. int
z typu
string
, budeme postupovat takto:
s = "56" a = int(s)
Zkusme si tedy napsat program, který si na vstupu vyžádá jedno celé číslo, a to nám zdvojnásobí:
print("Zadejte číslo k zdvojnásobení:")
s = input()
a = int(s)
a = a * 2
print(a)
Nejprve si text z konzole uložíme do textového řetězce s
.
Do celočíselné proměnné a
poté uložíme číselnou hodnotu
řetězce s
. Dále hodnotu v a
zdvojnásobíme a
vypíšeme do konzole:
Konzolová aplikace
Zadejte číslo k zdvojnásobení:
1024
2048
Parsování se samozřejmě nemusí povést, když bude v textu místo čísla např. "slovo", ale tento případ zatím nebudeme ošetřovat.
Jednoduchá kalkulačka
Ještě jsme nepracovali s desetinnými čísly. Zkusme si tedy napsat slibovanou kalkulačku. Bude velmi jednoduchá. Na vstup přijdou dvě čísla a program poté vypíše výsledky pro sčítání, odčítání, násobení a dělení:
print("Vítejte v kalkulačce")
print("Zadejte první číslo:")
a = float(input())
print("Zadejte druhé číslo:")
b = float(input())
soucet = a + b
rozdil = a - b
soucin = a * b
podil = a / b
print(f"Součet: {soucet}")
print(f"Rozdíl: {rozdil}")
print(f"Součin: {soucin}")
print(f"Podíl: {podil}")
print("Děkuji za použití kalkulačky!")
A takto vypadá výstup programu v konzoli:
Konzolová aplikace
Vítejte v kalkulačce
Zadejte první číslo:
3.14
Zadejte druhé číslo:
2.72
Součet: 5,86
Rozdíl: 0,42
Součin: 8,5408
Podíl: 1,15441176470588
Děkuji za použití kalkulačky!
Pro jednodušší výpis do konzole zde používáme formátovaný výpis
pomocí interpolace (nebo též F-String) ve tvaru
print(f"text {proměnná}")
. Tato šikovná utilita je v pythonu od
verze 3.6. V opačném
případě bychom museli použít přetypování na
string print("text" + str(proměnná))
, což je méně pohodlné
Právě jsme se tedy naučili opak k parsování a nyní tedy v Pythonu umíme převést cokoli do textové podoby.
Všechny programy jsou k dispozici v příloze.
V následujícím cvičení, Řešené úlohy k 1.-3. lekci Pythonu, si procvičíme nabyté zkušenosti z předchozích lekcí.
Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 401x (2.9 kB)
Aplikace je včetně zdrojových kódů v jazyce Python