Ohjelmoinnin peruskurssi Y1

Samankaltaiset tiedostot
Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Pythonilla. Teemu Sirkiä, 2015

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Tieto- ja tallennusrakenteet

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005

ITKP102 Ohjelmointi 1 (6 op)

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta Toteuta Pythonilla seuraava ohjelma:

Ohjelmoinnin perusteet Y Python

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Tutoriaaliläsnäoloista

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Ohjelmoinnin peruskurssien laaja oppimäärä

Python-ohjelmointi Harjoitus 2

Luento 5. Timo Savola. 28. huhtikuuta 2006

Ohjelmoinnin peruskurssi Y1

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Algoritmit 2. Luento 3 Ti Timo Männikkö

Ohjelmoinnin perusteet Y Python

Harjoitustyö: virtuaalikone

Ohjelmoinnin jatkokurssi, kurssikoe

Ohjelmoinnin peruskurssi Y1

T Ohjelmoinnin perusteet Y (Python). Tentti

Ohjelmoinnin perusteet Y Python

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Java-kielen perusteet

Sisältö. 22. Taulukot. Yleistä. Yleistä

Transkriptio:

Ohjelmoinnin peruskurssi Y1 CSE-A1111 7.10.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 1 / 36

Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute. Tätä kautta on mahdollisuus antaa nimettömänä palautetta luennosta. Jos jokin asia on jäänyt palautteen perusteella epäselväksi, palataan siihen mahdollisuuksien mukaan seuraavalla luennolla. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 2 / 36

Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten Python-ohjelmissa voi vertailla merkkijonojen sisältöjä. Osaat tehdä ohjelmia, jotka käsittelevät tehokkaasti tilanteita, joissa tarvitaan avain arvo-pareja (esim. opiskelijarekisteri, puhelinluettelo) Tiedät tarkemmin, mitä tarkoittaa, kun muuttujalle sijoitetaan arvo. Tunnet sen vaikutuksia silloin, kun parametrin arvoa muutetaan funktion sisällä. Osaat käsitellä listoja, jonka alkiot ovat itse listoja. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 3 / 36

Merkkijonojen vertailu Merkkijonojen sisältöjä voi verrata toisiinsa vertailuoperaattoreilla ==,!=, <=, >=, < ja >. Kun katsotaan, onko toinen merkkijono suurempi kuin toinen, verrataan merkkejä keskenään merkkijonojen alusta lähtien. Järjestyksen määrää kirjainten arvo käytetyssä merkkikoodausjärjestelmässä mitä lukuarvoa kukin kirjain vastaa. Käytännössä koodit noudattavat muuten aakkosjärjestystä, mutta isot kirjaimet ovat ennen pieniä ja skandinaaviset aakkoset eivät ole keskenään oikeassa järjestyksessä. Seuraavilla kalvoilla on joitakin esimerkkejä merkkijonojen vertailusta. Edellisen luennon kalvoissa on esimerkkiohjelma, joka käyttää apunaan merkkijonojen vertailua. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 4 / 36

Esimerkkejä merkkijonojen vertailuista >>> nimi1 = "matti" >>> nimi2 = "teppo" >>> nimi1 == nimi2 False >>> >>> nimi1 < nimi2 True >>> >>> nimi3 = "Teppo" >>> nimi2 == nimi3 False >>> >>> nimi3 < nimi2 True CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 5 / 36

Esimerkkejä merkkijonojen vertailuista, jatkoa >>> nimi1 = "matti" >>> nimi4 = "matilda" >>> nimi1 < nimi4 False CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 6 / 36

Sanakirja Monissa sovelluksissa on tallennettava rakenteeseen avain arvo-pareja. Myöhemmin rakenteesta halutaan etsiä tiettyyn avaimeen liittyyvää arvoa. Esimerkkejä: puhelinluettelo, opiskelijarekisteri, yrityksen asiakasrekisteri, autorekisteri. Halutaan, että tehokkaan hakemisen lisäksi rakenteeseen pystyy myös helposti lisäämään uusia avain arvo-pareja sekä poistamaan pareja. Lisäksi avaimeen liittyvää arvoa voidaan muuttaa. Yksinkertainen ratkaisu: käytetään listaa, jonka alkoina on avain arvo-pareja. Ongelmia: Hidas haku Jos hakua nopeutetaan pitämällä avaimet järjestyksessä, lisäys ja poisto hankaloituvat. Pythonissa on valmis rakenne, sanakirja (engl. dictionary), jossa sekä haut, lisäykset että poistot pystytään tekemään tehokkaasti. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 7 / 36

Sanakirjan luonti ja käyttö Tyhjän sanakirjan voi luoda aaltosulkujen avulla: >>> puh_luettelo = {} Sanakirjaa luodessa voi samalla jo antaa siihen liitettäviä avain arvo-pareja: >>> puhelinluettelo = {"Teekkari Teemu" : "050-12345", \... "Fyysikko Tiina" : "045-234567", "Kemisti Kalle" : \... "040-765432"} Haluttuun avaimeen liittyvän arvon saa selville ilmauksella sanakirja[avain], esimerkiksi >>> print(puhelinluettelo["fyysikko Tiina"]) 045-234567 CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 8 / 36

Sanakirja: avaimen haku ja olemassaolo Edellisen kalvon hakutapa johtaa kuitenkin ohjelman kaatumiseen, jos haettua avainta ei löydy sanakirjasta: >>> print(puhelinluettelo["virtanen Maija"]) Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: Virtanen Maija Operaattorin in avulla voi tutkia, onko haettava avain sanakirjassa: >>> nimi = "Virtanen Maija" >>> if nimi in puhelinluettelo:... print(puhelinluettelo[nimi])... else:... print("nimea ei loydy luettelosta")... Nimea ei loydy luettelosta CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 9 / 36

Sanakirja: avainten lisääminen ja arvon muuttaminen Sijoituskäskyn avulla sanakirjaan voi lisätä uusia avain arvo-pareja ja muuttaa sanakirjassa jo oleviin avaimiin liittyviä arvoja. >>> puhelinluettelo["rakentaja Niina"] = "0400-123" >>> puhelinluettelo["kemisti Kalle"] = "041-56789" >>> print(puhelinluettelo) { Kemisti Kalle : 041-56789, Fyysikko Tiina : 045-234567, Teekkari Teemu : 050-12345, Rakentaja Niina : 0400-123 } CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 10 / 36

Sanakirja: avainten läpikäynti Sanakirjan avaimet voi käydä läpi for-käskyn avulla. >>> for nimi in puhelinluettelo:... print(nimi)... Kemisti Kalle Fyysikko Tiina Teekkari Teemu Rakentaja Niina >>> for nimi in puhelinluettelo:... print("{:16s} {:12s}".format(... nimi, puhelinluettelo[nimi]))... Kemisti Kalle 041-56789 Fyysikko Tiina 045-234567 Teekkari Teemu 050-12345 Rakentaja Niina 0400-123 CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 11 / 36

Sanakirja: avaimen poistaminen Sanakirjasta voi poistaa avaimen ja siihen liittyvän arvon del-operaattorilla: >>> del puhelinluettelo["kemisti Kalle"] >>> print(puhelinluettelo) { Fyysikko Tiina : 045-234567, Teekkari Teemu : 050-12345, Rakentaja Niina : 0400-123 } CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 12 / 36

Esimerkki: puhelinluettelo Seuraavassa esimerkkiohjelmassa käyttäjä syöttää ensin haluamansa määrän nimiä ja puhelinnumeroita sanakirjarakenteen avulla toteutettuun puhelinluetteloon. Tämän jälkeen käyttäjä voi hakea luettelosta viiteen nimeen liittyvät puhelinnumerot. Käytännössä puhelinluettelon tiedot kannattaisi lukea tiedostosta, niin ne olisivat käytössä ohjelman suorituskerrasta toiseen. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 13 / 36

Puhelinluettelo, koodi def lue_puhelinnumerot(): print("anna lisattavat nimet ja numerot.") print("nimi ja puhelinnumero samalla rivilla,") print("valissa kaksoispiste.") print("lopeta tyhjalla rivilla.") puhelinluettelo = {} rivi = input() while len(rivi) > 0: tiedot = rivi.split(":") nimi = tiedot[0] numero = tiedot[1] puhelinluettelo[nimi] = numero rivi = input() return puhelinluettelo CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 14 / 36

Puhelinluettelo, koodi jatkuu def etsi_numero(puhelintiedot): etsitty = input("kenen numero haetaan? ") if etsitty in puhelintiedot: print("numero on", puhelintiedot[etsitty]) else: print("nimea ei loydy luettelosta.") def main(): luettelo = lue_puhelinnumerot() for i in range(5): etsi_numero(luettelo) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 15 / 36

Välitehtävä Lisää puhelinluettelo-ohjelmaan funktio muuta_numero, jonka avulla käyttäjä voi muuttaa haluamansa henkilön puhelinnumeron. Funktio saa parametrina sanakirjan, joka sisältää puhelinluettelon tiedot. Funktio suostuu kuitenkin muuttamaan puhelinnumeron vain siinä tapauksessa, että käyttäjän antama nimi on jo puhelinluettelossa. Jos nimeä ei ole puhelinluettelossa, funktio tulostaa Nimea ei ole luettelossa. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 16 / 36

Monikko Monikko (engl. tuple) muistuttaa listaa, mutta monikon sisältöä ei voi muuttaa sen jälkeen, kun monikko on luotu. Monikkoa merkitään kaarisulkujen () avulla. Monikon alkiot erotetaan toisistaan pilkulla, esimerkiksi >>> lukumonikko = (4, 5.0, 12) Monikon alkioita voidaan käsitellä monella samalla tavalla kuin listaa (ei kuitenkaan muuttaa), esimerkiksi >>> print(lukumonikko[1]) 5.0 CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 17 / 36

Arvot ja viittaukset Pythonissa kaikkien muuttujien arvoja käsitellään viittauksen avulla. Muuttujan arvona ei ole varsinainen arvo (esim. kokonaisluku), vaan viite varsinaisen arvon sisältävään muistipaikkaan. luku = 15 luku 15 Kun muuttujalle sijoitetaan uusi arvo, varsinaista arvoa ei korvata uudella, vaan muuttuja pannaan viittaamaan uuteen muistipaikkaan. luku = 20 luku 15 20 CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 18 / 36

Muuttuvat tyypit Sijoituskäsky siis vaihtaa muuttujan viittaamaan toiseen arvoon. Osa Pythonin tyypeistä (esimerkiksi listat ja sanakirjat) on kuitenkin muuttuvia (engl. mutable). Niillä varsinaista arvoa voi muuttaa. lukulista = [3, 7, 8] lukulista[1] = 4 ennen alkion arvon muuttamista alkion arvon muuttamisen jälkeen lukulista 3 lukulista 3 7 4 8 8 Muuttuja lukulista viittaa samaan listaan, mutta listan sisältö on muuttunut. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 19 / 36

Parametrin arvon muuttaminen funktiossa Tähän asti esitetyistä tyypeistä lista ja sanakirja ovat muuttuvia. Muut esitetyt tyypit (esim. kokonais- ja desimaaliluvut, merkkijonot) ovat muuttumattomia (engl. immutable). Muuttumattomat ja muuttuvat tyypit toimivat eri tavalla funktion parametreina. Jos funktio muuttaa muuttumatonta tyyppiä olevan parametrina arvoa, muutos ei näy mitenkään funktion ulkopuolella. Jos taas funktio muuttaa muuttuvaa tyyppiä olevan parametrin varsinaista arvoa, muutos näkyy myös funktion ulkopuolella. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 20 / 36

Esimerkki 1: parametrina lukuja def muuta_luku(eka): print("arvo funktiossa aluksi", eka) eka = 10 print("arvo funktiossa lopuksi", eka) def main(): luku = 5 print("arvo paaohjelman aluksi", luku) muuta_luku(luku) print("arvo paaohjelman lopuksi", luku) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 21 / 36

Mitä edellisen kalvon ohjelman suorituksessa tapahtuu? Pääohjelmassa muuttujille luku pannaan viittaamaan arvoon 5. luku 5 Funktion alussa parametri pannaan viittaamaan samaan arvoon. luku 5 eka CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 22 / 36

Mitä edellisen kalvon ohjelman suorituksessa tapahtuu? Pääohjelmassa muuttujille luku pannaan viittaamaan arvoon 5. luku 5 Funktion alussa parametri pannaan viittaamaan samaan arvoon. luku 5 eka Funktion sijoituskäskyssä parametri pannaan viittaamaan uuteen arvoon. Itse arvoa ei kuitenkaan muuteta, joten pääohjelman muuttuja luku viittaa edelleen samaan arvoon kuin aikasemminkin. luku 5 eka Kun palataan takaisin pääohjelmaan, muuttujan luku arvo ei ole muuttunut. 10 CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 22 / 36

Esimerkki 2: parametrina lista def muuta_alkio(lista): print("lista funktiossa aluksi", lista) lista[1] = 12 print("lista funktiossa lopuksi", lista) def main(): lukulista = [5, 15, 20] print("lista paaohjelman aluksi", lukulista) muuta_alkio(lukulista) print("lista paaohjelman lopuksi", lukulista) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 23 / 36

Mitä toisen esimerkin suorituksessa tapahtuu? Pääohjelmassa luodaan lista ja pannaan muuttuja lukulista viittaamaan siihen. lukulista 5 Funktion suorituksen alussa parametri pannaan viittaamaan samaan listaan. lukulista 5 15 20 15 20 lista CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 24 / 36

Mitä toisen esimerkin suorituksessa tapahtuu? (jatkoa) Funktiossa muutetaan yhtä listan alkiota, mutta parametri lista viittaa edelleen samaan listaan kuin suorituksen alussa. Vain listan sisältö on muuttunut. lukulista 5 Pääohjelman muuttuja lukulista viittaa edelleen samaan listaan kuin aluksi. Koska tämän listan alkiota on muutettu, muutos näkyy myös pääohjelmassa. 12 20 lukulista 5 12 20 lista CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 25 / 36

Välitehtävä: mitä ohjelma tulostaa? def muuta1(para1): para1 = 8 def muuta2(para2): para2[1] = para2[0] def main(): lista1 = [4, 6, 8] lukumaara = 5 muuta1(lukumaara) muuta2(lista1) print(lukumaara) print(lista1) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 26 / 36

Kolmas esimerkki Jos kuitenkin funktio muuttaa itse listaparametria eikä listan sisältöä, muutos ei näy funktion ulkopuolella. def muuta_lista(lista): print("lista funktiossa aluksi", lista) lista = [1, 2, 5, 6] print("lista funktiossa lopuksi", lista) def main(): lukulista = [5, 15, 20] print("lista paaohjelman aluksi", lukulista) muuta_lista(lukulista) print("lista paaohjelman lopuksi", lukulista) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 27 / 36

Mitä kolmannessa esimerkissä tapahtuu? Funktion suorituksen alussa parametri lista viittaa samaan listaan kuin pääohjelman muuttuja lukulista lukulista 5 lista 15 20 CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 28 / 36

Mitä kolmannessa esimerkissä tapahtuu? Funktion suorituksen alussa parametri lista viittaa samaan listaan kuin pääohjelman muuttuja lukulista lukulista 5 lista Kun funktiossa tehdään sijoituskäsky parametriin lista, panee se parametrin viittaamaan kokonaan uuteen listaan. Se ei siis muuta vanhan listan sisältöä. lukulista 5 15 20 lista 1 15 20 2 5 6 CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 28 / 36

Listan alkiona lista Miten esitetään matriiseja Python-ohjelmissa? Ratkaisumahdollisuus: käytetään listaa, jonka kukin alkio on matriisin yksi rivi. Kutakin riviä esitetään desimaaliluvuista koostuvalla listalla. Matriisia kuvaavan listan alkiot ovat siis itsekin listoja. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 29 / 36

Esimerkki Esimerkki listan luomisesta: matriisi = [[1, 5, 8], [3, 19, 25], [11, 21, 70],\ [31, 4, 41]] matriisi viittaa siis nyt listaan, jonka alkiona on neljä listaa. 0 1 2 3 0 1 2 1 5 8 3 19 25 11 21 70 31 4 41 matriisi[1] viittaa puolestaan listaan, jonka alkioina on kolme kokonaislukua. 0 1 2 3 0 1 2 1 5 8 3 19 25 11 21 70 31 4 41 CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 30 / 36

Esimerkki Alkion matriisi[1][2] arvo on 25. 0 1 2 0 1 2 3 1 5 8 3 19 25 11 21 70 31 4 41 CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 31 / 36

Esimerkkiohjelma: matriisien yhteenlasku Seuraava esimerkkiohjelma lukee käyttäjältä kaksi matriisia ja laskee niiden summan. Ohjelmassa on omat funktiot yhden matriisin lukemiseen, kahden parametrina annetun matriisin summan laskemiseen ja yhden matriisin tulostamiseen. Pääohjelmassa on pidetty huolta siitä, että matriisit ovat samankokoisia ja että sekä rivien että sarakkeiden määrä on nollaa suurempi. Jos tätä ei tarkisteta pääohjelmassa, pitäisi vastaavat tarkistukset tehdä matriiseja käsittelevissä funktioissa. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 32 / 36

Matriisien yhteenlasku, koodi def lue_matriisi(rivilkm, sarakelkm): matriisi = [] print("anna matriisin alkiot riveittain,") print(rivilkm, "rivia ja", sarakelkm, "saraketta.") for i in range(rivilkm): rivi = [0.0] * sarakelkm for j in range(sarakelkm): rivi[j] = float(input()) matriisi.append(rivi) return matriisi CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 33 / 36

Matriisien yhteenlasku, koodi jatkuu def laske_summa(mat1, mat2): summamat = [] rivimaara = len(mat1) sarakemaara = len(mat1[0]) for i in range(rivimaara): summarivi = [0.0] * sarakemaara for j in range(sarakemaara): summarivi[j] = mat1[i][j] + mat2[i][j] summamat.append(summarivi) return summamat CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 34 / 36

Matriisien yhteenlasku, koodi jatkuu def tulosta_matriisi(matri): rivit = len(matri) sarakkeet = len(matri[0]) for i in range(rivit): tulosrivi = "" for j in range(sarakkeet): tulosrivi += "{:8.2f}".format(matri[i][j]) print(tulosrivi) def main(): print("ohjelma laskee kahden matriisin summan.") riveja = int(input("rivien lukumaara: ")) sarakkeita = int(input("sarakkeiden lukumaara: ")) CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 35 / 36

Matriisien yhteenlasku, koodi jatkuu if riveja <= 0 or sarakkeita <= 0: print("liian vahan riveja tai sarakkeita.") else: matriisi1 = lue_matriisi(riveja, sarakkeita) matriisi2 = lue_matriisi(riveja, sarakkeita) summa = laske_summa(matriisi1, matriisi2) print("matriisin") tulosta_matriisi(matriisi1) print("ja matriisin") tulosta_matriisi(matriisi2) print("summa on") tulosta_matriisi(summa) main() CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 36 / 36