Kertaus teoriasta
Seiskaluokan asiat
ESIMERKKI.
print("Mukavaa että alat opetella koodaamista")
Jos haluat tekstin eri riveille, niin kirjoita joka rivi omalla print( ) komennolla TAI
print(""" Tässä
teksti
tulee
usealle
riville.""")
HUOM! Koodin sekaan voit kirjoittaa itsellesi kommenttirivejä eli selityksiä mitä koodilla tarkoitat laittamalla rivin alkuun #-merkin eli risuaita-merkin. Ohjelma ei tulkkaa eli suorita sellaista riviä jonka alussa on #-merkki.
|
KOODI |
OHJELMA TULOSTAA RUUDULLE |
|
print("Mukavaa että alat opetella ohjelmointia!") |
Mukavaa että alat opetella ohjelmointia! |
|
print("Matti Mallikas") |
Matti Mallikas |
|
print("Matti") print("Mallikas") |
Matti Mallikas |
|
print(2*4) #Tämä koodi laskee kertolaskun, ei laiteta lainausmerkkejä! |
8 |
MUUTTUJA
* sen ARVO asetetaan = merkillä (eli yhtäsuuruusmerkillä)
* siihen talletettavalla tiedolla on aina jokin tyyppi
| STR | merkkijono |
| INT | kokonaisluku |
| FLOAT | desimaaliluku |
| KOODI |
OHJELMA TULOSTAA RUUDULLE |
| x=3 y=6 print(x+y) |
9 |
| x="koo" y="di" print(x+y) print(x,y) |
koodi koo di |
SYÖTE
Käyttäjän antama vastaus pitää tallentaa muuttujan arvoksi.
ESIM.
luku1=int(input("Anna kokonaisluku:"))
#luku1= tallentaa käyttäjän antaman vastauksen muuttujan luku1 arvoksi
#int() kertoo tulkille vastauksen tyypin olevan kokonaisluku
#input() pyytää syötteen
#lainausmerkkien välissä oleva teksti tulostuu ruudulle kysymykseksi, johon käyttäjä voi vastata.
Huomaa että int() komento ennen input() komentoa kertoo tulkille että luvut ovat kokonaislukuja.
Pelkkä input() komento lukee syötteen merkkijonoksi.
| KOODI | OHJELMA TULOSTAA RUUDULLE |
| #koodi, joka pyytää kaksi kokonaislukua, laskee niiden tulon ja tulostaa vastauksen luku1=int(input("Anna kokonaisluku:")) luku2=int(input("Anna toinen kokonaisluku:")) print(luku1*luku2) |
Anna kokonaisluku: Anna toinen kokonaisluku: (lukujen kertolaskun tulos) |
| KOODI | OHJELMA TULOSTAA RUUDULLE |
| #koodi, joka muodostaa käyttäjän antamista sanoista yhdyssanan sana1=str(input("Anna sana:")) sana2=str(input("Anna toinen sana:")) print("Antamistasi sanoista muodostuu yhdyssana",sana1+sana2) |
Anna sana: KÄSI Anna toinen sana: LAUKKU Antamistasi sanoista muodostuu yhdyssana KÄSILAUKKU |
VERTAILU
Tulokseksi saadaan joko tosi (true) tai epätosi (false).
Voidaan tulostaa pelkästään vertailun tulos eli true/false
TAI tehdä jatkotoimia, esimerkiksi tulostaa jokin teksti.
| vertailu | tosi (true), kun |
| a==b | a ja b ovat yhtäsuuria |
| a>b | a on suurempi kuin b |
| a>=b | a on suurempi tai yhtäsuuri kuin b |
| a<b | a on pienempi kuin b |
| a<=b | a on pienempi tai yhtäsuuri kuin b |
| a<>b a!=b |
a ja b ovat erisuuria |
| KOODI | OHJELMA TULOSTAA RUUDULLE |
| #koodi, joka tulostaa vertailun tuloksen print(3>5) |
false |
VALINTARAKENTEET if-else JA if-elif-else
| if[ehto]: ........[if-osion komennot] else: ........[else-osion komennot] |
(HUOM. Poista pisteet oikeaa koodia kirjoittaessasi, sisennys jouduttu nyt toteuttamaan niitä käyttäen)
Jos ehto on tosi (true) niin suoritetaan if-osion komennot, muulloin (eli jos ehto on epätosi (false)) suoritetaan else-osion komennot.
On tärkeää huomata, että Pythonissa välilyönti tai sisennys määrittelee mihin kokonaisuuteen rivi loogisesti kuuluu.
Ne koodin osat, jotka halutaan samaan kokonaisuuteen, on sijoitettava samalle sisennystasolle. Sisennyksien sääntöjä on noudatettava!
| KOODI | OHJELMA TULOSTAA RUUDULLE | ||
| luku=int(input("Anna kokonaisluku väliltä 1-10:")) if luku>5: ..................print("Luku on suurempi kuin 5.") else: .........print("Luku on pienempi kuin 5.") print("Että tällä tavalla!") |
vaihtoehdot kuvattuna alla olevissa soluissa... |
||
| #Punainen numero on käyttäjän antama numero. | Anna kokonaisluku väliltä 1-10: 7 Luku on suurempi kuin 5. Että tällä tavalla! |
Anna kokonaisluku väliltä 1-10: 4 Luku on pienempi kuin 5. Että tällä tavalla! |
Anna kokonaisluku väliltä 0-10: 5 Luku on pienempi kuin 5. Että tällä tavalla! |
Koodin loppuun kirjoitettu print() komennon teksti tulostuu joka kerta, koska se on kirjoitettu heti rivin alkuun.
Yllä olevassa taulukossa esiin tuleva "virhe" (annettaessa luvuksi 5 tulostuu virheellinen tieto, että luku on pienempi kuin 5, poistuu käyttämällä valintarakennetta if-elif-else.
| if[1.ehto]: ........[if-osion komennot] elif:[2.ehto]: ........[elif-osion komennot] elif[3.ehto]: .........[elif-osion komennot] else: ........[else-osion komennot] |
Tämä rakenne antaa enemmän mahdollisuuksia monitasoiseen valintaan. Se vastaa suomenkielellä rakennetta jos-muutoin jos-muutoin.
(HUOM. Poista pisteet oikeaa koodia kirjoittaessasi, sisennys jouduttu nyt toteuttamaan niitä käyttäen.)
| KOODI | OHJELMA TULOSTAA RUUDULLE | ||
| luku=int(input("Anna kokonaisluku väliltä 1-10:")) if luku>5: ..................print("Luku on suurempi kuin 5.") elif luku<5: .........print("Luku on pienempi kuin 5.") else: .........print("Luku on 5.") |
vaihtoehdot kuvattuna alla olevissa soluissa... |
||
| #Punainen numero on käyttäjän antama numero. | Anna kokonaisluku väliltä 1-10: 7 Luku on suurempi kuin 5. |
Anna kokonaisluku väliltä 1-10: 4 Luku on pienempi kuin 5. |
Anna kokonaisluku väliltä 0-10: 5 Luku on 5. |
Kasiluokan asiat
round() pyöristää annetun luvun halutulla tarkkuudella
esimerkiksi osamaara=round(luku1/luku2,3) Laskee lukujen 1 ja 2 osamäärän ja pyöristää vastauksen 3 desimaalin tarkkuuteen.
Desimaalimerkkinä käytetään pistettä (.) eikä pilkkua (,).
While-toistorakenne
While-lause suorittaa toistolohkon lauseita niin kauan kuin ehto tosi (True). Toistokertojen määrää ei tiedetä.
Jos ohjelmaan syntyy päättymätön silmukka eli se ei lopu, niin saat pysäytettyä ohjelman näppäinyhdistelmällä Ctrl + C.
|
KOODI |
OHJELMA TULOSTAA RUUDULLE |
|
#kysytään lukuja, kunnes syötetään luku 0 |
Anna kokonaislukuja, niin lasken niiden määrän.
|
punaiset numerot = käyttäjän antama luku ajoikkunassa
*** = ohjelman tulostama vastaus
For-toistorakenne
For-lause suorittaa ennalta määrätyn määrän toistolohkoa.
For-lausekkeessa tulee olla laskurimuuttuja, ohjelmalle varattu sana in, silmukalla läpikäytävä peräkkäinen tietorakenne. Tietorakenne voi olla merkkijono, lista tai lukujono. Määrittely päättyy kaksoispisteeseen. Toistettava lauselohko sisennetään.
Ohjelman koodi on seuraava.
for alkio in rakenne:
lauselohko
In testaa alkion olemassaolon rakenteessa. For-rakenteessa on automaattisesti etenevä sisäänrakennettu silmukka. For-lauseessa ei ole lopetusehtoa ja silmukka loppuu, kun rakenne on käyty lävitse. For-rakenteeseen voi myös lisätä else-haaran.
|
KOODI |
OHJELMA TULOSTAA RUUDULLE |
|
# lasketaan a-kirjainten lukumäärä for-silmukan avulla |
Kirjoita sana, jossa on a-kirjaimia: matematiikka
|
punaiset kirjaimet = käyttäjän antama sana ajoikkunassa
*** = ohjelman tulostama tieto
Range-funktio
Range-komennolla voidaan asettaa toistokertojen määrä. Funktio luo lukujonon, jolla voidaan määrätä for-silmukan toistokertojen määrä.
Funktion koodi on seuraava.
range(aloitus, lopetus, askel)
Lopetuskohdaksi määritelty luku ei kuulu lukujonoon. Esimerkiksi range(15,20) muodostaa lukujonon luvusta 15 lukuun 19 saakka. Jos askeleen pituutta ei määrätä, luku suurenee yhdellä.
|
KOODI |
OHJELMA TULOSTAA RUUDULLE |
|
for luku in range(15,20): |
15 |
Lista
Lista muodostuu peräkkäin olevista alkioista. Lista on mutatoituva eli siihen voidaan lisätä, poistaa tai muuttaa alkioita. Tämä ominaisuus erottaa listan merkkijonosta, johon merkkejä ei voida luomisen jälkeen lisätä tai poistaa.
Listan alkiot laitetaan hakasulkeisiin. [ ] Hakasulkeet saat painamalla alt gr-näppäintä ja numeroa 8 tai 9.
Merkkijonojen tapaan myös lista on indeksoitu alkamaan nollasta.
|
indeksi |
0 |
1 |
2 |
3 |
|
lista1 |
1 |
2 |
4 |
6 |
|
lista2 |
Sari |
Leo |
Essi |
Rami |
Yksittäinen alkio voidaan poimia [?]-operaattorilla. ?=alkion indeksi
Listan alkio voidaan muuttaa [?]=x x=listan alkiolle annettu uusi arvo
Lista voi olla myös tyhjä. lista=[]
Uusia alkioita voidaan lisätä listaan append-metodilla lista.append(x) x=listan uusi alkio
Alkioita voi poistaa joko pop- tai remove-metodilla.
Pop-metodissa annetaan poistettavan alkion indeksi ja remove-metodissa annetaan alkion arvo.
Listalta voidaan tulostaa alkio myös indeksin perusteella. print(lista[?]) ?=alkion indeksi
Listat voi yhdistää myös yhteenlaskemalla.
|
KOODI |
OHJELMA TULOSTAA RUUDULLE |
|
lista1=[10,9,7,8,3] |
|
For-rakennetta voi käyttää listan kanssa.
|
KOODI |
OHJELMA TULOSTAA RUUDULLE |
|
for nimi in["Leena","Sini","Tuija","Jaana","Soile"]: |
Leena |