Kierros 2, tehtävä 2

Opintotuen takaisinmaksu (120 p)

Tässä tehtävässä harjoitellaan edellisellä kierroksella opittujen asioiden lisäksi erityisesti seuraavia asioita:

Tee Eclipsessä uusi projekti, jonka nimi on tehtava2_2. Luo sitten tähän projektiin moduuli opintotuki ja kirjoita siihen ohjelma, joka laskee, pitääkö käyttäjän maksaa opintotukea takaisin, kun tukikuukausien määrä ja vuositulot ovat tiedossa.

Opiskelija saa vuoden aikana ansaita jokaista opintotukikuukautta kohti korkeintaan 660 euroa ja jokaista muuta kuukautta kohti korkeintaan 1970 euroa. Jos opiskelijan vuositulot ylittävät näin lasketun tulorajan yli 220 eurolla, joutuu opiskelija maksamaan opintotukea takaisin tulorajan ylittävän summan. Esimerkki: Jos opiskelija on saanut opintotukea 8 kuukaudelta, on hänen tulorajansa 13160 euroa. Jos opiskelijan vuositulot ovat 13380 euroa tai vähemmän, opiskelijan ei tarvitse maksaa opintotukea takaisin. Mutta jos opiskelijan vuositulot ovat esimerkiksi 13381 euroa, pitää hänen maksaa opintotukea takaisin 221 euroa.

Kirjoita Python-ohjelma, joka pyytää käyttäjältä ensin opintotukikuukausien määrän ja sitten vuositulot. Molemmat ovat kokonaislukuja. Tämän jälkeen ohjelma laskee, pitääkö opiskelijan maksaa opintotukea takaisin ja jos pitää, niin kuinka paljon. Ohjelma tulostaa joko

Sinun ei tarvitse maksaa opintotukea takaisin.
tai
Sinun pitaa maksaa opintotukea takaisin XXX euroa,
korkeintaan kuitenkin niin paljon kuin olet saanut sita.
sen mukaan, pitääkö opiskelijan maksaa opintotukea takaisin. Jälkimmäisessä tulostuksessa XXX on takaisin maksettavan opintotuen määrä. Ohjelma ei kuitenkaan tiedä, kuinka paljon opiskelija on alunperin saanut opintotukea. Sen vuoksi se ilmoittaa aina suoraan tulorajan ylittävän summan (vaikka se saattaa olla suurempi kuin opiskelijan saama tuki) ja lisää sen jälkeen alemman lauseen.

Tehtävän yksinkertaistamiseksi ohjelma ei tarkista käyttäjän antamien tietojen järkevyyttä (esimerkiksi sitä, että tukikuukaudet ovat välillä 1-12 tai että vuositulo ei ole negatiivinen), vaan se käyttää käyttäjän antamia tietoja sellaisenaan tulorajan laskemiseen. Goblin testaa ohjelmaa vain järkevillä syötteillä. Voit myös olettaa, että käyttäjä antaa syötteet oikeassa muodossa.

Ole tarkka siitä, että ohjelmasi tulostus on täsmälleen (välimerkkejä myöten) alla olevan mallin mukainen. Muista erityisesti lisätä rivinvaihtomerkki raw_input-käskyissä käyttäjälle annettavan pyynnön loppuun. (Näin ohjelman tarkastus Goblinilla sujuu ilman ylimääräisiä ongelmia.) Testaa ohjelmasi monta kertaa ajamalla sitä itse Eclipsellä ennen kuin palautat ohjelman Gobliniin.

Palauta Gobliniin tiedosto opintotuki.py.

Huomautus: Python-kielisissä ohjelmissa pystytään kyllä hyvin käsittelemään skandinaavisia aakkosia (å, ä ja ö). "Ääkkösiä" käyttävien ohjelmien Goblin-palautuksissa on kuitenkin helposti ongelmia, jos opiskelija ei ole osannut tehdä kotikoneeseensa oikeita merkistökoodiasetuksia. Tällaisten turhien harmien välttämiseksi tällä kurssilla kirjoitetaan Goblininille palautettavat ohjelmat ilman "ääkkösiä".

Esimerkkiajoja (kolme eri ohjelman suorituskertaa):

[ohjelman suoritus alkaa]
Anna opintotukikuukausien maara:
9
Anna vuositulosi (eur):
6000
Sinun ei tarvitse maksaa opintotukea takaisin.
[ohjelman suoritus päättyy]

[ohjelman suoritus alkaa]
Anna opintotukikuukausien maara:
8
Anna vuositulosi (eur):
13380
Sinun ei tarvitse maksaa opintotukea takaisin.
[ohjelman suoritus päättyy]

[ohjelman suoritus alkaa]
Anna opintotukikuukausien maara:
8
Anna vuositulosi (eur):
13381
Sinun pitaa maksaa opintotukea takaisin 221 euroa,
korkeintaan kuitenkin niin paljon kuin olet saanut sita.
[ohjelman suoritus päättyy]

Värikoodit:
Sininen: Syöte käyttäjältä
Vihreä: Ohjelman tuloste
Punainen: Erityishuomatus: ei tulosteta