20 Sõned
Sõne (inglise keeles string) on andmetüüp, millega esitatakse tekstilisi andmeid. Selles peatükis vaatleme, kuidas on lubatud sõnesid Pythonis esitada ning töödelda.
Jutumärgid ja ülakomad
Pythonis on lubatud sõne alguse ja lõpu määramiseks kasutada nii ülakomasid ( ‘ ) kui jutumärke ( ” ). Ühe sõne alguses ja lõpus tuleb kasutada sama märki. Näiteks on korrektsed nii
print("Sisenesid pangaautomaati!")
kui ka
print('Sisenesid pangaautomaati!')
Pane tähele, et jutumärgid ja ülakomad pole osa sõne tekstilisest sisust: mõlemad näited väljastavad sama tulemuse:
>>> Sisenesid pangaautomaati!
Jutumärgid või ülakomad on vajalikud selleks, et Python käsitleks nende vahel paiknevaid sümboleid tekstina, mitte näiteks muutujanimedena. Võid katsetada, mis juhtub, kui jutumärgid või ülakomad ära jätta.
Olemasoleva väärtuse muutmiseks sõneks kasutatakse funktsiooni str
, lihtsalt jutumärkide või ülakomade lisamisest ei piisa.
Enesekontroll (1 küsimus)
Sõne, mis sisaldab jutumärke või ülakomasid
Kui sõne sisaldab jutumärke või ülakomasid, ei saa me seda sümbolit sõne alguse või lõpu määramiseks kasutada. Olukorra lahendamiseks on kolm võimalust:
Teist tüüpi piiritleva sümboli kasutamine
Kui tekstis esineb ainult üht tüüpi piiritlev sümbol, siis on kõige lihtsam kasutada teist tüüpi sümbolit (ülakomaga sõne ümbritseda jutumärkidega või vastupidi):
print("Rock 'n' roll") print('Jim ütles vaid: "Siin see on."')
Langkriipsu kasutamine sõnes
Teine variant on märkida sõne sisus olevad probleemsed ülakomad ja jutumärgid langkriipsuga. Sellisel juhul ei loe Python neid sõne piiritlejatena:
print("Jack vastas: \"Rock 'n' roll\".") print('Jack vastas: "Rock \'n\' roll".')
Mõlemad read annavad sama tulemuse:
>>> Jack vastas: "Rock 'n' roll".
Pane tähele, et langkriips \ ja kaldkriips / on erinevad märgid.
Langkriipsu saab kasutada ka teiste erisümbolite rakendamiseks. Näiteks saab reavahetuse lisada kombinatsiooniga \n
. Näiteks rida
print("Seda kuupaistet!\nOh muutuksin sündides\nmänniks mäetipul!\n-Ryota")
annab tulemuse
>>> Seda kuupaistet! Oh muutuksin sündides männiks mäetipul! -Ryota
Kui me soovime langkriipsu ennast sõnes kasutada, tuleb see märgistada teise langkriipsuga. Näiteks rida
print("C:\\kaustanimi\\failinimi.txt")
annab tulemuse
>>> C:\kaustanimi\failinimi.txt
Enesekontroll (1 küsimus)
Kolmekordse jutumärgi või ülakoma kasutamine
Kui tekst on pikk ja seal on palju jutumärke, ülakomasid või reavahetusi, siis on nende käsitsi märkimine tülikas ülesanne. Pythonis on lubatud sõne piirid märkida kolmekordsete jutumärkide või ülakomadega, siis säilivad tekstis sisalduvad jutumärgid, ülakomad ja reavahetused.
print("""Jack vastas: "Rock 'n' roll".""") print('''Jack vastas: "Rock 'n' roll".''')
print("""Seda kuupaistet! Oh muutuksin sündides männiks mäetipul! --Ryota""")
print(""" _____ / ____| | | __ __ _ _ __ ___ ___ _____ _____ _ __ | | |_ |/ _` | '_ ` _ \ / _ \ / _ \ \ / / _ \ '__| | |__| | (_| | | | | | | __/ | (_) \ V / __/ | \_____|\__,_|_| |_| |_|\___| \___/ \_/ \___|_| """)
Enesekontroll (1 küsimus)
Sõnede manipuleerimine
Sõnede liitmine
Eelnevalt oleme kohanud sõnede liitmist. See käib plussmärgi abil:
"Tere " + "hommikust"
Sõnemeetodid
Leidub hulk funktsioone, mis ühendatakse sõne külge punkti abil (selliseid funktsioone nimetatakse meetoditeks). Nende funktsioonide lõpus on sulud, mis võivad olla tühjad või mittetühjad. Katseta järgnevaid funktsioone ja selgita välja, mida need teevad:
print("tartu".capitalize()) print("Tartu".endswith("tu")) print("Tartu".lower()) print("Tartu".upper()) print("tartu".count("t")) print("Tartu".startswith("tu")) print("Kauneim linn on Eestis Tartu".title())
Kõikide Pythoni sisseehitatud sõnemeetodite juhend asub aadressil http://docs.python.org/3/library/stdtypes.html#string-methods.
Need funktsioonid töötavad ka muutujatega, mille väärtuseks on sõne:
linn = "Tartu" print(linn.lower())
Sõne üksikud sümbolid
Sõne koosneb sümbolitest ja neid saab eraldi käsitleda. Näiteks tavamõttes esimene sümbol on indeksiga 0.
linn = "Tartu" print(linn[0])
Sõne korrutamine
Korrutusmärgiga saab sõnet korrata märgitud arv korda. Näiteks
lause = "mull " * 20 print(lause)
väljastab ekraanile
>>> mull mull mull mull mull mull mull mull mull mull mull mull mull mull mull mull mull mull mull mull
Enesekontroll (1 küsimus)
Väljund
Me oleme funktsiooni print
juba korduvalt kasutanud, kuid uurime seda nüüd põhjalikumalt. Nagu me teame, väljastab see käsk väärtusi ekraanile. Vaatame näidet:
print(32 * 57)
Ekraanile väljastamiseks on määratud sulgude sisu ehk argument. Selles näites on funktsiooni print
argumendiks 32 * 57. Kui funktsioon käivitada, kuvatakse ekraanile 1824. Põhjalikumalt räägime funktsioonidest hilisemates peatükkides.
Käsule print
saab anda mitu argumenti, sellel juhul väljastatakse need tühikutega eraldatult.
Järgnevad näited annavad samaväärse tulemuse. Esimeses variandis kombineerime soovitud komponendid esmalt üheks sõneks ja anname selle käsu print
ainsaks argumendiks:
eesnimi = "Peeter" perenimi = "Paan" vanus = 21 print(eesnimi + " " + perenimi + " vanus: " + str(vanus))
Teises variandis anname käsule print
komponendid eraldi argumentidena:
eesnimi = "Peeter" perenimi = "Paan" vanus = 21 print(eesnimi, perenimi, "vanus:", vanus)
Mõlemad programmid väljastavad sama tulemuse:
>>> Peeter Paan vanus: 21
Eraldi argumentidega variandi kasutamine on lihtsam ja mugavam (näiteks ei pea arve käsuga str
sõneks teisendama). See-eest ei sobi see juhul, kui me ei soovi väljudis argumentide vahele tühikuid.
Enesekontroll (1 küsimus)
Palun kommenteeri seda materjali Google’i küsimustikus.