PYTHON ALGKURSUSE HARJUTUSTE KAVA Maht: 7 teemaplokki (Iga teema kohta 5 harjutust) ================================================== NÄDAL 1: Muutujad, andmetüübid ja sisend/väljund ================================================== Üldine kirjeldus: Keskendutakse kasutajalt andmete küsimisele, tüübiteisendustele (str -> int/float) ning lihtsatele matemaatilistele tehetele ja tekstiväljundile. 1. Tahvliülesanne (Koos õpetajaga): Küsi kasutaja nime ja vanust. Arvuta vanus järgmisel aastal ning trüki viisakas tervitus. 2. Tund - Harjutus 1 (Iseseisev): Küsi ristküliku pikkus ja laius (ujukomaarvud). Arvuta ja trüki ristküliku ümbermõõt ning pindala. 3. Tund - Harjutus 2 (Iseseisev): Arvuta taksosõidu maksumus: küsi sõidu pikkust kilomeetrites. Arvuta hind formula järgi: starditasu (2.50) + km_hind (0.80) * km. 4. Kodutöö (Tavaline): Kütusekulu arvutaja. Küsi läbitud kilomeetrid ja kulutatud bensiini liitrid. Arvuta keskmine kulu 100 km kohta ning trüki vormindatult. 5. Ekstra lisakodutöö (Vabatahtlik, keeruline): Restorani arve jagaja. Küsi arve summa, jootraha protsent ja inimeste arv. Arvuta iga inimese tasutav summa sendi täpsusega (ümardamine). ================================================== NÄDAL 2: Tingimuslaused ja loogika ================================================== Üldine kirjeldus: Õpitakse koodivoo juhtimist vastavalt tingimustele. Harjutatakse if/elif/else lauseid ja loogilisi operaatoreid (and, or, not). 1. Tahvliülesanne (Koos õpetajaga): Küsi kasutajalt täisarv. Kontrolli ja trüki, kas arv on positiivne, negatiivne või null. 2. Tund - Harjutus 1 (Iseseisev): Sissepääsupileti arvutamine: küsi vanust. Alla 7 tasuta, 7-18 lapsepilet, 19-64 täispilet, 65+ pensiokassapilet. 3. Tund - Harjutus 2 (Iseseisev): Hinde kontrollija. Küsi testipunktid (0-100). Väljasta hinne (A: 90+, B: 80-89 jne). Veendu, et punktid jääksid vahemikku 0-100. 4. Kodutöö (Tavaline): Liigaasta tuvastamine. Küsi aastanumber ja teata, kas tegemist on liigaastaga (jaguneb 4-ga, aga ei jagune 100-ga, v.a kui jaguneb 400-ga). 5. Ekstra lisakodutöö (Vabatahtlik, keeruline): Kivi-paber-käärid mäng kahe kasutaja sisendiga. Programm peab tuvastama võitja või viigi ning käsitlema vigaseid sümboleid sisendis. ================================================== NÄDAL 3: Korduslaused (Tsüklid) ================================================== Üldine kirjeldus: Korduvate tegevuste automatiseerimine while- ja for-tsüklitega. Harjutatakse loendureid, summeerimist ja korduste piiramist. 1. Tahvliülesanne (Koos õpetajaga): Prindi for-tsükliga arvud 1-st N-ini ja arvuta nende üldsumma. 2. Tund - Harjutus 1 (Iseseisev): Korrutustabel. Küsi kasutajalt üks arv ning trüki selle arvu korrutustabel 1-st 10-ni. 3. Tund - Harjutus 2 (Iseseisev): Parooli kontroll while-tsükliga. Küsi parooli seni, kuni kasutaja sisestab õige sõna (nt "python"). Luba maksimaalselt 3 katset. 4. Kodutöö (Tavaline): Arvutamismäng (arva arv). Arvuti valib fikseeritud arvu (nt 42). Kasutaja pakub tsüklis arve ja saab vihjeid "suurem" või "väiksem". 5. Ekstra lisakodutöö (Vabatahtlik, keeruline): Algarvu kontrollija. Küsi kasutajalt arv ja tuvasta tsükli abil, kas tegemist on algarvuga (jaguneb ainult 1 ja iseendaga). ================================================== NÄDAL 4: Järjendid (Listid) ================================================== Üldine kirjeldus: Andmekogumite haldamine järjendite abil. Õpitakse elementide lisamist, eemaldamist, indekseerimist ja läbimist tsükliga. 1. Tahvliülesanne (Koos õpetajaga): Loo tühi list. Küsi kasutajalt 3 lemmiktoitu, lisa need listi ja trüki nimekiri numbritega. 2. Tund - Harjutus 1 (Iseseisev): Arvude listi analüüs: antud on nimekiri temperatuuridest. Arvuta keskmine temperatuur ja leia maksimum ilma max() funktsioonita. 3. Tund - Harjutus 2 (Iseseisev): Sõnade filtreerimine. Antud on sõnade list. Loo uus list, mis sisaldab ainult pikemaid kui 5-tähelisi sõnu. 4. Kodutöö (Tavaline): Ostukorvi haldur. Kasutaja saab tsüklis lisada tooteid, vaadata nimekirja või eemaldada toote nime järgi kuni valib "välju". 5. Ekstra lisakodutöö (Vabatahtlik, keeruline): Mullisorteerimine (Bubble Sort). Kirjuta algoritm, mis sorteerib arvude listi kasvavas järjekorras ilma Pythoni sort() meetodita. ================================================== NÄDAL 5: Funktsioonid ================================================== Üldine kirjeldus: Koodi struktureerimine taaskasutatavateks plokkideks. Harjutatakse parameetrite edastamist, return-väärtusi ja moodulmõtlemist. 1. Tahvliülesanne (Koos õpetajaga): Kirjuta funktsioon ristküliku_pindala(a, b), mis tagastab pindala ja katseta seda peaprogrammis. 2. Tund - Harjutus 1 (Iseseisev): Kirjuta funktsioon on_paaris(arv), mis tagastab True või False. Kasuta seda tsüklis arvude kontrollimiseks. 3. Tund - Harjutus 2 (Iseseisev): Kirjuta funktsioon puhasta_tekst(tekst), mis eemaldab teksti algusest/lõpust tühikud ja muudab kõik tähed väikesteks. 4. Kodutöö (Tavaline): Valuutakonverteri funktsioonid (eur_to_usd, usd_to_eur). Loo lihtne menüü, mis kutsub vastavat funktsiooni välja. 5. Ekstra lisakodutöö (Vabatahtlik, keeruline): Rekursiivne funktsioon Fibonacci jada n-nda elemendi leidmiseks (või faktoriaali arvutamiseks) ilm ilmselge for/while tsüklita. ================================================== NÄDAL 6: Sõnastikud (Dictionaries) ================================================== Üldine kirjeldus: Võti-väärtus paaride kasutamine andmete organiseerimiseks. Harjutatakse võtmete järgi otsimist, väärtuste muutmist ja tsükliga läbimist. 1. Tahvliülesanne (Koos õpetajaga): Loo kasutaja profiili sõnastik (nimi, vanus, linn). Trüki andmed vormindatult ja lisa uus võti. 2. Tund - Harjutus 1 (Iseseisev): Hinnakirja sõnastik. Küsi kasutajalt toote nime. Kui toode on sõnastikus, trüki hind, muidu teata puudumisest. 3. Tund - Harjutus 2 (Iseseisev): Tähtede loendur. Küsi kasutajalt sõna või lause ja loenda sõnastiku abil, mitu korda iga täht teksti sees esineb. 4. Kodutöö (Tavaline): Kontaktiraamat. Sõnastik hoiab nimesid ja telefoninumbreid. Loo menüü: lisa kontakt, otsi numbrit, trüki kõik kontaktid. 5. Ekstra lisakodutöö (Vabatahtlik, keeruline): Õpilaste hinneteraamat. Pesastatud sõnastik (õpilase nimi -> aine -> hinded). Arvuta iga õpilase keskmine hinne ja leia klassi parim. ================================================== NÄDAL 7: Failihaldus ja erandite püüdmine ================================================== Üldine kirjeldus: Andmete püsiv salvestamine ja failist lugemine. Harjutatakse vigade käsitlemist try/except plokiga, et vältida programmi kokkujooksmist. 1. Tahvliülesanne (Koos õpetajaga): Kirjuta tekstifaili tervitustekst ja seejärel loe faili sisu ning trüki ekraanile. 2. Tund - Harjutus 1 (Iseseisev): Arvude lugemine failist. Failis on igal real üks arv. Loe arvud, arvuta summa ja kasuta try/except plokki vigase rea eiramiseks. 3. Tund - Harjutus 2 (Iseseisev): Päeviku rakendus. Küsi kasutajalt teade ja lisa see olemasoleva faili lõppu (režiim 'a') koos kuupäeva/kellaaja märkega. 4. Kodutöö (Tavaline): Logifaili analüsaator. Loe failist sisse read ja loenda kokku, mitu rida sisaldab sõna "ERROR" ja mitu sõna "WARNING". 5. Ekstra lisakodutöö (Vabatahtlik, keeruline): CSV-andmete töötleja. Loe komadega eraldatud fail, parsi read sõnastike listiks, teosta andmete filtreerimine ja salvesta tulemus uude faili koos täieliku veatöötlusega.