Neljanda praktikumi ülesanded
Järgmisest kolmest ülesandest tuleb lahendada vähemalt üks. Lahendused tuleb esitada Lahenduses, kus need kontrollitakse automaatselt.
Ada tahab valida plaadiautomaadist laulu ja uurib, milliseid laule masin mängib. Muusikapalad on kirjas failis, kus iga laul on eraldi real.
Programmi testimiseks kasutatakse järgmisi faile, mida võite salvestada või koostada ise mõne tekstiredaktoriga (nt Notepad):
Koostada programm, mis
- küsib kasutajalt failinime (kasutaja sisestab failinime koos laiendiga, nt jukebox.txt);
- loeb sisestatud nimega failist andmed;
- näitab kõiki laule koos järjekorranumbritega (alates 1);
- küsib kasutajalt, mitmendat laulu ta soovib (kasutaja sisestab alati täisarvu);
- väljastab ekraanile vastavalt valitud arvule muusikapala
Näide programmi tööst: Faili jukebox.txt sisu:
Journey - Don't Stop Believin' Judas Priest - Living After Midnight Aerosmith - Dream On Deep Purple - Smoke On The Water Free - All Right Now Black Sabbath - Paranoid Van Morrison - Brown Eyed Girl AC/DC - Back In Black Led Zeppelin - Stairway To Heaven ZZ Top - Sharp Dressed Man
>>> %Run lahendus.py
Sisesta failinimi: jukebox.txt
Muusikapalade valik:
1. Journey - Don't Stop Believin'
2. Judas Priest - Living After Midnight
3. Aerosmith - Dream On
4. Deep Purple - Smoke On The Water
5. Free - All Right Now
6. Black Sabbath - Paranoid
7. Van Morrison - Brown Eyed Girl
8. AC/DC - Back In Black
9. Led Zeppelin - Stairway To Heaven
10. ZZ Top - Sharp Dressed Man
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 4.4b Kampaaniahinnad
Poes algab kampaania. Alghinnad on esitanud ühe sõnena, kus on alati viis alghinda täisarvudena ja need on eraldatud komadega. Lisaks on järjend kampaania hinnakordjate jaoks, kus on ujukomaarvud [0.8, 0.3, 0.2, 0.5, 0.95]
. Igale alghinnale vastab hinnakordajate järjendist samal positisoonil olev kordaja. Näiteks kui alghinnad on "100,45,25,37,19"
, siis ostule summaga 100 vastab kordaja 0.8, ostule summaga 45 vastab kordaja 0.3 jne.
Koostada programm, mis
- küsib kasutajalt 5 alghinda komadega eraldatult ühe sõnena (näiteks
"100,45,25,37,19"
); for
-tsüklit kasutades arvutab iga alghinna puhul kampaaniahinna, näiteks100 * 0.8 = 80
. Hinnakordajad on järjendis[0.8, 0.3, 0.2, 0.5, 0.95]
;- väljastab toote järjekorranumbri, alghinna ja kampaaniahinna kujul
i. toote alghind: x, kampaaniahind: y
, kusi
tähistab järjekorranumbrit,x
alghinda jay
kampaaniahinda;
Näide programmi tööst:
>>> %Run lahendus.py
Sisesta alghinnad: 100,45,25,37,19
1. toote alghind: 100, kampaaniahind: 80.0
2. toote alghind: 45, kampaaniahind: 13.5
3. toote alghind: 25, kampaaniahind: 5.0
4. toote alghind: 37, kampaaniahind: 18.5
5. toote alghind: 19, kampaaniahind: 18.05
Sisestatud sõne on lihtne teha sobivaks järjendiks käsu sõne.split(",")
abil.
Kontrollülesanne 4.4c Tahvli juurde
Mõned õpetajad on tavatsenud õpilasi tahvli juurde vastama kutsuda kuupäeva järgi vastavalt õpilaste nimekirjale. Näiteks 4. kuupäeval tuleb esimesena vastama nimekirjas 4. olev õpilane. Failis nimekiri.txt on õpilaste nimed, igaüks eraldi real. Üks selline, mis on genereeritud leheküljel http://random-name-generator.info/, on siin. Võite ise koostada ka teistsuguse nimekirja.
Koostada programm, mis
- küsib failinime (eeldame, et kasutaja sisestatud nimega fail leidub ja seal on vähemalt 31 nime);
- loeb sisestatud nimega failist andmed;
- väljastab vastavalt tänasele kuupäevale õpilase nime, kes peab vastama tulema.
Programm peab tänase kuupäeva leidma automaatselt, aluseks saab võtta järgmise näite:
from datetime import * print(datetime.now().day)
Näited programmi tööst:
>>> %Run lahendus.py
Sisesta failinimi: nimekiri.txt
Vastama tuleb Joosep Toots
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.