String je po slovensky textový reťazec, je to dátový typ. Dátové typy sú tiež integer - celé číslo alebo napríklad float - desatinné číslo. String môžeme mať uložený v premennej, jeho konkrétnu hodnotu "obaľujeme" do úvodzoviek. String tiež vzniká použitím funkcie input() - tá od používateľa vždy "prinesie" string. (A v prípade, že chceme s hodnotou od používateľa pracovať ako s číslom, musíme ju pretypovať - zmeniť jej dátový typ pomocou funkcie float alebo int)
# premenná 'meno' reprezentuje hodnotu dátového typu string
meno = "Elena"
# aj táto premenná bude po načítaní obsahovať hodnotu s dátovým typom string
email = input("prosím zadaj email")
# všimnite si, Že aj 'prompt' - argument funkcie input() je string!
String má v pythone funkcie, ktoré môžeme volať priamo na hociktorom stringu, robíme to tak, že za oúvodzovkovaný string alebo za premennú, ktorá obsahuje hodnotu dátového typu string napíšme bodku, názov funkcie a prázdne zátvorky (tie označujú volanie funkcie)
Vyzerá to nejako takto:
meno = "Jozko".funkcia()
email = input()
email = email.inaFunkcia()
Funkcia string upraví, preto je potrebné novú, upravenú hodnotu niekam uložiť (do premennej), aby sme s ňou mohli ďalej pracovať.
užitočné funkcie
capitalize() # prvé písmeno bude veľkým
upper() # konvertuje string na veľké písmenká
lower() # všetky písmenká dá na malé
strip() # odstráni medzery, tabulátory a prázdne riadky z konca
islower() # vráti True ak sú všetky písmenká malé (dá sa použiť v IF)
# napríklad
meno = input()
meno = meno.capitalize() # zabezpečí, že začne veľkým
print("ahoj", meno)
# funkciu môžem volať aj priamo v inej funkcii...
meno = input()
print("ahoj", meno.capitalize())
# mohlo by to byť aj takto (nie moc prehľadné, ale funkčné)
print("ahoj", input().capitalize())
Zoznam zaujímavých funkcií aj s príkladom použitia nájdete na W3 schools
Užitočné funkcie a konštanty na prácu s textom poskytuje knižnica string. Podobne ako knižnice tkinter alebo random ju treba pred použitím importovať. Na začiatok svojho súboru napíšte:
import string
Potom môžete pristupovať k rôznym konštantám a funkciám:
import string
male_pismenka = string.ascii_lowercase
velke_pismena = string.ascii_uppercase
angl_pismena = string.ascii_letters
cisla = string.digits
print(male_pismenka) # 'abcdefghijklmnopqrstuvwxyz'
print(velke_pismena) # 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
print(cisla) # '0123456789'
Pozrite si aj ďalšie funkcie tejto knižnice v dokumentácii.
Niektoré vstavané funkcie vracajú návratovú hodnotu typu boolean - pravdivostná hodnota, tento typ pozná len dve hodnoty True a False, označujú, či niečo platí alebo nie. Napríklad funkcia islower() vráti hodnotu True, ak bola zavolaná na string-u, ktorý ma všetky písmenka malé, inak vráti False. Toto sa dá použiť v konštrukcii IF...
meno = "Ferko"
if meno.islower():
print("Zabudol si na veľké písmenko, mená sa píšu s veľkým písmenkom!")
else:
print("ok")
V kombinácii s konŠtrukciou in môžeme v podmienke zisťovať, či je jeden string súčasťou druhého (potom ho voláme substring):
if 'ahoj' in 'ahoj, ako sa mas?':
print("Nachadza sa tam slovo ahoj")
Pomocou špeciálnej konštrukcie in môže cyklus for do iteračnej premennej priraďovať postupne všetky písmenká zo string-u:
for pismenko in "testovac":
print(pismenko)
Toto by vypísalo:
t
e
s
t
o
v
a
c
Funkcia print vypíše všetky svoje argumenty (to, čo jej napíšeme do zátvoriek). Robí ale aj pár vecí navyše... ak jej dáme viac argumentov, pred vypísaním ich "pozliepa" jednou medzerou a tiež vždy za koncom výpisu "stlačí enter", teda ďalší print() už vypisuje svoje argumenty do ďalšieho riadku. Toto nie vždy potrebujeme...
print(1,2,3)
print(4,5,6)
vypíše
1 2 3
4 5 6
Print-u môžeme nanútiť, aby namiesto medzery argumenty zliepal niečím iným pomocou pomenovaného parametra sep:
print(1,2,3, sep="x")
print(4,5,6)
dostaneme:
1x2x3
4 5 6
Môžeme tiež určiť, čo print napíše za všetky argumenty, na to používame pomenovaný parameter end
print(1,2,3, sep="x", end="KONIECRIADKU")
print(4,5,6)
dostaneme:
1x2x3KONIECRIADKU4 5 6