Funktiot ja kirjastot

Funktiot ja kirjastot

Pythonissa on oletusarvoisesti vain joitakin funkioita. Esimerkiksi int-komento on funktio, sillä se palauttaa annetun arvon kokonaislukuna. Lisää matematiikka-aiheisia funktiota saa käyttöön tuomalla math-kirjaston ohjelman alussa.

Esimerkki 1.

import math #Tuodaan math-kirjasto käyttöön

pii = math.pi #Luvun pii likiarvo
print ("Luvun pii liki arvo on", pii)

print (math.fabs(-5)) #fabs-komento palauttaa luvun itseisarvon

[[$\vdots$]]

Luvun pii likiarvo on 3.141592653589794

5

Usein on tärkeää arpoa satunnaislukuja. Tämä onnistuu random-kirjaston avulla.

Esimerkki 2.

import random

satunnaisluku = random.randint (1, 10) #Arpoo satunnaisen kokonaisluvun luvuista 1-10.
print (satunnaisluku)

satunnaisreaaliluku = random.uniform (1, 10) #Arpoo satunnaisen desimaaliluvun lukujen 1 ja 10 väliltä.
print (satunnaisreaaliluku)

satunnainenmerkki = random.choice("abcdefgh") #Arpoo satunnaisen merkin merkkijonosta.
print (satunnainenmerkki)

satunnaisotos = random.sample([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 3) #Arpoo kolme satunnaista lukua listasta.
print (satunnaisotos)

[[$\vdots$]]

3

4.1437658593051319

f

[3, 1, 8]


Välitehtävä

Päivämäärää ja aikaa käsittelevät komennot saadaan käyttöön datetime-kirjaston avulla.

Esimerkki 3.

import datetime

tanaan = datetime.datetime.now() #Muuttuja tanaan sisältää tämän hetken ajan.

print (tanaan.year) #Tulostaa tämän hetken vuoden
print (tanaan.month) #Tulostaa tämän hetken kuukauden
print (tanaan.day) #Tulostaa tämän hetken päivän
print (tanaan.hour) #Tulostaa tämän hetken tunnin
print (tanaan.minute) #Tulostaa tämän hetken minuutin
print (tanaan.second) #Tulostaa tämän hetken sekunnin

[[$\vdots$]]

2017
12
15
11
7
3

Välitehtävä

Aikaa, etenkin ajan mittaamista, voidaan käsitellä myös time-kirjaston avulla.

Esimerkki 4.

import time

alkuaika = time.time() #Ajanmittaus alkaa
nimi = input("Kerro nimesi:")
loppuaika = time.time() #Ajanmittaus loppuu

print ("Nimesi on", nimi)
print ("Vastaaminen kesti", loppuaika - alkuaika, "sekuntia") #Kulunut aika saadaan mitattua miinustamalla alkuaika loppuajasta.
print ("Pyöristettynä", round(loppuaika - alkuaika, 2), "sekuntia") #Pyöristetään round-komennolla kahden desimaalin tarkkuuteen.

[[$\vdots$]]

Kerro nimesi: Samu
Vastaaminen kesti 3.456789231567408 sekuntia
Pyöristettynä 3.46 sekuntia


Välitehtävä

Omat funktiot

Omia funktioita voi määrittää def-komennon avulla.

Esimerkki 5.

def keskiarvo(luku1, luku2): #Funktion nimi on keskiarvo ja funktioon vaikuttavat parametrit ovat luku1 ja luku2.
[[$ \ \ \ \ \ $]] keskiarvo = float((luku1+luku2)/2)
[[$ \ \ \ \ \ $]] print("Lukujen", luku1, "ja", luku2, "keskiarvo on", keskiarvo) #Sisennyksiin tulee, mitä funktio tekee annetuille parametreille.

a = float( input ("Anna 1. luku:"))
b = float( input( "Anna 2. luku:"))
keskiarvo (a, b)

[[$\vdots$]]

Anna 1. luku: 3
Anna 2. luku: 4
Lukujen 3.0 ja 4.0 keskiarvo on 3.5

Tehtäviä

1. Tulosta tämän hetken päivämäärä ja aika.

2. Laske ympyrän, jonka halkaisija on 5cm, kehä ja pyöristä vastaus kahden desimaalin tarkkuuteen. Ympyrän kehä lasketaan kaavalla kehä=pii*halkaisija.

3. Luo ohjelma, joka 
a)
arpoo luvun väliltä 1-37.
b)
arpoo kirjaimen omasta etunimestäsi.

3.
Luo ohjelma, joka
a) kysyy käyttäjältä kaksi lukua
b) arpoo näiden väliltä kolmannen luvun
c)* mittaa ajan, joka kuluu koko operaation suorittamiseen.

4. Luo ohjelma, joka
a) arpoo 50 kertaa luvun 1 tai 2
b)* kertoo kuinka monta kertaa luku 1 esiintyy arvonnassa.