Tehtävät

Kolmannen viikon tehtävät

Pythonissa jakojäännöksen selvittäminen onnistuu helpoiten modulo-operaattorilla. Modulo-operaattoria merkitään Pythonissa %-merkillä. Modulo-operaattori palauttaa suoraan jakojäännöksen.

Esimerkiksi 6%2 palauttaa 0.

Esimerkiksi 7%2 palauttaa 1.

Tee ohjelma, missä kysyt käyttäjältä luvun.
Tämän jälkeen ohjelma tulostaa oliko luku parillinen vai pariton.

Give a number to check 333
Number 333 is odd.
Give a number to check 222
Number 222 is even.

Pythonissa on for-loopin lisäksi käytössä myös mm. while-loop. While loop toimii periaatteessa samalla tavalla kuin for, mutta se jatkaa toistoa niin kauan kuin sille määritelty ehto on totta. Puhutaan ns. "Condition-Controlled" ja "Collection-Controlled" loopeista.

Kokeillaa esimerkiksi seuraavaa koodia:

n = 100
s = 0
luku = 1

while luku <= n:
    s = s + luku
    luku += 1

print("Summa välillä 1 - %d on %d" % (n,s))

Ylläoleva ohjelma tulostaa seuraavan:

Summa välillä 1 - 100 on 5050

Ohjelmointitehtävissä törmää myös usein ongelmiin, joissa muuttujan on täytettävä tietty ehto jotta jotain tapahtuu. Näitä kutsutaan if-lauseiksi. Python3:ssa if-lauseiden runko on seuraava:

    if condition :
      indentedStatementBlock

Lisäksi usein if-lauseita "jatketaan" else rakenteella, joka toimii samalla tavalla.


    if condition :
      indentedStatementBlockForTrueCondition
    else:
      indentedStatementBlockForFalseCondition

Luennolla käydään läpi vertailuoperaattorit:

  • yhtäsuuri ==
  • pienempi <
  • suurempi >
  • suurempi tai yhtäsuuri >=
  • pienempi tai yhtäsuuri <=
  • erisuuri !=

Tehtäväpohja näyttää seuraavalta

  def main():
####################################################
    arvattava = 42
    arvaukset = 0
    arvaus = 0
####################################################
#############TEE TEHTÄVÄ TÄMÄN ALAPUOLELLE##########

Tehtävänäsi on tehdä ohjelma joka lukee käyttäjältä arvauksen ja kertoo onko käyttäjän arvaama luku suurempi vai pienempi kuin arvattava luku. Lisäksi ohjelma laskee käyttäjän arvauksien määrän.

Arvaa luku 40
Lukuni on suurempi
Arvaa luku 44
Lukuni on pienempi
Arvaa luku 42
Arvasit oikein 3 arvauksella

Tehtäväpohjassa on valmiiksi koodi joka arpoo ensin radiaaneja ja muuntaa sen tämän jälkeen kulmaksi. Kulmaluku voi siis olla yli yhden kierroksen. Tehtävänäsi on kirjoittaa valmiiksi annetun osuuden jälkeen koodi joka kertoo mihin yksikköympyrän neljännekseen arvottu kulma sijoittuu.

  Arvottu luku  0.33797175599533125
  on alueen (0,1) keskella
  Arvottu kulma = 337.97175599533125  astetta
  on 4. neljanneksessa
  Arvottu luku  0.09602578231894476
  on alueen (0,1) alussa
  Arvottu kulma = 96.02578231894476  astetta
  on 2. neljanneksessa

Vaikka Pythonissa on lukuisia kirjastoja, jotka tarjoavat valmiita ratkaisuja ongelmiin. Monissa tieteellisen laskennan ongelmissa joudutaan tekemään omia funktioita. Myöhemmin tällä kurssilla teemme esimerkiksi Rayleigh-testin datalle.

Pythonin funktiorakenne on yksinkertainen:

def funktion_nimi(parametrit):
    funktionRakenneTänne

Esimerkiksi funktio joka muuttaa Celsius-asteet Fahrenheiteiksi on seuraavanlainen:

def fahrenheit(TCelsius):
    return (TCelsius * 9/5) + 32

Mainissa fahrenheit-funktiota kutsuttaisiin esimerkiksi seuraavasti:

def main():
    print(fahrenheit(12))
def fahrenheit(TCelsius):
    return (TCelsius * 9/5) + 32

Huomaa että tehtäväpohjissa nähty main on siis oikeasti myös funktio joka sisältää pääohjelman!

Funktion rakenne voi sisältää lähes mitä vain. Esimerkiksi for, while ja if-rakenteita.

Main ohjelmarungossa on valmiiksi print(factorial(12)). Tehtäväsi on kirjoittaa factorial(n) funktio mikä laskee annetun luvun n kertoman ja palauttaa sen. Tulosta lopuksi mainissa oleva factorial(12).

  479001600

Main ohjelmarungossa on valmiiksi print(exponential(1,100)). Tehtävänäsi on kirjoittaa funktio joka laskee ex funktion Taylorin sarjan arvon pisteessä x, n:n termin tarkkuudella. Mainissa oleva funktio kutsu siis tarkoittaa e1 arvoa 100 termin tarkkuudella. Vinkki: käytä edellisessä tehtävässä luomaasi kertoma funktiota. Voit kutsua toista funktiota toisen sisällä aivan kuin kutsut sitä mainissakin.

Taylorin sarja lasketaan e^x seuraavasti: e^x lauseke

  2.7182818284590455

Sisällysluettelo