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.

Litsents

Icon for the Creative Commons Attribution 4.0 International License

Programmeerimine on loodud Eno Tõnisson, Tauno Palts, Merilin Säde, Kaarel Tõnisson jt poolt Creative Commons Attribution 4.0 International License litsentsi alusel, kui pole teisiti märgitud.

Jaga seda raamatut