6. nädala õpijuhis

From Wikiversity

kursuse avalehele

Eesmärk[edit]

Nädala eesmärgiks on:

  1. Tutvuda struktuursete andmetüüpidega: listi stringi ja ennikuga - nende tüüpiliste töötlemisvõtetega (lõiked, tehted, funktsioonid).
  2. Saada esmane kogemus stringide kasutamisest ning töötlemisest koos stringi meetoditega.
  3. Praktiseerida listi kasutamist ühetüübiliste andmete hoidmiseks ja korduvaks kasutamiseks.
  4. Kasutada ennikut konsantse andmejadana.

Lugemiseks ja proovimiseks[edit]

  1. Loe materjali struktuursetest andmetüüpidest - üldisemalt massiivist.
  2. Loe läbi materjal Pythoni jadadest, kus on puudutatud liste, stringe ja ennikuid ning uuri jadade näiteid.
  3. Vaata üle stringi kui jada meetodid standardteegist ja kirjuta endale välja neist ca 10 tükki, mis tunduvad huvitavamad ja vajalikumad. Kasuks oleks kõigi toimimine ära proovida.

Ülesanded[edit]

Ülesanne 1 Väikesed näpuharjutused stringidest[edit]

a) Sisestatakse tekstilõik ja otsitav sõna. Programm leiab, kas tekstilõigus on olemas otsitav sõna ja annab vastuseks, "Sõna ei leidnud" või "Sõna algas ... positsioonist".

b) Sisestatakse tekstilõik, otsitav sõna ja asendussõna. Programm uurib, kas otsitav sõna on olemas. Kui jah, siis asendab selle sõna asendussõnaga ja trükib teksti uuesti välja, vastasel juhul annab teate, et otsitavat sõna ei leitud ja asendamist ei toimu. (Kasutada tuleks meetodeid str.find(), str.replace())


Ülesanne 2 Isikukood[edit]

Programmile on sisendiks on kasutaja nimi ja Eesti Vabariigi kodaniku isikukood (IK). Leia IK-st järgmised andmed ja trüki nad võimalikult viisakalt ekraanile:

  1. Sünnipäev
  2. Vanus
  3. Sugu
  4. Kontrolli, kas IK kontrollsumma on õige.

Algoritm on oma olemuselt üsna lihtne, seetõttu ei ole hädavajadust seda välja joonistama hakata. Väike kavand lihtsa teksti kujul kuluks aga ära küll - nt sellest, millises järjekorras koodi lahtiharutama hakata, millised muutujanimed kasutusele võtta, milleks andmeid teisendada jms.

Isikukoodi selgitust saad siin uurida.

Vanuse arvutamiseks on vaja tänast kuupäeva. Seda saab küsida moodulis time oleva funktsiooniga localtime(), näiteks nii:

aeg = time.localtime()

Funktsioon tagastab andmejada, milles on järgmised liikmed (koopia Pythoni standard library kirjeldusest http://docs.python.org/py3k/library/time.html):

Index Attribute      Values
0  tm_year           (for example, 1993)
1  tm_mon            range [1,12]
2  tm_mday           range [1,31]
3  tm_hour           range [0,23]
4  tm_min            range [0,59]
5  tm_sec            range [0,61]
6  tm_wday           range [0,6], Monday is 0
7  tm_yday           range [1,366]
8  tm_isdst          0, 1 or -1; see below

Sellest loetelust on vaja esimest kolme elementi, mida saab kätte kujul aeg[0] - aasta, aeg[1] - kuu ja aeg[2] - päev. Ja täpse vanuse määramiseks saab kasutada if-lauset.

Vanust peaks saama arvutada ka nii, et kõigepealt panna sünnipäevast kokku sarnane andmejada (ennik) ja seejärel kasutades funktsiooni time.maketime(ajajada) tekitada üks ujukomaarv, mis sünniaega esitab. Tänane kuupäev võtta aga funktsiooni time.time() abil, mis samuti aja ujukomaarvuna annab (sarnane olukord bussiaja arvutamisel). Nüüd saab lahutada ja pärast jagada aastate saamiseks.

Ülesanne 3 Üliõpilaste pikkused[edit]

Loenda ja väljasta keskmisest lühemate üliõpilaste arv ja pikkused. Selle ülesande lahendamiseks tuleb andmed (pikkused) paigutada listi, sest neid on vähemalt kaks korda vaja kasutada - kõigepealt keskmise leidmiseks ja seejärel keskmisega võrdlemiseks.