12 Lisalugemine: Sõne

Oleme sõnedega juba oma kursuste päris algusosast alates tuttavad. Teame, et sõnet raamistavad ülakomad või jutumärgid. Teame, et sõnetüüpi tähistatakse str ning näiteks arvmuutuja väärtusele vastava sõnetüüpi väärtuse saame funktsiooniga str. Seda viimast on meil olnud tarvis, kui oleme tahtnud arvmuutuja väärtust tekstis kasutada.

a = 16
print("Arvu väärtus on " + str(a))

Siin materjalis vaatleme sõnet kui andmestruktuuri ja võrdleme seda teiste andmestruktuuridega, eriti järjendi ja ennikuga. Sõne on järjendi ja ennikuga mitmes mõttes sarnane.

Sõne elemendid

Järjendi ja enniku puhul saame teatud elemendi indeksi abil kätte.

järjend = [1, 2, 5, 6]
ennik = (1, 2, 5, 6)
print(järjend[3])
print(ennik[3])

Proovime sama ka sõne korral.

sõne ="1256"
print(sõne[3])

Mis tüüpi on sõne elemendid?

Enesekontroll (1 ülesanne)

Mitmetes keeltes on tõesti olemas eraldi andmetüüp sümbolite ja tähemärkide jaoks (nt char). Pythonis aga pole ja siin käsitletakse sõne elemente ühemärgiliste sõnedena.

Sõne läbimine

Sarnaselt järjendile ja ennikule saame ka sõne puhul for-tsükliga ühekaupa elementidele ligi, näiteks väljastamiseks:

for element in järjend:
    print(element)


for element in ennik:
    print(element)


for element in sõne:
    print(element)

Sama saab korraldada ka indeksite abil:

for i in range(len(järjend)):
    print(järjend[i])


for i in range(len(ennik)):
    print(ennik[i])


for i in range(len(sõne)):
    print(sõne[i])

Näiteks võime iga elemendi korral leida, mitu korda ta üldse selles sõnes leidub:

sõne = "Kui Arno isaga koolimajja jõudis, olid tunnid juba alanud"
for märk in sõne:
    print(märk + " on sõnes " + str(sõne.count(märk)) + " korda")

Operatsioone sõnedega

Sõne puhul toimivad funktsioonid min ja max.

Enesekontroll (1 ülesanne)

Sõnesid saab järjendite ja ennikutega sarnaselt viilutada.

print(järjend[1:3])
print(ennik[1:3])
print(sõne[1:3])

Kõik eelnevad näited töötasid sarnaselt sõne, järjendi ja enniku korral. Proovime nüüd sõne puhul neid olukordi, kus järjend ja ennik erinevad. Nimelt on erinevused selles osas, kas elemente saab muuta ja kas neid saab lisada ja eemaldada. (Mäletatavasti järjendi puhul saab elemente muuta, lisada ja eemaldada, enniku puhul mitte.)

Kuidas on lood sõnes elemendi väärtuse muutmisega?

Enesekontroll (1 ülesanne)


Proovime nüüd sõne pikkust muuta.

Enesekontroll (1 ülesanne)


Samuti ei õnnestu sõne ja enniku puhul elemendi eemaldamine käsu del või funktsiooni remove abil.

Seega võib öelda, et sõne kui andmestruktuur sarnaneb pigem enniku kui järjendiga. Tegemist on muutmatute (mittemuteeritavate) andmestruktuuridega.

Selle muutmatuse väite valguses võib tunduda vastuolulisena näiteks funktsiooni replace tegevus, millega nagu saaks sõnet elemente asendades muuta.

nimi = "Gerd"
nimi2 = nimi.replace("d", "t")
print(nimi)
print(nimi2)

Katsetades näed, et esialgne sõne ei muutu, vaid luuakse uus sõne.

Litsents

Icon for the Creative Commons Attribution 4.0 International License

Tarkvaraarendus. 2. trükk on loodud Eno Tõnisson, Tauno Palts, Kaarel Tõnisson, Heidi Meier, Merilin Säde, Ago Luberg, Birgy Lorenz, Einar Kivisalu, Meelis Antoi, ja Säde Mai Krusberg poolt Creative Commons Attribution 4.0 International License litsentsi alusel, kui pole teisiti märgitud.

Jaga seda raamatut