2. díl - Proměnné, základní datové typy a funkce

Python Základní konstrukce Proměnné, základní datové typy a funkce

V minulém dílu o Pythonu jsme si řekli něco o tomto jazyku, ukázali IDLE a naučili jsme se základní matetické operátory. Dnes si ukážeme proměnné, základní datové typy a napíšeme si první konzolové aplikace. Samozřejmě nebude chybět cvičení :-)

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 mě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. Jakmile se do textového řetězce pokusíme uložit objekt uživatel, dostaneme vynadáno.

Python je dynamicky typovaný jazyk, proměnné 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.

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.

Základní datové typy

Celé číslo

Anglicky integer, zkratka int - uchovává v paměti celé číslo, jehož velikost je limitována pouze pamětí počítače.

Desetinné číslo

Anglicky floating point number, zkratka float - uchovává v paměti desetinné číslo, není však neomezeně přesné. U desetinných čísel se nepíše čárka, ale tečka. Čísla začínající nulou se dají psát bez nuly. Např. 0.25 se dají psát jako .25 .

Řetězec

Anglicky string, zkratka str - uchovává v paměti řetězec (sled znaků - např. slovo). Definuje se tak, že se výraz, který uchovává, zapíše do uvozovek. Buď jednoduchých ' ', nebo do dvojitých " ".

Datové typy deklarovat nemusíme, pokud nechceme nějaké speciální.

Hodnoty uložené v proměnných

Teď si otevřte pythonovskou konzoli nebo IDLE. Vytvoříme si naši první proměnnou:

>>> a = 1

Máme a, což je odkaz na objekt o hodnotě 1. Zkusíme zvýšit hodnotu proměnné o jednu:

>>> a = a + 1

A teď vypíšeme hodnotu a:

>>> a
2

Proměnných můžeme i více. Přidáme si proměnnou b.

>>> b = 3

A nyní vydělíme b proměnnou a a to celé uložíme do c:

>>> c = b / a

Kolik je c ?

>>> c
1.5

Někoho z vás možná napadne, že c nebude celé číslo. Python si určí, jakého typu bude proměnná. Zjistit typ proměnné můžeme funkcí type():

>>> type(c)
<class 'float'>

Proměnná c je desetinné číslo!

Velikost písmen

Teď ještě vsuvka ohledně velikosti písmen:

>>> a = 1
>>> A = 2
>>> a
1
>>> A
2

Python na rozdíl od některých jiných jazyků, rozlišuje velikost písmen u proměnných, takže a a A jsou úplně jiné proměnné!

Hello World!

V téměř každém jazyce je první aplikace Hello World! - neboli Ahoj světe! My si ji také vytvoříme. Otevřte si IDLE -> dále pak file -> New File (nebo můžete stisknout CTRL + N). Vyskočí vám nové okno. Tam zapíšeme následující kód, který si hned vysvětlíme:

Hello World v Pythonu

První řádek je komentář, který zároveň slouží k spuštění interpretu (Pythonu) na unixových systémech. Komentář začíná # a Python dále ignoruje co je za ním (na řádce). Poté následuje mezera pro přehlednost. Na další řádce je funkce print(). Tato funkce zobrazí řetězec nebo číslo v konzoli. Další je funkce input(), která přijímá vstup od uživatele jako řetězec (v tomto případě čeká na stisk klávesy, jinak by se okno okamžitě zavřelo).

Pokud program spustíte, dostanete toto:

Hello World v Pythonu

Teď zkuste zapsat do vašeho nového programu tento kód a ten poté uložte a spusťte:

#!/usr/bin/env python3

print("Já jsem první řádka.")
print("A já druhá.")
input()

Konzole zobrazí tento výsledek:

Hello World v Pythonu

Máte menší problém. Funkce print() po vypsání textu ukončí řádek. Pokud byste chtěli další výstup "vytisknout" na ten samý řádek, tak máte (zatím) smůlu. Později si ukážeme, jak si přizpůsobit funkci print() k obrazu svému. Funkce print() ale dokáže vypsat více textu najednou, stačí oddělit text čárkou:

#!/usr/bin/env python3

print("Já jsem první část textu", "a já druhá!")
input()

Teď si ukážeme, že i řetězce lze "sčítat":

#!/usr/bin/env python3

print("Já jsem první část textu" + " " + "a já druhá!")
input()

Výstup do konzole je pokaždé stejný a vypadá takto:

Výstup do konzole v Pythonu

Ozvěna

Teď si vytvoříme program ozvěna. Uživatel zadá vstup do konzole a tento vstup se mu vypíše dvakrát. Těžké? Jdeme na to!

#!/usr/bin/env python3

print("Ozvěna!") #vypíše Ozvěna!
slovo = input("Zadejte slovo: ") #získá od uživatele vstup a uloží jej do proměnné
výsledek = slovo + " " + slovo # vytvoří novou proměnnou
print(výsledek)
input()

Zde je ukázka:

Výstup do konzole v Pythonu

Parsování

Funkce input() vrací řetězec. Ale co když potřebujeme dostat od uživatele například číslo?

Musíme provést tzv. parsování. Číslo vytvoříme z řetězce (nebo z něčeho jiného) pomocí vestavěné funkce int(). Naopak můžeme převést číslo (nebo něco jiné - např. desetinné číslo) na řetězec pomocí funkce str(). A teď praxe:

Program zdvojnásobovač

#!/usr/bin/env python3

print("Zdvojnásobovač!")
číslo = int(input("Zadejte číslo: ")) # řetězec z input() se převede na celé číslo
print("Jeho dvojnásobek je:", 2 * číslo)
input()

Zde je příklad:

Parsování v Pythonu

Kalkulačka

Teď si vytvoříme konzolovou aplikaci, která dokáže sčítat, odčítat, násobit a dělit dvě čísla.

#!/usr/bin/env python3

print("Kalkulačka\n")
první_číslo = int(input("Zadejte první číslo: "))
druhé_číslo = int(input("Zadejte druhé číslo: "))
print("Jejich součet je:", první_číslo + druhé_číslo)
print("Jejich rozdíl je:", první_číslo - druhé_číslo)
print("Jejich součin je:", první_číslo * druhé_číslo)
print("Jejich podíl je:", první_číslo / druhé_číslo)
input("\nStiskněte libovolnou klávesu...")

Znak \n v textu způsobí, že se text odřádkuje. To znamená, že text za tímto znakem se zobrazí na další řádce (v tomto případě se udělá prázdný řádek, jelikož za tímto znakem nic nenásleduje).

Pokud budete mít v Pythonu víceslovné názvy proměnných, doporučuje se oddělovat názvy podtržítkem.

Nyní si ukážeme, jak kalkulačka vypadá:

Kalkulačka v Pythonu

Tak a to je pro tuto lekci vše. Příště se podíváme na větvení programu pomocí if, elif a else; výraz in a dále si ukážeme booleovské hodnoty, logické operátory a napíšeme si pár dalších programů.


 

  Aktivity (1)

Článek pro vás napsal gcx11
Avatar
(^_^)

Jak se ti líbí článek?
Celkem (19 hlasů) :
4.947374.947374.947374.947374.94737


 


Miniatura
Předchozí článek
Úvod do Pythonu
Miniatura
Všechny články v sekci
Základní konstrukce jazyka Python
Miniatura
Následující článek
Cvičení k 1. a 2. lekci Pythonu

 

 

Komentáře
Zobrazit starší komentáře (28)

Avatar
QClodd
Člen
Avatar
QClodd:

Ahoj,nevím jak mám vlastně každé slovo uložit do samostatné proměnné a pak sečíst všechny ty proměnné,aby mi to dalo větu. Například jsem psal: a =All, b = work,... a pak dal print(A + b +,..) zkrátka nevím,jak mám zapsat proměnné kde je text

Odpovědět 22. března 20:27
We are not here to take part we are here to take over
Avatar
gcx11
Redaktor
Avatar
Odpovídá na QClodd
gcx11:

Ahoj, musíš kolem nich dát uvozovky.

text = "Nějaký text"
 
Odpovědět 28. března 2:16
Avatar
QClodd
Člen
Avatar
QClodd:

Ahoj,děkuji mockrát :) už jsem na to došel :)

Odpovědět 28. března 10:32
We are not here to take part we are here to take over
Avatar
Mirec
Člen
Avatar
Mirec:

zdravim, k tomu parsovaniu som sa chcel spytat tak bokom..v inych navodoch som vydel spominanu funkciu "eval" aky je v tom rozdiel kedy sa tato funkcia pouziva? dakujem

 
Odpovědět 4. září 18:58
Avatar
Mirec
Člen
Avatar
Mirec:

*videl :)

 
Odpovědět 4. září 21:43
Avatar
gcx11
Redaktor
Avatar
Odpovídá na Mirec
gcx11:

Pro Python 2 platí, že funkce input není to samé jako v Pythonu 3.

Kód v Pythonu 2:

cislo = raw_input("Zadej číslo: ")

Ten samý kód v Pythonu 3:

cislo = input("Zadej číslo: ")

Python 2 také obsahuje input, ale ten funguje trochu jinak a nebezpečněji.

cislo = input("Zadej číslo: ")

Což je to samé jako v Pythonu 3:

cislo = eval(input("Zadej číslo: "))

Funguje to podobně, ale je to dost nebezpečné.

Pokud zadáš místo čísla na vstup:

__import__("subprocess").call(["cmd.exe"])

a používáš Windows, tak se otevře konzole a můžeš se potom přes tvůj jednoduchý program na parsování čísel hrabat v systému.

Editováno 5. září 15:17
 
Odpovědět 5. září 15:16
Avatar
gcx11
Redaktor
Avatar
Odpovídá na Mirec
gcx11:

A abych odpověděl na otázku, tak na parsování nikdy, pokud máš rozum.

 
Odpovědět 5. září 15:18
Avatar
gcx11
Redaktor
Avatar
Odpovídá na gcx11
gcx11:

Mám v tom chybu, začátek má být:
Kód v Pythonu 2:

cislo = int(raw_input("Zadej číslo: "))

Ten samý kód v Pythonu 3:

cislo = int(input("Zadej číslo: "))
Editováno 5. září 15:31
 
Odpovědět 5. září 15:31
Avatar
Vít Jetmar
Člen
Avatar
Vít Jetmar:

Toto je pouze k počítači? Nebo mám prostě jiný Python na telefonu?

Odpovědět 5. listopadu 23:40
Být jiný není špatné.
Avatar
gcx11
Redaktor
Avatar
Odpovídá na Vít Jetmar
gcx11:

Myslíš to input? Pokud ano, tak bych řekl, že tam máš jiný Python. Tohle je základní standart Pythonu, který by měla dodržovat i ta implementace na telefonu.

 
Odpovědět 7. listopadu 10:20
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 38. Zobrazit vše