6. nädala õpijuhis
Eesmärk
[edit]Nädala eesmärgiks on:
- Tutvuda struktuursete andmetüüpidega: listi stringi ja ennikuga - nende tüüpiliste töötlemisvõtetega (lõiked, tehted, funktsioonid).
- Saada esmane kogemus stringide kasutamisest ning töötlemisest koos stringi meetoditega.
- Praktiseerida listi kasutamist ühetüübiliste andmete hoidmiseks ja korduvaks kasutamiseks.
- Kasutada ennikut konsantse andmejadana.
Lugemiseks ja proovimiseks
[edit]- Loe materjali struktuursetest andmetüüpidest - üldisemalt massiivist.
- Loe läbi materjal Pythoni jadadest, kus on puudutatud liste, stringe ja ennikuid ning uuri jadade näiteid.
- 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:
- Sünnipäev
- Vanus
- Sugu
- 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.