9. praktikumi harjutused
1. Järjekord
Järjekorras seisab üksteise taga teatud arv inimesi. Kõik nad vaatavad vasakule. Iga inimene, kes on oma eelseisjast pikem, näeb üle tema veel inimesi järjekorra alguse poole kuni inimeseni, kes on veelgi pikem.
Kirjuta programm, mis loeb sisse järjekorras seisvate inimeste pikkused ja leiab inimese, kes näeb järjekorras kõige kaugemale.
Sisesta pikkused: 195 167 165 190 172 182 187 189 168 174 Inimene nr 8 pikkusega 189 näeb kõige kaugemale.
2. Loomulik iive
Failis sünnid.txt on kirjas Eesti teatava ajavahemiku sündide arvud, failis surmad.txt aga surmajuhtumite arvud kuude kaupa (andmed pärinevad Statistikaameti andmebaasist). Kummaski failis on iga kuu kohta kaks rida: kuu nimi ja sündide või surmade arv. Kuude täpne arv pole teada.
sünnid.txt | surmad.txt |
jaanuar | jaanuar |
1048 | 1575 |
veebruar | veebruar |
989 | 1167 |
märts | märts |
1108 | 1249 |
aprill | aprill |
1207 | 1281 |
mai | mai |
1186 | 1303 |
juuni | juuni |
1155 | 1115 |
juuli | juuli |
1391 | 1327 |
august | august |
1305 | 1202 |
september | september |
1226 | 1177 |
oktoober | oktoober |
1155 | 1265 |
november | november |
1017 | 1218 |
detsember | detsember |
1111 | 1359 |
Kuu loomulik iive on kuu sündide arvu ja surmade arvu vahe. Kirjuta programm, mis leiab ja väljastab nende kuude nimed, mil loomulik iive oli positiivne, ning iibe suuruse.
Positiivse iibega kuud olid: juuni 40 juuli 64 august 103 september 49
Täienda oma programmi nii, et ta leiaks ja väljastaks ka kogu vaadeldava ajavahemiku loomuliku iibe.
Näiteks eelnevate failide põhjal peaks programm väljastama
Kogu ajavahemiku loomulik iive oli -1340.
3. Parim töötaja
Raamatute müümisega tegelev firma soovib oma aastast kokkuvõtteid teha. Failis müügid.txt on igal real kirjas töötaja nimi ning semikoolonitega eraldatult igal kuul müüdud raamatute arv. Andmed on aasta kõigi 12 kuu kohta.
Näide tekstifaili müügid.txt võimalikust sisust:
Mihkel;34;23;16;35;24;37;38;34;29;34;41;42 Katrin;100;40;39;48;34;41;40;41;42;46;47;40 Martin;23;25;34;34;36;34;31;31;30;31;37;38
Kirjuta funktsioon loe_andmed, mille argumendiks on failinimi; funktsioon loeb faili sisu kahemõõtmelisse järjendisse, kus sisemised järjendid sisaldavad ühe töötaja andmeid (arvud esitada täisarvude, mitte sõnedena).
Eelnevast failist loetud ridade põhjal moodustuks näiteks kahemõõtmeline järjend järgneval kujul (siin näidises paremaks illustreerimiseks mitmele reale paigutatud):
[['Mihkel', 34, 23, 16, 35, 24, 37, 38, 34, 29, 34, 41, 42], ['Katrin', 100, 40, 39, 48, 34, 41, 40, 41, 42, 46, 47, 40], ['Martin', 23, 25, 34, 34, 36, 34, 31, 31, 30, 31, 37, 38]]
Kirjuta teine funktsioon parim_töötaja, mis võtab argumentideks kahemõõtmelise järjendi ning kuu numbri ja tagastab sel kuul enim raamatuid müünud töötaja nime. Kui selliseid töötajaid on mitu, siis tagastatakse ükskõik milline neist.
Funktsiooni kasutamise näide eelnevast failist loetud näitejärjendiga:
>>> parim_töötaja(järjend, 1) 'Katrin' >>> parim_töötaja(järjend, 5) 'Martin'
4. Eurovisioon
Eurovisiooni lauluvõistlusel osalevate riikide nimed ja riikidele antud punktid on kirjutatud tekstifaili. Igas reas on kõigepealt riigi nimi ja seejärel sellele riigile antud punktid. Rea elemendid on eraldatud komadega, mida võivad ümbritseda tühikud. Kui mõnele riigile punkte ei antud, siis sellel kohal arv puudub.
Näiteks võib faili punktid.txt sisu olla järgmine:
Austria, 12, 6, 3, 3, 4, 7, 5, 3, 12, 8, 4, 3 Bulgaaria, 8, 3, 6, 10, 7, 3, 6, 2, 7, 6, 8, 5 Eesti, 10, 7, , 8, 12, 6, 10, 6, 3, 2, 2, 1 Horvaatia, 5, 2, 8, 2, 5, 8, , 8, 10, 7, 1, 7 Itaalia, 2, 12, 4, 6, 3, 5, , 5, 8, , 5, Kreeka, 3, , 5, , , 12, 2, 12, , 3, 7, 2 Malta, 7, , , 7, 6, 2, 12, , 6, , , 12 Norra, 6, 8, 12, , 10, 10, 8, , 1, 10, 3, 8 Prantsusmaa, 1, 5, 2, 12, 2, , 4, 7, , 12, 12, 6 Rootsi, , 10, 1, 1, 8, 1, 3, 4, 5, 1, , 4 Saksamaa, , 1, 10, 5, 1, 4, 7, 10, 2, 4, 6, Taani, 4, 4, 7, 4, , , 1, 1, 4, 5, 10, 10
Kirjuta funktsioon riik, mille argumendiks on üks faili rida ülalkirjeldatud kujul ning mis tagastab sellele reale vastava riigi nime.
>>> riik("Austria, 12, 6, 3, 3, 4, 7, 5, 3, 12, 8, 4, 3") 'Austria'
Kirjuta funktsioon summa, mille argumendiks on samuti rida ning mis tagastab selles reas olevate punktide summa.
>>> summa("Prantsusmaa, 1, 5, 2, 12, 2, , 4, 7, , 12, 12, 6") 63
Kirjuta programm, mis küsib kasutajalt failinime, loeb failis olevad andmed sisse ning väljastab, mis riik võitis lauluvõistluse ja milline oli tema punktide kogusumma.
Sisesta failinimi: punktid.txt Võitja on Norra kogusummaga 76 punkti