Arvutiteaduse instituut
  1. Kursused
  2. 2024/25 sügis
  3. Programmeerimine (LTAT.SO.001)
EN
Logi sisse

Programmeerimine 2024/25 sügis

  • Pealeht
  • 1. Sissejuhatus
  • 2. Tingimuslause
  • 3. Tsükkel
  • 4. Järjend ja for-tsükkel
  • 5. Funktsioon
  • 6. Andmevahetus. Lihtne kasutajaliides
  • 7. Kahemõõtmeline järjend. Kahekordne tsükkel
  • 8. Kordamine 1. kontrolltööks?
  • 9. Kontrolltöö?
  • 10. Viitamine ja muteerimine
  • 11. Andmestruktuurid
  • 12. Rekursioon ja andmetöötlus
  • Projekti esitamine ja esitlused
  • 13. Objektorienteeritud programmeerimine
  • 14. Kordamine 2. kontrolltööks?
  • 15. Kontrolltöö 2?
  • Loengud
  • Moodle
  • Lahendus
  • Thonny paigaldamine
  • Thonny logide esitamine
  • Kiireksamist
  • Viited
< eelmine11. nädala sisukordjärgmine >

11.5 SÕNE

Sõne kui andmestruktuur

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 pikemas tekstis tahame arvmuutuja väärtust kasutada.

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

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

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 aga on sõne elemendid?

Ülesanne


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

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])

Tsüklis võime elemente ka muidugi muul moel kasutada, kui ainult ekraanile toomiseks.

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")

Samuti töötavad ka sõne puhul funktsioonid min ja max 

Ülesanne


Sarnaselt saame järjendeid, ennikuid ja sõnesid ka 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 neid võimalusi, kus järjend ja ennik erinevad, sõne puhul. Nimelt on erinevused selles osas, kas elemente saab muuta ja kas saab neid lisada ja eemaldada. Järjendi puhul saab muuta, lisada ja eemaldada, enniku puhul mitte.

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

Ülesanne


Proovigem nüüd sõne pikkust muuta.

Ü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)

Tegelikult siiski esialgne sõne ei muutu.


< eelmine11. nädala sisukordjärgmine >
  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused