Python perusfunktioita

Tehtävä 1. Tulosta identtisesti näytölle seuraava teksti: Tervetuloa, MAA 11 kurssille!  

""

Koodi:

print("Tervetuloa, MAA 11 kurssille!")

Tuloste:

Tervetuloa, MAA 11 kurssille!

Tehtävä 2. Tutki alla olevaa koodia. Mikä virhe koodissa on ja miten saat korjattua sen? 

print(float("3,3"))

Ongelmana on pilkku (,), koska Python ei tunnista sitä desimaalierottimena. Python käyttää kansainvälisen standardin mukaan pistettä (.) desimaalierottimena.

Korjattu koodi:

print(float("3.3"))

Tehtävä 3. Yhdistä funktiot ja niiden selitteet.

Python peruskomentoja

Tehtävä 4. Suorita alla oleva ohjelma. Miksi rivien 1 ja 2 komentojen tulosteet ovat erilaiset? 

""

print(”2-1”) 
print(2-1) 
print(”2 – 1 =”, 2-1) 

Pohdi sulkeiden sisällä olevan tiedon tyyppiä.

Kuvakaappaus Python-koodista ja tulosteesta.

Rivien 1 ja kaksi tulosteet ovat erilaiset, koska rivin 1 koodi on merkkijono. Rivin 2 koodi on laskutoimitus, joka toteutetaan Pythonin aritmeettisen operaattorin avulla. 

Tehtävä 5. Järjestä seuraavat koodin osat ja aja koodi. Selitä vastaus, mistä matemaattisesta laskusta on kyse. 

  1. print, ), 2, (, *, 3 
  1. (, print, ), //, 3,7 
  1. 2, 5, -, ), (, print 

""

a.

Koodi:

print(2*3)

Tuloste:

6

Perustelu: Kyseessä on kertolasku.

""

b.

Koodi:

print(7//3)

tai

print(3//7)

Tuloste:

2

tai

0

Perustelu: Kyseessä on jakolasku eli osamäärä. Vastaukseksi tulee kokonaisluku, joka on katkaistu desimaalipilkun kohdalta. (Vertaa pelkästään yhdellä jakoviivalla jakoon (7/3 tai 3/7).)

""

c.

Koodi:

print(2-5)

tai

print(5-2)

Tuloste:

-3

tai

3

Perustelu: Kyseessä on vähennyslasku eli lukujen erotus.

Tehtävä 6. Jatka alla olevaa koodia ja laske annetut laskut, kun a on 5 ja b on 2.

Koodin alku:

#muuttujat
a=5
b=2
  1. a:n ja b:n summa
  2. a:n ja b:n tulo
  3. a jaettuna b:llä, jakojäännös
  4. a potenssiin b

Voit kirjoittaa muuttujan nimen numeron sijaan esimerkiksi 5-2=a-b=3

""

a.

Koodi:

#muuttujat
a=5
b=2

print(a+b)

Tuloste:

7

""

b.

Koodi:

#muuttujat
a=5
b=2

print(a*b)
#tai
print(b*a)

Tuloste:

10

10

""

c.

Koodi:

#muuttujat
a=5
b=2

print(a%b)
#tai
print(b%a)

Tuloste:

1

2

""

d.

Koodi:

#muuttujat
a=5
b=2

print(a**b)
#tai
print(b**a)

Tuloste:

25

32

Muuttujat ja tyypit

Muuttujan nimeämisen säännöt

  1. Muuttuja voi sisältää kirjaimia, numeroita ja alaviivoja (_).
  2. Muuttuja nimessä ei suositella käytettäväksi ääkkösiä (ä, ö, å).
  3. Muuttuja nimi ei voi alkaa numerolla.
  4. Muuttuja nimenä ei voi käyttää Pythonin varattuja sanoja.

Voit tarkistaa varatut sanat seuraavalla koodilla:

import keyword
print(keyword.kwlist)

Tehtävä 7. Onko annettu muuttuja Pythonin sääntöjen mukainen? Perustele vastauksesi.

  1. 3luku = 3
  2. Taulukko3 = [3, 3, 2, 4]
  3. Kissaj@Koira = “Kissaj@Koira”
  4. huone_numero_2 = True
  5. Linja-auto = “myöhässä”
  6. _vari = “vihreä”
  7. class = “str”

  1. Väärin, koska numero ei voi aloittaa muuttujan nimeä.
  2. Oikein
  3. Väärin, koska muuttujan nimi ei voi sisältää @-merkkiä. Sillä vain muuttujan nimi voi sisältää vain kirjaimia, numeroita ja alaviivoja (_).
  4. Oikein
  5. Väärin, sillä vain muuttujan nimi voi sisältää vain kirjaimia, numeroita ja alaviivoja (_).
  6. Oikein
  7. Väärin, koska class on varattu avainsana.

Tehtävä 8. Selvitä alla olevien muuttujien tyypit type()-komennon avulla.

#muuttujat
a = 42
b = 3.14
c = "Hei, opiskelija!"
d = [1, 2, 3]
e = {'avain': 'arvo'}
f = True

""

Koodi:

#muuttujat
a = 42
b = 3.14
c = "Hei, opiskelija!"
d = [1, 2, 3]
e = {'avain': 'arvo'}
f = True

print(type(a))

Tuloste:

<class ’int’>

""

Koodi:

#muuttujat
a = 42
b = 3.14
c = "Hei, opiskelija!"
d = [1, 2, 3]
e = {'avain': 'arvo'}
f = True

print(type(b))

Tuloste:

<class ’float’>

""

Koodi:

#muuttujat
a = 42
b = 3.14
c = "Hei, opiskelija!"
d = [1, 2, 3]
e = {'avain': 'arvo'}
f = True

print(type(c))

Tuloste:

<class ’str’>

""

Koodi:

#muuttujat
a = 42
b = 3.14
c = "Hei, opiskelija!"
d = [1, 2, 3]
e = {'avain': 'arvo'}
f = True

print(type(d))

Tuloste:

<class ’list’>

""

Koodi:

#muuttujat
a = 42
b = 3.14
c = "Hei, opiskelija!"
d = [1, 2, 3]
e = {'avain': 'arvo'}
f = True

print(type(e))

Tuloste:

<class ’dict’>

""

Koodi:

#muuttujat
a = 42
b = 3.14
c = "Hei, opiskelija!"
d = [1, 2, 3]
e = {'avain': 'arvo'}
f = True

print(type(f))

Tuloste:

<class ’bool’>

Moduulit

Tehtävä 9. Kutsu math-moduuli.

Moduulit kutsutaan import avulla -> import + moduulin nimi.

Esimerkiksi import random

Ajattele moduleja kirjastona. Lainaat valmiita fuktioita omaan koodiisi.

import math

Tehtävä 10. Kutsu moduuli math ja aja kohtien 1, 3 ja 5 komennot ja tulosta vastaus näkyville. Vastaa 2, 4 ja 6 kohdan kysymyksiin.

1. math.sqrt(2)
2. Mitä matemaattista laskua a-kohta kuvaa?
a) 2\sqrt2
b) 22\sqrt[2]{2}
c) 222\cdot\sqrt2

3. math.cos(-1)
4. Mitä matemaattista laskua b-kohta kuvaa?
a) cos(x)=xcos(x)=x
b) cos(π)=xcos(\pi)=x
c) cos(x)=1cos(x)=-1

5. math.e**3
6. Mitä matemaattista laskua c-kohta kuvaa?
a) 3e3e
b) e3e^3
c) e3e\cdot3

""

1.

Koodi:

import math

math.sqrt(2)

Tuloste:

1.4142135623730951

2. Oikea vastaus on a-kohta.

""

3.

Koodi:

import math

math.cos(-1)

Tuloste:

0.5403023058681398

4. Oikea vastaus on b-kohta.

""

5.

Koodi:

import math

math.e**3

Tuloste:

20.085536923187664

6. Oikea vastaus on b-kohta.

Tehtävä 11. Tutusturandom-moduuliin. Tämän moduulin avulla pystyt tuottamaan satunnaisia numeroita. Pohdi ja perustele ovatko seuraavat esimerkit satunnaisia tuloksia vai pystyykö vastauksen ennustamaan.

  1. Nopan heitto.
  2. Korttipakka sekoitetaan ja pakan päällimmäinen kortti nostetaan.
  3. Linja-auto saapuu pysäkille aikataulussa.
  4. Matemaattinen laskutoimitus.
  5. Karkkipussista otetaan karkki silmät kiinni.
  6. Korttipakka on järjestyksessä ja nostetaan päällimmäinen kortti.

  1. Satunnainen, koska tulos vaihtelee.
  2. Satunnainen, koska korttien järjestys vaihtelee.
  3. Ennustettava, koska linja-auton saapumisaika tiedetään ja sama toistuu.
  4. Ennustettava, koska esimerkiksi 3+2 tulos on aina 5.
  5. Satunnainen, koska karkki otetaan näkemättä.
  6. Ennustettava, koska pakan järjestys tiedetään.

Tehtävä 12.1. Täytä tyhjät kohdat oikealla random funktiolla.

Tehtävä 12.2. Kutsu random-moduuli ja aja koodit useampaan kertaan. Mitä huomaat?

a. Nopan heitto.

print(random.randint(1,6))

b. Sekoitettu korttipakka ja nostetaan päällimmäinen kortti.

#määritetään korttipakassa olevat maat ja niiden arvot
maat = ["pata", "ässä", "hertta", "ruutu"]
arvot = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
pakka = []

#Yhdistetään maat ja arvot -> luodaan järjestyksessä oleva korttipakka
for arvo in arvot:
    for maa in maat:
        pakka.append(arvo+maa)

#Sekoitetaan korttipakka
random.shuffle(pakka)

#Nostetaan yksittäinen kortti sekoitetusta pakasta ja tulostetaan kortti
kortti = random.choice(pakka)
print(kortti)

c. Otetaan karkki silmät kiinni.

karkkipussi = ["punainen", "sininen", "vihreä", "keltainen"]
karkki = random.choice(karkkipussi)
print(karkki)

Ohjelman tuloste muuttuu jokaisella suorituskerralla, koska random‑moduuli tuottaa satunnaisia arvoja.

Listat ja indeksit

Tehtävä 13. Tutustu Pythonin indekseihin. Vastaa annettuihin kysymyksiin.

Kuva taulukosta, jossa sanan ‘sana’ kirjaimet O, P, I, S, K, E, L, I, J ja A ovat ensimmäisellä rivillä ja niiden indeksit 0–9 toisella rivillä. Taulukko havainnollistaa, miten merkkijonon kirjaimet numeroidaan vasemmalta alkaen.
  1. Mikä arvo(t) saadaan, kun indeksi on [4]?
  2. Mikä arvo(t) saadaan, kun indeksi on [2:6]?
  3. Mikä arvo(t) saadaan, kun indeksi on [7:]?
  4. Mikä arvo(t) saadaan, kun indeksi on [:2]?
  5. Mikä arvo(t) saadaan, kun indeksi on [-2]?

Voit käyttää apuna alla olevaa Python koodia.

sana = "opiskelija"
print(sana[indeksi])

  1. k
  2. iske
  3. ija
  4. op
  5. j

Tehtävä 14.1. Valitse oikea komento, jotta tuloste toteutuu.

lista = [”kahvi”, False, 100, ”maito”, 2.5 , ”mehu”]

Kuva taulukosta, jossa lista nimeltä lista. Sen sisältönä on kahvi, False, 100, maito, 2.5 ja mehu. Nämä tiedot ovat ensimmäisellä rivillä ja niiden indeksit 0–5 toisella rivillä. Taulukko havainnollistaa, miten listan alkiot numeroidaan vasemmalta alkaen.

a. Tulosteeksi tulee: maito
a) lista[4]
b) lista[3]
c) lista(5)

b. Tulosteeksi tulee: [’kahvi’, ’mehu’]
a) lista[0]
b) lista[0:5]
c) lista[0::5]

c. Tulosteeksi tulee:
a) len(lista[100])
b) type(lista)
c) type(lista[2])

d. Tulosteeksi tulee: 0.0
a) int(lista[1])
b) float(lista[1])
c) lista[1]

e. Tulosteeksi tulee: -97.5
a) lista[summa]
b) lista[2]-lista[4]
c) lista[4]-lista[2]

f. Tulosteeksi tulee: 6
a) len(lista)
b) lista[2]/lista[4]
c) type(lista)

  1. b) lista[3]
  2. c) lista[0::5]
  3. c) type(lista[2])
  4. b) float(lista[1])
  5. c) lista[4]-lista[2]
  6. a) len(lista)

Tehtävä 14.2. Valitse oikea tuloste, joka vastaa komentoa.

lista = [”kahvi”, False, 100, ”maito”, 2.5 , ”mehu”]

Kuva taulukosta, jossa lista nimeltä lista. Sen sisältönä on kahvi, False, 100, maito, 2.5 ja mehu. Nämä tiedot ovat ensimmäisellä rivillä ja niiden indeksit 0–5 toisella rivillä. Taulukko havainnollistaa, miten listan alkiot numeroidaan vasemmalta alkaen.

elaimet = [”norsu”, ”apina”, ”leijona”, ”kirahvi”, ”seepra”, ”leopardi”]

Kuva taulukosta, jossa lista nimeltä elaimet. Sen sisältönä on norsu, apina, leijona, kirahvi, seepra ja leopardi. Nämä tiedot ovat ensimmäisellä rivillä ja niiden indeksit 0–5 toisella rivillä. Taulukko havainnollistaa, miten listan alkiot numeroidaan vasemmalta alkaen.

a. lista.append(“OK”)
a) [’kahvi’, False, 100, ’maito’, 2.5, ’mehu’, ’OK’]
b) [’OK’, ’kahvi’, False, 100, ’maito’, 2.5, ’mehu’]
c) [’kahvi’, False, 100, ’OK’, ’maito’, 2.5, ’mehu’]

b. lista.pop(1)
a) [’False’, 100, ’maito’, 2.5, ’mehu’]
b) [’kahvi’, 100, ’maito’, 2.5, ’mehu’]
c) [False , 100, ’maito’, 2.5, ’mehu’]

c. lista.remove(”maito”)
a) [’kahvi’, False, 100, 2.5, ’mehu’]
b) [’kahvi’, False, 100, 2.5, ’mehu’, ’maito’]
c) [’maito’, ’kahvi’, False, 100, 2.5, ’mehu’]

d. lista.sort()
a) TypeError
b) SyntaxError
c) NameError

e. elaimet.sort()
a) [’apina’, ’kirahvi’, ’leijona’, ’leopardi’, ’norsu’, ’seepra’]
b) [”norsu”, ”apina”, ”leijona”, ”kirahvi”, ”seepra”, ”leopardi”]
c) [’leijona’, ’leopardi’, ’apina’, ’kirahvi’, ’norsu’, ’seepra’]

  1. a) [’kahvi’, False, 100, ’maito’, 2.5, ’mehu’, ’OK’]
  2. b) [’kahvi’, 100, ’maito’, 2.5, ’mehu’]
  3. a) [’kahvi’, False, 100, 2.5, ’mehu’]
  4. a) TypeError
  5. a) [’apina’, ’kirahvi’, ’leijona’, ’leopardi’, ’norsu’, ’seepra’]