Ohjelmoinnin perusteet – perustehtävät

Python perusfunktioita

Tehtävä 1. Järjestä annetut Turun kaupunginosat aakkosjärjestykseen ja tulosta ne allekkain. Turun kaupunginosat: Kupittaa, Suikkila, Uittamo, Vätti, Martti, Raunistula ja Ispoinen.

Käytä print()-komentoa.

""

Koodi:

print("Ispoinen")
print("Kupittaa")
print("Martti")
print("Raunistula")
print("Suikkila")
print("Uittamo")
print("Vätti")

Tuloste:

tuloste: 

Ispoinen 

Kupittaa 

Martti 

Raunistula 

Suikkila 

Uittamo 

Vätti 

Tehtävä 2. Tulosta alla oleva teksti identtisesti (rivi väli vain kappaleiden välillä) käyttämällä vain yhtä print()-komentoa. 

Sataa sataa ropisee pilipili pom, pilipili pom
varpaitakin palelee, pilipili, pom-pom-pom
varpaitakin palelee, pilipili pom.

Sataa, sataa ropisee, pilipili pom, pilipili pom 
Koko pieni Nalle Puh on nyt märkä, uh-huh-huh.
Koko pieni Nalle Puh on nyt märkä, huh!

Sill’ ei maistu hunaja, pilipili pom, pilipili pom. 
Eikä myöskään vadelma, pili pili pom pom pom,
eikä myöskään vadelma, pili pili pom. 

Voit kirjoittaa erillisen print()-komennon jokaiselle riville tai käyttää ”””-erikoismerkintää ja luoda monirivisen merkkijonon.

Tapa 1.

Koodi:

print("Sataa sataa ropisee pilipili pom, pilipili pom")
print("varpaitakin palelee, pilipili, pom-pom-pom")
print("varpaitakin palelee, pilipili pom.")
print("")
print("Sataa, sataa ropisee, pilipili pom, pilipili pom")
print("Koko pieni Nalle Puh on nyt märkä, uh-huh-huh.")
print("Koko pieni Nalle Puh on nyt märkä, huh!")
print("")
print("Sill' ei maistu hunaja, pilipili pom, pilipili pom.")
print("Eikä myöskään vadelma, pili pili pom pom pom,")
print("eikä myöskään vadelma, pili pili pom.")

Tuloste:

Sataa sataa ropisee pilipili pom, pilipili pom
varpaitakin palelee, pilipili, pom-pom-pom
varpaitakin palelee, pilipili pom.

Sataa, sataa ropisee, pilipili pom, pilipili pom
Koko pieni Nalle Puh on nyt märkä, uh-huh-huh.
Koko pieni Nalle Puh on nyt märkä, huh!

Sill’ ei maistu hunaja, pilipili pom, pilipili pom.
Eikä myöskään vadelma, pili pili pom pom pom,
eikä myöskään vadelma, pili pili pom.

Tapa 2.
""

Koodi:

print("""Sataa sataa ropisee pilipili pom, pilipili pom
varpaitakin palelee, pilipili, pom-pom-pom
varpaitakin palelee, pilipili pom.
Sataa, sataa ropisee, pilipili pom, pilipili pom 
Koko pieni Nalle Puh on nyt märkä, uh-huh-huh.
Koko pieni Nalle Puh on nyt märkä, huh!
Sill' ei maistu hunaja, pilipili pom, pilipili pom.
Eikä myöskään vadelma, pili pili pom pom pom,
eikä myöskään vadelma, pili pili pom.""")

Tuloste:

Sataa sataa ropisee pilipili pom, pilipili pom
varpaitakin palelee, pilipili, pom-pom-pom
varpaitakin palelee, pilipili pom.

Sataa, sataa ropisee, pilipili pom, pilipili pom
Koko pieni Nalle Puh on nyt märkä, uh-huh-huh.
Koko pieni Nalle Puh on nyt märkä, huh!

Sill’ ei maistu hunaja, pilipili pom, pilipili pom.
Eikä myöskään vadelma, pili pili pom pom pom,
eikä myöskään vadelma, pili pili pom.

Tehtävä 3. Kirjoita ohjelma, joka pyytää käyttäjältä tuntipalkka desimaalilukuna, työtunnit kokonaislukuna. Laske käyttäjän palkka ja tulosta se näytölle. 

Kokeile näillä arvoilla:
Tuntipalkka on 14,75e ja työtunnit 112 tuntia.
Tuntipalkka on 27,09e ja työtunnit 30 tuntia.

Kokeile koodia halutessasi myös muilla arvoilla!

Funktiot input(), int() ja float().

""

Koodi:

tuntipalkka = float(input("Anna tuntipalkka: "))
työtunnit = int(input("Anna työtunnit: "))

palkka = tuntipalkka*työtunnit

print(palkka)

Tuloste esimerkki arvoilla tuntipalkka=14.75 ja työtunnit=112:

1652.0

Tuloste esimerkki arvoilla tuntipalkka=27.09 ja työtunnit=30:

812.7

Huomio! Tuloste riippuu annetuista arvoista ja siksi se vaihtelee.

Peruskomentoja

Tehtävä 4. Tutustu Pythonin matemaattisiin perusoperaattoreihin.

Tehtävä 5. Kirjoita ohjelmallisesti seuraavat laskutoimitukset ja tulosta vastaus näkyville.

a. 32232^2
b. 456678456\cdot678
c. 789956\frac{7899}{56}

""

a)

Koodi:

print(32**2)

Tuloste:

1024

""

b)

Koodi:

print(456*678)

Tuloste:

309168

""

c)

Koodi:

print(7899/56)

Tuloste:

141.05357142857142

a) 455314\frac{45\cdot5^3}{14}
b) Kuinka monta minuuttia on vuorokaudessa?
c) Mikä on lukujen 587 ja 38 jakojäännös?

""

Koodi:

print(45*5**3/14)

Tuloste:

401.7857142857143

""

Koodi:

print(24*60)

Tuloste:

1440

""

Koodi:

print(587%38)

Tuloste:

17

Muuttujat ja tyypit

Tehtävä 7. Etsi sanaristikosta annetut Pythonin avainsanat.

True, False, None, and, or, not, in, is, if, elif, else, for, while, break, continue, def, class, return, lambda, yield, import, from, as, try, except, finally, raise, assert, del, global, nonlocal, with, pass async ja await.

Ei hätää näitä ei tarvitse osata ulkoa saat vastaavan listan avainsanoista alla olevalla koodilla.

import keyword
print(keyword.kwlist)

Tehtävä 8. Pyydä käyttäjältä ikä (kokonaislukuna) ja nimi. Tallenna ne muuttujiin nimi ja ikä. Tulosta näytölle muuttujien tyypit.

Kokeile näillä arvoilla:
Nimi Elli ja ikä 18 tuntia.
Nimi Elmeri ja ikä 30 tuntia.

Kokeile koodia halutessasi myös muilla arvoilla!

""

Koodi:

ika = int(input("Minkä ikäinen olet?: "))
nimi = input("Mikä on nimesi: ")

print(type(ika))
print(type(nimi))

Tuloste:

<class ’int’>

<class ’str’>

Huomaa! Tuloste pysyy samana vaikka syöte muuttuu.

Tehtävä 9. Vastaa sanallisesti.

  1. Mikä on muuttuja Python ohjelmointikielessä?
  2. Millaisia sääntöjä on Pythonin muuttujien nimeämisessä?
  3. Anna 3 esimerkkiä kelvollisesta Python muuttujan nimestä.
  4. Anna 3 esimerkkiä kelvottomasta Python muuttujan nimestä.
  5. Mitä type()-funktio palautuu Pythonissa, kun sitä kutsutaan muuttujalla?
  6. Miten muuttuja kannattaa nimetä?

  1. Muuttuja on nimetty sijainti, johon ohjelma voi tallentaa tietoa myöhempää käyttöä varten.
  2. Muuttujan nimi saa sisältää vain kirjaimia, numeroita ja alaviivan (_). Muuttujan nimi ei voi alkaa numerolla. Ei myöskään ole suositeltavaa käyttää ääkkösiä (ä,ö tai å).
  3. luku3, _vari ja varasto_3
  4. 3luokka, käyttäjä-nimi, class
  5. Funktio palauttaa oliotyypin (<class ’object’>), joka edustaa sille parametrina annetun muuttujan tai objektin luokkaa.  
  6. Muuttujat kannattaa nimetä jollain niiden arvoa kuvaavalla nimellä.

Moduulit

Tehtävä 10. Kutsu moduuli math ja laske seuraavat laskut ohjelmallisesti.

a. 56\sqrt{56}
b. sin45°\sin45° anna vastaus asteina
c. cos(x)=9π10cos(x)=\frac{9\pi}{10} anna vastaus radiaaneina
d. e6e^6

""

a.

Koodi:

import math

print(math.sqrt(56))

Tuloste:

7.483314773547883

""

b.

Koodi:

import math

radiaaneina = math.radians(45)
sin = math.sin(radiaaneina)
print(math.degrees(sin))

Tuloste:

40.51423422706978

""

c.

Koodi:

import math

print(math.acos((-1/4)*(math.sqrt(6)+math.sqrt(2))))

Tuloste:

2.8797932657906435

""

Koodi:

import math

print(math.e**6)

Tuloste:

403.428793492735

Tehtävä 11. Laske ohjelmallisesti seuraavat matemaattiset lausekkeet.

  1. Mikä on lukujen 1144, 650 ja 442 suurin yhteinen tekijä?
  2. Mikä on lukujen 9, 26 ja 32 pienin yhteinen monikerta?
  3. Laske hypotenuusan pituus, kun kateetit ovat 36 ja 89.

Jokaiseen laskuun löytyy valmis funktio math-moduulista.

""

a.

Koodi:

import math

print(math.gcd(1144, 650, 442))

Tuloste:

26

""

b.

Koodi:

import math

print(math.lcm(9, 26, 32))

Tuloste:

3744

""

c.

Koodi:

import math

print(math.hypot(36, 89))

Tuloste:

96.00520819205592

Tehtävä 12. Käytä Pythonin random-moduulia. Kokeile ajaa koodi muutamaan kertaan. Mitä huomaat tulosteesta.

automerkit = [”BMW”, ”Honda”, ”Kia”, ”Opel”, ”Renault”, ”Volvo”]

  1. Sekoita automerkit niminen lista. Tulosta alkuperäinen ja sekoitettu lista.
  2. Valitse satunnainen automerkki listalta.
  3. Luo satunnainen desimaali luku väliltä 4–5.
  4. Luo satunnainen kokonaisluku väliltä 50–99.
  5. Luo satunnainen desimaaliluku väliltä 0–1.

""

a.

Koodi:

import random

automerkit = ["BMW", "Honda", "Kia", "Opel", "Renault", "Volvo"]
print(automerkit)

random.shuffle(automerkit)
print(automerkit)

Tuloste:

[’BMW’, ’Honda’, ’Kia’, ’Opel’, ’Renault’, ’Volvo’]

[’Honda’, ’BMW’, ’Kia’, ’Opel’, ’Volvo’, ’Renault’]

Huomaa, että alempi eli sekoitettu lista muuttuu ajokertojen välissä!

""

b.

Koodi:

import random

automerkit = ["BMW", "Honda", "Kia", "Opel", "Renault", "Volvo"]

automerkki = random.choice(automerkit)
print(automerkki)

Tuloste:

Vaihtuu ajokertojen välissä esim. Volvo

""

c.

Koodi:

import random

desimaaliluku = random.uniform(4,5)
print(desimaaliluku)

Tuloste:

Vaihtuu ajokertojen välissä esim. Volvo

""

d.

Koodi:

import random

kokonaisluku = random.randint(50,99)
print(kokonaisluku)

Tuloste:

Vaihtuu ajokertojen välissä, mutta pysyy annettujen arvojen välillä esim. 78

""

e.

Koodi:

import random

desimaaliluku2 = random.random()
print(desimaaliluku2)

Tuloste:

Vaihtuu ajokertojen välissä, mutta pysyy arvojen 0 ja 1 välillä esim. 0.4787440625015146

Tehtävä 13. Selitä rivi riviltä, mitä koodissa tapahtuu.

""
import random

sana = input("anna sana: ")

tulos = 4 + 5 / 2

if len(sana) > 4:

    tulos = tulos - len(sana)

else:

    tulos = random.randint(0, 10)  

print(tulos)

Rivi 1.

Kutsutaan käyttöön random-moduuli, jota tarvitaan myöhemmin koodissa.

Rivi 2.

Määritetään muuttuja nimeltä sana. Se pyytää käyttäjältä syötteen merkkijonon muodossa.

Rivi 3.

Määrittää muuttujan nimeltä tulos. Tulos on matemaattinen lauseke, jonka tulos on 6,5.

Rivi 4.

Ehtorakenteen ensimmäinen osa. Tarkistetaan, onko sana-muuttujan pituus  suurempi kuin 4.

Rivi 5.

Toteutuu, jos rivin 4 ehto toteutuu eli sana on yli 4 merkkiä pitkä. Muuten riviä ei ajeta. Rivillä määritetään, että uusi tulos on vanha tulos miinus sanan pituus.

Rivi 6.

Ehtorakenteen toinen osa. Tässä tapauksessa se tarkoittaa kaikkia muita tapauksia, jotka eivät ole täyttänyt ensimmäistä ehtoa eli kaikki tapaukset, joissa sanan pituus on 4 tai alle.

Rivi 7.

Toteutuu, jos ensimmäinen ehto ei ole toteutunut. Toteutuessaan määrittää tuloksen arvoksi jonkin satunnaisen kokonaisluvun 0 ja 10 väliltä.

Rivi 8.

Tulostaa näkyville tuloksen lopullisen arvon.

kaikki rivit

Rivi1. Kutsutaan käyttöön random-moduuli, jota tarvitaan myöhemmin koodissa. 

Rivi 2. Määritetään muuttuja nimeltä sana. Se pyytää käyttäjältä syötteen merkkijonon muodossa. 

Rivi 3. Määrittää muuttujan nimeltä tulos. Tulos on matemaattinen lauseke, jonka tulos on 6,5. 

Rivi 4. Ehtorakenteen ensimmäinen osa. Tarkistetaan, onko sana-muuttujan pituus  suurempi kuin 4. 

Rivi 5. Toteutuu, jos rivin 4 ehto toteutuu eli sana on yli 4 merkkiä pitkä. Muuten riviä ei ajeta. Rivillä määritetään, että uusi tulos on vanha tulos miinus sanan pituus. 

Rivi 6. Ehtorakenteen toinen osa. Tässä tapauksessa se tarkoittaa kaikkia muita tapauksia, jotka eivät ole täyttänyt ensimmäistä ehtoa eli kaikki tapaukset, joissa sanan pituus on 4 tai alle. 

Rivi 7. Toteutuu, jos ensimmäinen ehto ei ole toteutunut. Toteutuessaan määrittää tuloksen arvoksi jonkin satunnaisen kokonaisluvun 0 ja 10 väliltä. 

Rivi 8. Tulostaa näkyville tuloksen lopullisen arvon. 

Listat ja indeksit

Tehtävä 14. Tutustutaan listaan ja sen toimintaan.

Alla kolme erilaista dataa sisältäviä listoja:

hedelmat = [”omena”, ”päärynä”, ”appelsiini”]

numerot = [1, 3, 6, 2, 7]

totuusarvot = [True, False]

  1. Tulosta hedelmat-lista?
  2. Selvitä hedelmat-listan pituus käyttämällä len()-funktiota ja tulosta vastaus näkyville.
  3. Tulosta numerot-lista?
  4. Selvitä numerot-listan pituus käyttämällä len()-funktiota ja tulosta vastaus näkyville.
  5. Tulosta totuusarvot-lista?
  6. Selvitä totuusarvot-listan pituus käyttämällä len()-funktiota ja tulosta vastaus näkyville.
  7. Tulosta näkyville hedelmat-listan tyyppi käyttämällä type()-funktiota.
  8. Mitkä arvot saadaan, kun otetaan numerot-listan indkseillä 2 ja 4 arvot?
  9. Plussa tehtävä: Laske h-kohdan indeksien summa.

Koodi:

hedelmat = ["omena", "päärynä", "appelsiini"]

print(hedelmat)

Tuloste:

[’omena’, ’päärynä’, ’appelsiini’]

Koodi:

hedelmat = ["omena", "päärynä", "appelsiini"]

print(len(hedelmat))

Tuloste:

3

Koodi:

numerot = [1, 3, 6, 2, 7]

print(numerot)

Tuloste:

[1, 3, 6, 2, 7]

Koodi:

numerot = [1, 3, 6, 2, 7]

print(len(numerot))

Tuloste:

5

Koodi:

totuusarvot = [True, False]

print(totuusarvot)

Tuloste:

[True, False]

Tehtävä 15. Selitä rivi riviltä, mitä koodissa tapahtuu.

""
lista = [2, 4, 5, 6, 7]

tulo = 1

for luku in lista:

    if luku % 2 == 0:

        tulo = tulo * luku

print(tulo)

Rivi 1.

Rivillä määritetään lista, jonka nimi on lista sekä sen viisi kokonaislukuarvoa.

Rivi 2.

Määritetään muuttuja nimeltä tulo ja sen alkuarvoksi annetaan 1.

Rivi 3.

Aloittaa for-silmukan, joka käy kaikki listassa olevat alkiot läpi yksi kerrallaan ja luku-muuttuja saa yhden listan arvoista.

Rivi 4.

Ehtolause, joka tarkistaa onko luku parillinen eli onko luvun ja numeron kaksi jakojäännös nolla modulo-operaattori % avulla.

Rivi 5.

Koodi menee tälle riville vain silloin, kun luku on parillinen. Tällöin tulon aikaisempi arvo kerrotaan luvulla ja tämä tulo tallennetaan takaisin tulo-muuttujaan.

Rivi 6.

Tulostaa näkyville tulo-muuttujan lopullisen arvon.

Kaikki rivit

Rivi 1. Rivillä määritetään lista, jonka nimi on lista sekä sen viisi kokonaislukuarvoa.

Rivi 2. Määritetään muuttuja nimeltä tulo ja sen alkuarvoksi annetaan 1.

Rivi 3. Aloittaa for-silmukan, joka käy kaikki listassa olevat alkiot läpi yksi kerrallaan ja luku-muuttuja saa yhden listan arvoista.

Rivi 4. Ehtolause, joka tarkistaa onko luku parillinen eli onko luvun ja numeron kaksi jakojäännös nolla modulo-operaattori % avulla.

Rivi 5. Koodi menee tälle riville vain silloin, kun luku on parillinen. Tällöin tulon aikaisempi arvo kerrotaan luvulla ja tämä tulo tallennetaan takaisin tulo-muuttujaan.

Rivi 6. Tulostaa näkyville tulo-muuttujan lopullisen arvon.