Sõned
Sõnedest
Programmeerimine pole ainult arvudega manipuleerimine, paljudes programmides on tähtsamal kohal töö tekstiga. Selle tarvis on Pythonis olemas eraldi andmetüüp sõne (ingl string, lühend str), mida kasutatakse justnimelt teksti esitamiseks.
Konkreetsed tekstijupid pannakse programmi tekstis kirja sõneliteraalidena. Enamasti piisab sõneliteraali kirjapanekuks sellest, kui soovitud tekst piiritletakse ülakomade või jutumärkidega, mis on samaväärsed, nt 'Tartu' või "Kauneim linn on Eestis Tartu".
Sõnesid kirja pannes tuleb jälgida, et kui tekib lause, kus on ülakoma või jutumärgid kirjavahemärkidena, siis tuleb see kuidagi eraldada, sest muidu peab Python seda sõne lõpuks.
print('Rock 'N' Roll')
Kui proovime väljastada järgmist lauset, siis annab Python meile süntaksvea. Seda saaks parandada, kui me asendame välimised ülakomad jutumärkidega.
print("Rock 'N' Roll")
Ühe võimalusena on Pythonis veel märk \, mis annab Pythonile teada, et sõnes olev märk on sõne osa.
print('Rock \'N\' Roll')
Langkriipsu \ saab kasutada ka muul otstarbel, nt reavahetusi saab esitada kombinatsiooniga \n. Kui anname muutujale mingi joru teksti ette, siis ta võtab seda kõike ühe reana, ning selleks, et reavahetusi teha, peab sõne vahele panema \n.
a = "Tere tere vana kere!" b = "Tere tere\nvana kere!" print(a) print(b)
Proovi järele, kuidas muutujate a ja b väärtused erinevad.
Nagu näha, on langkriips tekstiliteraalis spetsiaalse tähendusega. Kuidas aga esitada langkriipsu ennast? Lihtne, see tuleb ära märgistada … langkriipsuga!:
print("C:\\Opel\\tarkus.txt")
Kui tekstis on vaja kasutada palju reavahetusi, ülakomasid või jutumärke, siis võib tulemus muutuda kõigi nende \n-de, \'-d või \"-de tõttu väga kirjuks. Seetõttu on Pythonis veel üks sõne kirjapaneku viis – kolmekordsete ülakomade või jutumärkide vahel saab vabalt kasutada tavalisi reavahetusi, ülakomasid ja jutumärke:
print("""T"e"r'e'""")
Sõnede liitmine
Eelnevalt oleme liitnud arve. Näiteks teame, et 3+4 annab tulemuseks 7. Varasemalt oleme kokku puutunud ka sõnede liitmisega, kus plussmärki kasutatakse sõnede kokkupanemiseks. Näiteks
print("tere" + "tore")
väljastab ekraanile "teretore".
Kas sõnesid saab ka korrutada? Proovi, mida teeb näiteks:
print(5 * "Osta elevant ära! ")
Enesekontroll
Tehted sõnedega
Nagu juba eelmisest näitest nägime, siis on Pythonis endas hulk funktsioone, mida saab sõnede töötlemiseks ära kasutada. Siin on mõned näited erinevatest tehetest.
Avaldis | Väärtus | Selgitus |
---|---|---|
'Tere' + 'Madis!' | 'TereMadis!' | + loob kahe sõne põhjal uue sõne |
'Tere' + ' Madis!' | 'Tere Madis!' | Tühikud tuleb vajadusel ise vahele panna |
'Tere' + ' ' + 'Mad' + 'is!' | 'Tere Madis!' | Kokku võib liita ka mitu sõnet |
'nr.' + 1 | Viga!!! | Sõnet ja arvu ei saa niisama ühendada |
'nr.' + str(1) | 'nr.1' | str annab arvule vastava sõne |
'5' + '3' | '53' | Sõnena esitatud arve ei käsitleta arvudena |
int('5') | 5 | int annab sõnele vastava täisarvu |
float('5.3') | 5.3 | float annab sõnele vastava ujukomaarvu |
'xo' * 3 | 'xoxoxo' | Sõne dubleerimine |
len('tere') | 4 | Sõne pikkuse (length) küsimine |
'tere'.upper() | 'TERE' | Muudab sõne tähed suureks |
'TeRe'.lower() | 'tere' | Muudab sõne tähed väikeseks |
'jäääär'.count('ä') | 4 | Loeb kokku etteantud tähe esinemised sõnes |
'tere'.rjust(10) | ' tere' | Sõne paigutamine etteantud „ruumi“, see on abiks nt tabelite moodustamisel. |
'terekest'.rjust(12) | ' terekest' | Selle käsupaariliseks on ljust, katseta ise, mida see teeb! |
'terekest'.rjust(12, 'o') | 'ooooterekest' | Teise argumendiga saab määrata, millist sümbolit ruumi täitmiseks kasutatakse. |
' tere '.strip() | 'tere' | Käsk strip annab sõne ilma alguses ja lõpus olevate tühikute ja reavahetusteta |
'tere'.replace('e','ö') | 'törö' | Funktsioon replace genereerib uue sõne, kus näidatud tähed või alamsõned on asendatud millegi muuga. |
'isamaa'.replace('isa', 'ema') | 'emamaa' | Käske saab kombineerida |
'tere'.islower() | True | Kontrollib, kas sõnes on kõik väikesed tähed |
'tere'.isupper() | False | Kontrollib, kas sõnes on kõik suured tähed |
Selleks, et uurida kõiki sõne käske on loodud ametlik lehekülg: https://docs.python.org/3/library/stdtypes.html#string-methods
Sõnedel tähtedel on kindel järjekord. Neid saab võtta kui järjendeid, mis koosnevad tähtedest. Tänu sellele on võimalik sõnedest erinevaid andmeid kätte saada. Igal tähel sõnes on kindel järjekorranumber, mida kutsutakse indeksiks. Neid hakatakse loetlema 0-st.
Miks alustatakse järjendi elementide nummerdamist 0-st?
Vanemates programmeerimiskeeltes oli taoline valik tingitud järjendite esitusviisist arvuti mälus. Teine põhjus on selles, et nii saab mõnesid keerulisemaid indekseerimisavaldisi veidi lühemalt kirja panna. Kolmas ja kõige olulisem põhjus on see, et enamikus programmeerimiskeeltes on sedasi kogu aeg tehtud ning väga paljud programmeerijad on harjunud taolise nummerdamisega.
sõne = "Tere maailm!" print(sõne[0:4] + " kosmos!")
Katseta, mis ilmub ekraanile.
Kuna esimene indeksi number on 0, miks siis nelja tähe saamiseks pidi 5 indeksi kohta valima?.
Kuna vastav funktsioon ei arvesta valitud lõpu indeksit sisse ehk antud juhul ei arvestata tühikut sisse.
Kuidas vaadelda sõnes tähti ükshaaval? Selleks on mugav võimalus kasutada tsüklit:
sõne = "abc" for täht in sõne: print(täht)
Sõnede video
https://panopto.ut.ee/Panopto/Pages/Viewer.aspx?id=6a71872d-d7bf-482f-8904-ac5400cd47c3
Enesekontroll