Kaikkea ei tarvitse itse keksiä. Voit ottaa käyttöön ulkoisia kirjastoja, joihin on luotu valmiiksi "lisäkäskyjä" eli funktioita. tällaisia kirjastoja on mm.
sys
math (matemaattiset funktiot, sin, cos...)
pygame (peliohjelmointi)
Py2Exe (voidaan luoda itsenäisiä windows-ohjelmia)
wxPython linkki (Ikkunaohjelmointi, GUI)
Kirjasto tuodaan omaan ohjelmakoodiin import -käskyllä. Lisää import-käsky heti ohjelman alkuun. esimerkiksi
# -*- coding: cp1252 -*-
import random
...
Useamman kirjaston tuominen tapahtuu yhdellä rivillä
import sys, random, pygame
Yksittäisen käskyn tuominen tapahtuu komennolla:
from math import sqrt # tuo vain neliöjuuri-funktion math-kirjastosta
from pygame.locals import * # tuo kaikki
Tallennetaan omat funktiot omaan tiedostoon omaKirjasto.py
Tehdään varsinainen ohjelma samaan kansioon ja tuodaan omat funktiot mukaan import omaKirjasto.
Nyt sinulla on käytössä omat funktiosi omaKirjastosta käytössä.
=> Koodi jaetaan useampaan tiedostoon. Tämä modulaarinentapa helpottaa koodin uudelleenkäyttöä ja on suurissa projekteissa tärkeää.
Lisämateriaalia:
http://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=python_09 Suomenkielinen opas
https://docs.python.org/2/library/index.html Viraliset Python-kirjastot
https://docs.python.org/3/py-modindex.html Hyvä lista kirjastoista
Opas kirjastoihin (hyvä) LInkki
T1. Tee ohjelma jolle annetaan ympyrän halkaisijan, ja tulostaa ympyrän pinta-alan ja piirin pituuden.
Ympyrän pinta-ala on pi*r^2 ja piirin pituus 2*pi*r
HOX! piin arvo = math.pi
T2. Tee ohjelma joka muuttaa annetun pinta-alan r-säteisen planeetan pinta-alaksi. Ilmoita pallon halkaisija. Laske Suomi-planeetan halkaisija.
Kuun halkaisija on noin 6800 km (r = 3400 km)
Suomi 338 000 km2
Viro 47 000 km2
Eurooppa 10 500 000 km2
USA 9 600 000 km2
Venäjä 17 000 000 km2
T3a. Tee ohjelma, jolle annetaan kuution sivun pituus ja ohjelma laskee saman tilavuuden omaavan pallon halkaisijan.
T3b. Tee ohjelma, jolle annetaan kuution sivun pituus ja ohjelma laskee saman tilavuuden omaavan pallon halkaisijan.
T1. Tee ohjelma joka arpoo N kertaa luvun 0 tai 1 (klaavat ja kruunat). Ohjelma ilmoittaa kuinka monta prosenttia on klaavojen osuus.
Merkkaa ohjelman alkuun N = 100
+ Piirrä jokaista 10 % kohden # -merkki. Esimerkiksi jos tulos on 36 % klaavoja ja 74 % kruunia :
klaavat :###
kruunat:####### HOX! print("#"*a) , jossa a on täydet 10 %.
T2. Ohjelma arpoo luvun väliltä 0-100. Käyttäjä arvaa lukua. Ohjelma ilmoittaa onko käyttäjän arvaus pienempi, suurempi vai onko se kysytty luku. Lopuksi ohjelma ilmoittaa kuinka monta arvausta tarvittiin.
+ Lisää ohjelmaan "älyä", jolla ohjelma itse koettaa arvata mahdollisimman nopeasti arvotun luvun.
++ Ohjelma pelaa itsenäisesti 10 kierrosta ja ilmoittaa arvausten lukumäärän.
+++ Ohjelma piirtää pylväskuvaajan tuloksista. (Tarvitset mathplotlib - kirjastoa)
Kirjaston mathplotlib avulla voidaan piirtää erilaisia (tilasto)kuvaajia. -> Esimerkkejä.
Kirjaston kotisivulta löytyy funktiot ja niiden käyttö -> Cheat Sheet.
T1. Kopioi alta koodi 1 ja tee siinä annetut tehtävät.
T2. Piirrä ympyrädiagrammi (kopioi koodi 2)
+T3. Ohjelma (koodi 3) arpoo 100 kertaa luvun 0 tai 1 (klaavat ja kruunat).ja esittää tulokset kaaviona.
Muuta ohjelmakoodia niin että se heittää 10 kertaa noppaa (1-6) , ja esittää tulokset pylväskaaviona (bar).
import matplotlib.pyplot as plt
data1 = [1,2,3,4,5,6,7]
data2 = [3,5,6,4,3,6,10];
data3 = [3,2,3,3,4,5,10];
luokat = ["A","B","C","D","E","F","G"]
plt.plot(data2)
plt.show() # piirtää ikkunan ja kaavion siihen
#_________________________________________
# a. korvaa plt.plot(data2) -rivi
# a1) plt.plot(luokat,data2)
# a2) plt.plot(data1,data2,"o") //testaa x
# a3) Lisää omalle riville plt.plot(data1,data3,"o")
#_________________________________________
# b1) plt.bar(luokat,data)
#_________________________________________
#Lisää kaaavion ominaisuuksia ennen plt.show() omille riveille
# c1) plt.xlabel("X-akseli")
# c2) Lisää y-askelille teksti "Arvot"
# c3) plt.title("OMA KaAviO")
# c4) lisää nimi eli label kuvaajalle plt.plot(data1,data2,"x", label="karkit")
# Ennen plt.show lisää : plt.legend()
#lisää https://www.geeksforgeeks.org/python-introduction-matplotlib/
import matplotlib.pyplot as plt
data1 = [1,2,3,4,5,6,7]
data2 = [3,5,6,4,3,6,10];
luokat = ["A","B","C","D","E","F","G"]
plt.pie(data2)
plt.show()
# Täydennä plt.pie(data2) -komentoa
# pilkulla erotetuilla argumenteillä
# a) lisää argumentti: labels=luokat => plt.pi(data,labels=luokat)
# b) lisää argumentti: startangle=90
# c) lisää argumentti: autopct='%1.1f%%'
# d) lisää otsikko plt.title("Eka kaavio?")
import random
import matplotlib.pyplot as plt
N = 10 # heittojen lukumäärä
tulos = [0,0]
kolikko = ["klaava","kruuna"]
for i in range (N):
luku = random.randint(0,1)
tulos[luku] += 1 #lisätään tuloksiin
print(kolikko[0],":",tulos[0])
print(kolikko[1],":",tulos[1])
plt.pie(tulos, labels=kolikko,autopct='%1.1f%%' ,radius=0.8)
plt.show()
#Muuta koodia esittämään nopanheiton tulosjakaumaa pylväskaaviona.
# LUE TARVITTAESSA
# tulokset = [0,0,0,0,0,0]
# noppa = [1,2,3,4,5,6]
#
# for a in tulokset:
# print(a,",",end=" ")
#
# for i in range (N):
# luku = random.randint(1,6)
#
# plt.bar(noppa,tulos)