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:
2.7182818284590455