Moduulien käyttö
Kirjastot
Kaikkea ohjelmoidessa ei kannata tehdä itse. Sen sijaan ohjelmoidessa kannattaa käyttää apuna muiden tekemiä kirjastoja. Kirjastojen idea on, että joku muu on tehnyt koodia, jota voi kätevästi käyttää itse niin, että säästyy suurelta määrältä työtä.
Tässä osiossa esitellään kaksi Pythonin mukana asennettua kirjastoa. Myöhemmin opitaan asentamaan myös täysin uusia kirjastoja.
Kirjastojen käyttäminen ja moduulit
Kirjastot koostuvat moduuleista. Yksi moduuli sisältää komentoja johonkin tiettyyn rajattuun tarkoitukseen. Käyttäessään kirjastoa voi joko käyttää vain osaa sen moduuleista tai kaikkia moduuleja. Toisaalta joissain kirjastoissa voi olla vain yksi moduuli.
Kokonaisen kirjaston voi ottaa käyttöön komennolla import kirjastonNimi
. Tällöin koodissa pitää mainita, kirjaston nimi kun käytetään sen komentoja. Esimerkiksi jos käytämme turtle-kirjastoa, sen komennot ovat muotoa turtle.komento()
.
Jos haluamme vain osan kirjaston moduuleista, voimme käyttää komentoa from kirjasto import x
, jossa x:n tilalla on haluttu moduuli.
Kun otamme käyttöön yksittäisiä moduuleja, ei tarvita komentoihin erikseen mainintaa kirjastosta. Samalla komennolla voimme ottaa käyttöö myös kaikki moduulit, jolloin meidän ei tarvitse mainita kirjaston nimeä. form kirjasto import *
ottaa käyttöön kaikki kirjaston moduulit ja kirjaston ei tarvitse komentoja käyttäessä mainita (* tarkoittaa kaikki).
Import-komento kannattaa laittaa ohjelman tiedoston alkuun. Komennon jälkeen kyseisessä ohjelmassa voi käyttää lisättyjä komentoja.
Esimerkkejä
komento | mitä tekee |
---|---|
import kirjasto | ottaa kirjaston käyttöön |
from kirjasto import moduuli | ottaa tietyn moduulin käyttöön kirjastosta |
from kirjasto import * | ottaa käyttöön kaikki kirjaston moduulit käyttöön |
Turtle
Turtle-kirjaston ideana on ohjailla kilpikonnahahmoa, jonka avulla voi piirrellä kuvioita. Alussa kilpikonna on näytön keskellä ja se osoittaa vasemmalle.
Kaikki turtle-kirjaston mukana tulevat komennot löytyvät kirjaston dokumentaatiosta: https://docs.python.org/3/library/turtle.html
Esimerkkejä
komento | mitä tekee |
---|---|
forward(x) | liiku eteenpäin x askelta |
left(x) | käänny vasemmalle x astetta |
right(x) | käänny oikealle x astetta |
pendown() | piirrä viivaa kulkiessa (oletus) |
penup() | älä piirrä viivaa kulkiessa |
Tehtävät
-
Tee ohjelma, joka piirtää tasasivuisen kolmion.
-
Tee ohjelma, joka piirtää tasasivuisen viisikulmion.
-
Tee ohjelma, joka piirtää minkä tahansa tasasivuisen monikulmion. Kulmien määrä annetaan muuttujassa.
-
Tee ohjelma, joka piirtää vierekkäin kaksi neliötä.
-
Tee ohjelma, joka piirtää vierekkäin muuttujassa annetun määrän neliöitä.
-
Tee ohjelma, joka piirtää sisäkkäin kaksi neliötä.
-
Tee ohjelma, joka piirtää sisäkkäin muuttujassa annetun määrän neliöitä.
-
Tee ohjelma, joka piirtää 8×8-ruudukon.
-
Tee ohjelma, joka piirtää 8×8-shakkilaudan. Erota valkeat ja mustat ruudut haluamallasi tavalla.
-
Tee ohjelma, joka piirtää mahdollisimman hienon kuvion.
Random
Joskus haluamme saada ohjelmiimme satunnaisuutta. Tällöin tarvitsemme kirjastoa random
.
Kirjaston hyödyllisin komento on randint()
, jolla voi arpoa satunnaisen kokonaisluvun annetulta väliltä. Se toimii siis kuin noppa.
Kaikki kirjaston komennot löytyvät dokumentaatiosta: https://docs.python.org/3/library/random.html
Esimerkkejä
komento | mitä tekee |
---|---|
from random import randint | ottaa käyttöön kirjastosta random, komennon randint |
randint(0, 2) | arpoo satunnaisen luvun väliltä 0, 1, 2 |
Tehtävät
Tässä harjoituksessa pääset koodaamaan kivi, paperi, sakset-pelin, missä pelaaja pelaa tekoälyä vastaan. Aloita kopioimalla alla oleva koodi:
while True:
pelaaja = input("kivi, paperi, sakset?")
tekoäly = "kivi"
print("Tekoäly valitsi: " + tekoäly)
if pelaaja == tekoäly:
print("Tasapeli!")
elif pelaaja == "kivi":
if tekoäly == "paperi":
print("Hävisit!")
else:
print("Voitit!")
elif pelaaja == "paperi":
if tekoäly == "sakset":
print("Hävisit!")
else:
print("Voitit!")
else:
print("Vastaa kivi, paperi tai sakset!")
-
Koodista puuttuu kokonaan vaihtoehto, että pelaaja vastaa sakset! Korjaa tämä koodiin.
-
Nyt tekoäly pelaa aina kiven. Tee tekoälystä satunnainen.
Bonustehtäviä
Peli toimii nyt melko hyvin, mutta parannetaan sitä vielä lisää!
-
Lisää peliin pisteiden lasku.
-
Muuta koodia niin, että peliä pelataan esimerkiksi 5 kierrosta, minkä jälkeen pelaajalle kerrotaan pistemäärät ja voittaja.
While-loop voisi näyttää nyt esimerkiksi tältä:
kierrokset = 0
while kierrokset < 5:
....
koodia....
.....
kierrokset += 1
Lopputulostus voisi olla esimerkiksi seuraavanlainen:
Peli loppui! Sait 3 pistettä ja tekoäly 2 pistettä.
Sinä voitit!