Lekcie
Vstup od používateľa
Tvoj kód už nebude len statický. Naučíš sa, ako od používateľa získať vstup a ako s ním pracovať.
V minulej lekcii sme sa naučili pracovať s premennými a vypísať ich hodnoty do konzoly. Na týchto vedomostiach budeme ďalej stavať. Možno si to neuvedomuješ, ale získavanie vstupu od používateľa je veľmi časté a dôležité pre funkciu aplikácií - prihlasovanie (zadávanie emailovej adresy a hesla), zadávanie počtu kusov v košíku, atď.
Načítanie vstupu v Pythone
Vstup v Pythone funguje v konzole. Konzola slúži totiž na výstup, ale aj na vstup. Na toto je zabudovaná funkcia input(), ktorá môže mať zadaný 1 argument - prompt, teda nejaká výzva pre používateľa. Tento prompt sa zobrazí v konzole ako normálny text, avšak po ňom bude nasledovať blikajúci kurzor a používateľ bude mať možnosť zadať nejaký text. Potom musí stlačiť klávesu Enter, aby sa jeho zadaný text "odoslal." S týmto textom vieme následne pracovať.
Pozor: Spúšťač kódu sa po chvíli neaktivity automaticky vypne, ak program očakáva vstup od používateľa.
input("Vitajte! Prosím zadajte Váš PIN: ")
Ak chceš písať do konzoly, buď si istý, že sa tvoj kurzor v nej nachádza, taktiež aj to, že tvoj program aktuálne očakáva nejaký vstup.
Teraz si môžeš skúsiť prepísať prompt na nejaký svoj text. Taktiež si skús, čo sa stane, ak zavoláš input() bez argumentu. Ak by si to skúsil, tak zistíš, že v konzole sa zobrazí len blikajúci kurzor, ale bez žiadneho textu, takže preto je vhodné vždy definovať nejaký prompt, aby používateľ vedel, že od neho očakávame vstup.
Ako fungujú argumenty funkcií?
Ako vidíš funkcia input() (alebo print()) môže, ale nemusí mať argument. Prečo? Takéto parametre sa nazývajú voliteľné, teda je na nás, či ich chceme zadať. Avšak je veľa funkcií do ktorých musíme zadávať argumenty a ak ich nezadáme, tak dostaneme error (chybu). Hovoríme to, aby si nebol zmätený, keď budeme nazývať nejaké argumenty ako voliteľné alebo povinné.
input() je zaujímavá v tom, že nám dovoľuje si uložiť jej hodnotu do premennej. Teda vstup, ktorý používateľ zadá, si my uložíme do premennej a potom s ním vieme pracovať. Funguje to následovne:
vstup = input("Zadajte nejaký text:")
Takto sa do našej premennej uloží čokoľvek, čo používateľ zadal. Táto premenná bude dátového str (textový reťazec). Na to si musíme dávať pozor.
Predstav si, že si vypýtame nejaké číslo na vstupe a potom k nemu chceme prirátať číslo 5. V tomto prípade nám vyhodí error, nakoľko dátový typ str nepodporuje takéto operácie. Skús si to.
cislo = input("Zadajte cislo:")
cislo += 5
str na int (celé číslo). Teraz náš program už bude fungovať.
cislo = input("Zadajte cislo:")
cislo = int(cislo)
cislo += 5
print(cislo)
input() vložíme do funkcie int() a až túto hodnotu (s dátovým typom int) uložíme ako premennú cislo.
cislo = int(input("Zadajte cislo:"))
cislo += 5
print(cislo)
Pretypovanie ostatných dátových typov
str(). Na tomto princípe fungujú aj float() a bool().
nejake_cislo = int("30")
cislo_ako_str = str(67)
desatinne_cislo = float("2.71")
Pri pretypovaní si musíme byť istý, že argument, ktorý sme zadali bude spĺňať podmienky na pretypovanie pre daný typ. Napríklad funkcia int() zlyhá, ak napr. do nej dáme argument "ahoj" alebo "1.0".
Zreťazovanie str
Ak chceme naše výpisy do konzoly zlepšiť, musíme vedieť zreťaziť (po anglicky concatenate) textové reťazce. Vieme to docieliť aj vďaka pretypovaniu.
str. Spusti tento kód a uvidíš, že premenná text bude na konci programu "Kód: ABC". Pokús sa pridať na koniec textu ďalšiu časť "XYZ", aby sa vypísalo "Kód: ABCXYZ".
text_1 = "Kód: " text_2 = "ABC" text = text_1 + text_2 print(text)
text_1 = "Kód: " text_2 = "ABC" text_3 = "XYZ" text = text_1 + text_2 + text_3 print(text)
text_1 = "Kód: " text_2 = "ABC" text = text_1 + text_2 + "XYZ" print(text)
print() funkcii.
text_1 = "Kód: " text_2 = "ABC" text = text_1 + text_2 print(text + "XYZ")
Viac príkladov na zreťazenie
Príklad č. 1
meno = "Martin" priezvisko = "Chudý" print(meno + " " + priezvisko)
Príklad č. 2
str, tak v tomto prípade nemusíme pretypovať.
farba = input("Aká je vaša obľúbená farba?")
print("Vaša obľúbená farba: " + farba)
print()
Zreťazovanie je mimoriadne užitočné pri vypisovaní do konzoly a vďaka nemu vieme tvoriť zložitejšie výpisy. Ale pozor! Zreťaziť vieme spolu len str so str! Nemôžeme zreťaziť str a int (alebo iný dátový typ). Kód nižšie skús opraviť tým, že pretypuješ v print() funkcii premennú vek na str.
vek = 29
print("Váš vek je " + vek)
vek = 29
print("Váš vek je " + str(vek))
type(). Funkcia type() má 1 parameter a tým je nejaká premenná. Táto funkcia je užitočná pri hľadaní chýb, ako napr. overovanie správneho dátového typu premennej.
cislo = 10
text = "PythonŠkola"
dalsia_premenna = True
print("Premenná cislo má dátový typ: " + str(type(cislo)))
print("Premenná text má dátový typ: " + str(type(text)))
print("dalsia_premenna je " + str(type(dalsia_premenna)))
Zopakuj si!
- Funkcia
input()slúži na získanie vstupu od používateľa z konzoly. - Hodnota získaná pomocou
input()má vždy dátový typstr. - Ak chceme so vstupom pracovať ako s číslom, musíme ho pretypovať pomocou
int()alebofloat(). - Textové reťazce vieme zreťaziť (spojiť) pomocou znaku +.
- Dátový typ premennej si môžeme overiť pomocou funkcie
type().
peniaze s hodnotou
načítanou zo vstupu užívateľa a pretypuj ju na dátový typ float.peniaze odčítaj číslo 12,34. Na konci vypíš "Zostatok po nákupe je X€".Namiesto písmena X použi premennú
peniaze.
input()?
float
int
str
bool
input() vždy vracia str (textový reťazec), aj keď používateľ zadá číslo.
int() v Pythone?
int() slúži na pretypovanie hodnoty na celé číslo, aby sme s ňou mohli počítať.
cislo = input("Napiste cislo: ")
cislo += 45
print("Nove cislo: " + str(cislo))
cislo.
cislo má typ str a Python nevie pripočítať číslo k textu, preto vznikne chyba.
input() sú pravdivé?
str.
int, ak používateľ zadá číslo.
input() vždy vracia text, slúži na získanie vstupu a môže obsahovať výzvu pre používateľa.
cislo = float("input()")
cislo = input(float())
cislo = float(input())
print("V peňaženke máte " + str(10.5) + "€")
float a str.
str, takže ho vieme zreťaziť s textom a celý reťazec sa vypíše do konzoly.
print("Vitaj, " + meno)
print(Číslo účtu: + str(cislo_uctu))
print("Email " + email + " bol zablokovaný pred " + str(pocet_dni) + " dňami.")
print(text1) + print(text2)
print() nevracia text a nie je možné ju zreťazovať pomocou znaku +.