Viienda nädala kontrollülesanded
Enne 5. praktikumi tuleb esitada kolme kohustusliku ülesande lahendused. Lahendused tuleb esitada Lahenduses, kus need kontrollitakse automaatselt.
Kontrollülesanne 5.1. Täishäälikute tuvastaja
Taavi laps asub sügisel teise klassi õppima ning Taavi mõistab, et võiks lapsega igaks juhuks teadmiste värskendust teha. Üheks teemaks, millega lapsed eesti keele tunnis kohe alguses kokku puutuvad, on häälikud. Tihti antakse õpilastele ülesandeks lugeda sõnas kokku kõik täishäälikud, kaashäälikud ning sulghäälikud. Ülesanne on tegelikult häälikuid tundes lihtne, kuid eksimine on inimlik ja sage, eriti lapse puhul. Taavi mõtleb, et alustuseks võiks lasta lapsel loendada täishäälikuid, mistõttu oleks mõistlik lapsele luua programm, mille abil ta saab kontrollida, kas tema kokku loetud täishäälikute arvud on õiged.
Esmalt koostada funktsioon täishäälikud
, mis
- võtab argumendiks väikeste tähtedega sõna;
- tagastab sõnas leiduvate täishäälikute arvu.
Näide funktsiooni tööst:
>>> täishäälikud("kontsert")
2
Seda, kas täht on täishäälik saab kontrollida luues täishäälikutest järjendi ja uurides, kas täht kuulub järjendisse (nt if täht in täishäälikute_järjend
)
Seejärel koostada põhiprogramm, mis
- küsib kasutajalt sõna, mille täishäälikute arvu soovitakse teada;
- väljastab sisestatud sõna ja funktsiooni
täishäälikud
kasutades täishäälikute arvu lausena.
Näited programmi tööst:
>>> %Run lahendus.py
Sisesta sõna: jäääär
Sõnas jäääär on täishäälikuid 4
>>> %Run lahendus.py
Sisesta sõna: kuulilennuteetunneliluuk
Sõnas kuulilennuteetunneliluuk on täishäälikuid 12
Kui olete juba hulk aega proovinud ülesannet iseseisvalt lahendada ja see ikka ei õnnestu, siis võib-olla saate abi murelahendajalt. Püütud on tüüpilisemaid probleemseid kohti selgitada ja anda vihjeid.
Kontrollülesanne 5.2. Õunamahla tegemine
Matil on mahlapress ja ta teeb mõnikord päris palju õunamahla. Ta pakendab mahla 3-liitristesse pakenditesse. Lisaks teab ta, et 50 kilost õuntest saab 20 liitrit mahla. Ta soovib õunte koguse põhjal välja arvutada, mitu pakki mahla neist ligikaudu saab. Mahlapakkide arvu saab arvutada järgmise valemi järgi:
(mahlapakkidearv) = (õuntekogus) * 0.4 / 3
Esiteks koostada funktsioon mahlapakkide_arv, mis
- võtab argumendiks õunte koguse kilogrammides,
- arvutab selle põhjal mahlapakkide arvu,
- tagastab mahlapakkide arvu ümardatuna täisarvuni.
Ümardama peab funktsioon ise ja selleks tuleb kasutada funktsiooni round
.
Näide funktsiooni tööst:
>>> mahlapakkide_arv(40)
5
Teiseks rakendada loodud funktsiooni programmis, kus
- õunte kogus kilogrammides küsitakse kasutaja käest,
- mahlapakkide arv väljastatakse ekraanile.
Oluline on, et mahlapakkide arvu arvutamise funktsioon ise ei küsiks kasutajalt midagi ja see funktsioon ise ka ei väljastaks tulemust ekraanile. Need tegevused peab tegema programmis väljaspool funktsiooni, funktsiooni töö on vaid arvutada.
Näited programmi tööst:
>>> %Run lahendus.py
Sisesta õunte kogus kilogrammides: 50
7
>>> %Run lahendus.py
Sisesta õunte kogus kilogrammides: 35.4
5
Kui olete juba hulk aega proovinud ülesannet iseseisvalt lahendada ja see ikka ei õnnestu, siis võib-olla saate abi murelahendajalt
. Püütud on tüüpilisemaid probleemseid kohti selgitada ja anda vihjeid.
Kontrollülesanne 5.3. Nimede järjestaja
Andmete sisestajal on hulk nimesid, mida ta soovib kord tähestiku järjekorras, kord tagurpidises tähestiku järjekorras ning sõltumata valikust soovib väljastada need järjekorranumbriga nummerdatult.
Esmalt koostada funktsioon järjestaja
, mis
- võtab argumendiks koma ja tühikuga eraldatud (
", "
) nimed ühe sõnena (nt"John H. Watson, Sherlock Holmes, Jim Moriarty"
) ja lisaargumendina tõeväärtuse, misTrue
korral sorteerib järjendi tagurpidises tähestiku järjekorras (vaikimisi on tõeväärtusFalse
); - tagastab järjendi, kus vastavalt lisaargumendi väärtusele on sisestatud nimed järjekorras. Kui lisaargumendi tõeväärtus on
False
, siis on nimed järjendis tähestilikuses järjekorras. Kui lisaargumendi väärtus onTrue
, siis on nimed tagurpidises tähestiku järjekorras.
Näited programmi tööst:
>>> järjestaja("John H. Watson, Sherlock Holmes, Jim Moriarty")
[Jim Moriarty, John H. Watson, Sherlock Holmes]
>>> järjestaja("John H. Watson, Sherlock Holmes, Jim Moriarty", True)
[Sherlock Holmes, John H. Watson, Jim Moriarty]
Funktsioon sorted
sorteerib sõnedest koosneva järjendi vaikimisi tähestiku järjekorras, kuid tagurpidi järjekorra saamiseks võib abi olla meetodist reverse
.
Seejärel koostada põhiprogramm, mis
- küsib kasutajalt sorteeritavaid nimesid koma ja tühikuga eraldatult;
- küsib kasutajalt, kas ta soovib nimesid väljastada tagurpidises tähestiku järjekorras, mispuhul peab kasutaja sisestama
"jah"
. Vastasel juhul sisestab"ei"
;- vastuse
"jah"
puhul sorteerib kasutades funktsioonijärjestaja
sisestatud nimed tagurpidises tähestiku järjekorras ja väljastab nimed selles järjekorras koos järjekorranumbriga; - vastuse
"ei"
sisestamise puhul sorteerib kasutades funktsioonijärjestaja
sisestatud nimed tähestiku järjekorras ja väljastab nimed selles järjekorras koos järjekorranumbriga.
- vastuse
Näited programmi tööst:
>>> %Run lahendus.py
Sisesta nimed, mida soovid järjestada: Sherlock Holmes, Jim Moriarty, John H. Watson
Kas soovid nimesid ka tagurpidises tähestiku järjekorras järjestada? jah
1. Sherlock Holmes
2. John H. Watson
3. Jim Moriarty
>>> %Run lahendus.py
Sisesta nimed, mida soovid järjestada: James Hunt, Niki Lauda, Michael Schumacher
Kas soovid nimesid ka tagurpidises tähestiku järjekorras järjestada? ei
1. James Hunt
2. Michael Schumacher
3. Niki Lauda
Kui olete juba hulk aega proovinud ülesannet iseseisvalt lahendada ja see ikka ei õnnestu, siis võib-olla saate abi murelahendajalt
. Püütud on tüüpilisemaid probleemseid kohti selgitada ja anda vihjeid.