Ako prvé je potrebné spustiť IDLE, alebo iné vývojové prostredie.
Python je interpreter IDLE a pracuje v niekoľkých možných režimoch, pri windows ho ako prvé spustíme v interaktívnom režime (niekedy hovoríme aj príkazový režim): očakáva zadávanie textových príkazov (do riadka za znaky >>>), každý zadaný príkaz vyhodnotí a vypíše prípadnú reakciu (alebo chybovú správu, ak sme zadali niečo nesprávne), po skončení vyhodnocovania riadka sa do ďalšieho riadka znovu vypíšu znaky >>> a očakáva sa opätovné zadávanie ďalšieho príkazu – takémuto interaktívnemu oknu hovoríme shell.
Môžeme to teda vyskúšať, napríklad niečo z matematiky:
>>> 12345
12345
>>> 123 + 456
579
>>> 1 * 2 * 3 * 4 * 5 * 6
720
>>>
Práve sme pracovali s celočíselnými hodnotami a s ich niektorými operáciami. Je to zároveň aj prvý typ údajov: Celé čísla (int)
Ďalší typ údajov sú desatinné čísla (float) napríklad:
>>> 22 / 7
3.142857142857143
>>> .1 + .2 + .3 + .4
1.0
>>> 9999999999 * 99999999999
999999999890000000001
>>> 9999999999 * 99999999999.
9.9999999989e+20
>>>
V ďalšom príklade by sme chceli pracovať s nejakými textami. Ak ale zadáme:
>>> hello Traceback (most recent call last): File "<pyshell#10>", line 1, in <module> ahoj NameError: name 'hello' is not defined >>>
dostaneme chybovú správu NameError: name 'ahoj' is not defined
, t.j. Python nepozná takéto meno. Takýmto spôsobom sa texty ako postupnosti nejakých znakov nezadávajú: na to potrebujeme špeciálny zápis: texty zadávame uzavreté medzi apostrofy, resp. úvodzovky. Takýmto textovým zápisom hovoríme znakové reťazce.
>>> 'ahoj'
'ahoj'
>>> "hello folks"
'hello folks'
>>> 'úvodzovky "v" reťazci'
'úvodzovky "v" reťazci'
>>> "a tiež apostrofy 'v' reťazci"
"a tiež apostrofy 'v' reťazci"
>>>
V Pythone má každý typ svoje meno:
int
pre celé čísla, napríklad0
,1
,15
,-123456789
, …float
pre desatinné čísla, napríklad0.0
,3.14159
,2.0000000001
,33e50
, …str
pre znakové reťazce, napríklad'a'
,"abc"
,''
,"I'm happy"
bool
pre pravda/nepravda, napríklad True, False
Operácie
Celočíselné operácie
Oba operandy musia byť celočíselného typu:
+ | sčitovanie | 1 + 2 má hodnotu 3 |
- | odčitovanie | 2 - 5 má hodnotu -3 |
* | násobenie | 3 * 37 má hodnotu 111 |
// | celočíselné delenie, | 22 // 7 má hodnotu 3 |
% | zvyšok po delení | 22 % 7 má hodnotu 1 |
** | umocňovanie | 2 ** 8 má hodnotu 256 |
Zrejme nemôžeme deliť 0
.
Operácie s desatinnými číslami
Aspoň jeden z operandov musí byť desatinného typu (okrem delenia /
):
+ | sčitovanie | 1 + 0.2 má hodnotu 1.2 |
- | odčitovanie | 6 - 2.86 má hodnotu 3.14 |
* | násobenie | 1.5 * 2.5 má hodnotu 3.75 |
/ | delenie | 23 / 3 má hodnotu 7.666666666666667 |
// | delenie zaokrúhlené nadol | 23.0 // 3 má hodnotu 7.0 |
% | zvyšok po delení | 23.0 % 3 má hodnotu 2.0 |
** | umocňovanie | 3 ** 3. má hodnotu 27.0 |
Zrejme nemôžeme deliť 0
.
Operácie so znakovými reťazcami
+ | zreťazenie (spojenie dvoch reťazcov) | 'a' + 'b' má hodnotu 'ab' |
* | viacnásobné zreťazenie reťazca | 3 * 'x' má hodnotu 'xxx' |
Programovací režím
Doteraz sme zadávali príkazy do shellu cez „prompt“. Pokiaľ chcem ale tvoriť viacriadkový program (skript), je vhodnejšie otvoriť cez Ctrl+N nové textové okno. Tu budeme písať jednotlivé príkazy, následne ich uložíme (väčšinou je to súbor .py) a vieme ho kedykoľvek spustiť. V idle ho vieme spustiť cez klávesu F5. Tu nastáva problém, keby sme vypočítali 5+5 a priradili do premennej vysledok:
vysledok = 5 + 5
Nič sa nám nezobrazí ani nevypíše. Výsledok sa síce priradí do premennej vysledok, ale nič iné sa neudeje. Ak chceme premennú zobraziť v príkazovom riadku, musíme použiť funkciu print(). Je to jedna dôležitých funkcií, ale to uvidíme neskôr. Zápis bude vyzerať nejak takto:
# vyhodnotí sa pravá strana a následne sa priradí do premennej výsledok
vysledok = 5 + 5
# premenná výsledok sa vypíše za pomoci funkcie print do príkazového riadku
print(vysledok)
Určite ste si všimli text za mriežkou #. Nazýva sa to komentár, všetko čo je v riadku za # python ignoruje. Komentáre sú taktiež veľmi dôležité, je fajn označovať si časti kódu a to napríklad pri zmenách alebo aby sme si pripomenuli čo sa v danej časti kódu vykoná.
Ďalšou potrebnou funkciou je funkcia input(). Je opakom funkcie print a slúži na vloženie reťazca do programu z klávesnice.
# Po spustení programu čaká program kým nezadáte reťazec, alebo hodnotu do príkazového riadka
text = input()
# Hodnota sa priradí do premennej text a následne sa vypíše
print(text)
# pokiaľ by sme chceli aby sa niečo vypísalo, napríklad otázka zapíšeme to nasledovne
# input zastaví výpočet a čaká čo užívateľ napíše
meno = input("Aké je tvoje meno?")
print("Tvoje meno je: ", meno)
Pozor funkcia input() vracia vždy string tzv. znakový reťazec! Pokiaľ chcem robiť s číselným vstupom, musíme znakový reťazec pretypovať.
Pretypovacie funkcie:
Mená typov int
, float
a str
zároveň súžia ako mená pretypovacích funkcií, ktoré dokážu z jedného typu vyrobiť hodnotu iného typu:
int(hodnota)
z danej hodnoty vyrobí celé číslo, napríklad:int(3.14)
=>3
int('37')
=>37
float(hodnota)
z danej hodnoty vyrobí desatinné číslo, napríklad:float(333)
=>333.0
float('3.14')
=>3.14
str(hodnota)
z danej hodnoty vyrobí znakový reťazec, napríklad:str(356)
=>'356'
str(3.14)
=>'3.14'
bool(hodnota)
prevod reťazca na True alebo False (ak je prázdny, alebo 0, výsledok bude False):bool(1)
=>True
bool(0)
=>False
Pokiaľ by sme chceli pretypovať napr. int(„šestnásť“), python nám vyhlási chybu.
Prvý program
Skúsme si vytvoriť prvý program na výpočet
retazec = input("Zadaj dĺžku strany")
dlzka_strany = float(retazec)
vysledok = dlzka_strany * dlzka_strany
print("Obsah štvorca je: ", vysledok)
Pre čitateľnosť som použil 3 premenné: retazec, dlzka_strany a vysledok. Tento zápis viem elegantne skrátiť.
print("Obsah štvorca je: ", float(input("Zadaj dĺžku strany: "))**2)
# tento zápis, ale nie je celkom prehľadný