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
ning näiteks arvmuutuja väärtusele vastava sõnetüüpi väärtuse saame funktsiooniga str
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
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
abil.remove
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.