Tehtävät

Toisen viikon tehtävät

Tehtävien palautus torstaina 7.11. klo 21:00 mennessä.

NumPyn kotisivut

NumPy on Pythonin perustavanlaatuinen kirjasto tieteellistä laskentaa varten. Tärkeimpiä ominaisuuksia NumPyssä ovat esimerkiksi lineaarialgebraan, Fourier-muunnoksiin ja satunnaislukuihin liittyvät työkalut.

Tarvitsemme NumPyä käytännössä heti kun haluamme ratkaista muuta kuin peruslaskutoimituksia. Esimerkiksi trigonometriset funktiot, exponenttifunktio, kompleksiluvut jne. ovat NumPy-kirjastossa.

Käytä Numpy-modulia ja tulosta π:n arvo, sin(π), cos(π) ja tan(π)
sekä luku 1, arcsin(1), arccos(1) ja arctan(1)

3.141592653589793
1.22464679915e-16
-1.0
-1.22464679915e-16
1
1.57079632679
0.0
0.785398163397

Käytä Numpy-modulia ja tulosta e:n arvo, ln(e), log10(e), log2(e)
sekä luku 2, e2 ja e4*2

2.718281828459045
1.0
0.434294481903
1.44269504089
2
7.38905609893
2980.95798704

Käytä Numpy-modulia ja määritä kompleksiluvut a = (0 + i)2, b = 1 + i, c = 2 + 3i ja tulosta ne.
Tulosta sen jälkeen d = b + c, d:n reaaliosa, imaginääriosa, argumentti ja kompleksikonjugaatti.

(-1+0j)
(1+1j)
(2+3j)
(3+4j)
3.0
4.0
0.927295218002
(3-4j)

Käytä Numpy-modulia ja määritä luvut x = 9 ja y = -9.
Laske sen jälkeen luvusta x neliöjuuri, luvusta y itseisarvo, luvusta x kuutiojuuri ja luvusta y kuutiojuuri ja lopuksi tulosta ne. Vihje: numpy.sqrt ja numpy.cbrt jne...

3.0
9
2.08008382305
-2.08008382305

Python sisältää itsessään syötteen käsittelyyn tarvittavan input-funktion. Inputin käyttö tapahtuu seuraavasti:

  nimi = input("Kerro nimesi ")

Ylläoleva koodi tuottaa seuraavan tulosteen:

Kerro nimesi

Syöte tallennetaan muuttujaan nimi. Pythonissa input tulkitsee syötteen olevan tyyppiä string, eli sitä käyttäen ei voida esimerkiksi suoraan tallentaa numeroarvoja muuttujiin.

Tee ohjelma, joka kysyy käyttäjältä hänen nimeään ja ikäänsä.
Nimen kysymisen jälkeen ohjelma tulostaa tekstin:

What is your name? Mikko
Nice to meet you Mikko!

Vastaustekstin jälkeen ohjelma kysyy ikää ja tulostaa kokonaisen tervehdyksen.

Your age? 55
So, you are already 55 years old, Mikko!

Kokonaisuutena ohjelman tulostus näyttää siis seuraavalta

What is your name? Mikko
Nice to meet you Mikko!
Your age? 55
So, you are already 55 years old, Mikko!

Inputin muuntaminen numeroarvoksi on todella yksinkertaista. Tarvitset siihen vain eval-komentoa.

  arvo = eval(input("Anna luku "))

Tee ohjelma, missä kysyt käyttäjältä kaksi lukua.
Laske sen jälkeen näiden kahden luvun summa, tulo ja osamäärä.
Tulosta tulokset.

Give first integer 300
Give second integer 9001
9301
2700300
0.03332963004110654

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.

Kokeillaan esimerkiksi seuraavaa koodia:

n = 5
luku = 1

while luku <= n:
    print("huutista")
    luku += 1

Ylläoleva ohjelma tulostaa seuraavan:

huutista
huutista
huutista
huutista
huutista

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

Tee ohjelma, joka kysyy käyttäjältä kokonaisluvun. Tämän jälkeen ohjelma laskee kaikkien kokonaislukujen summan ykkösestä tähän käyttäjän antamaan lukuun, ja tulostaa tämän summan.

Anna kokonaisluku: 50
Summa välillä 1 - 50 on 1275

Sisällysluettelo