Kertaus teoriasta

Seiskaluokan asiat

PRINT

Tekstin tulostaminen tietokoneen ruudulle vaatii komennon print( ). Tulostettava teksti kirjoitetaan sulkeiden sisälle, " -merkkien väliin. 

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

* "laatikko", johon voidaan tallentaa tietoa
* 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ältä voidaan pyytää SYÖTE (eli vastaus kysymykseen) komennolla input() 
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

Lukuja voidaan vertailla vertailuoperaattoreiden avulla.
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

Valintarakenteella if-else voidaan tehdä monivaiheisia valintoja eri ehdoilla. Se vastaa suomenkielellä rakennetta jos-muutoin.

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
#lkm-muuttujaan kerätään syötettyjen lukujen määrä
lkm=0
luku=1 #alustetaan luvuksi1, jotta silmukan suoritus alkaa
print("Anna kokonaislukuja, niin lasken niiden määrän.")
print("Lopeta antamalla 0.")
while luku!=0:
 luku=int(input("Anna kokonaisluku:"))
 lkm+=1
print("Syötit",lkm-1,"lukua.") #vähennetään määrästä lopetusehdon 0 pois

 

 

Anna kokonaislukuja, niin lasken niiden määrän.
Lopeta antamalla 0.
Anna kokonaisluku: 95
Anna kokonaisluku: 73
Anna kokonaisluku: 2
Anna kokonaisluku: 0
Syötit *** lukua.

 

 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
a_lkm=0 #laskuri on nollattava alussa
mjono=input("Kirjoita sana, jossa on a-kirjaimia: ")
for merkki in mjono: #mjonon läpikäynti
 if merkki=="a" or merkki =="A": #sanassa on joko a tai A #sisennys1
 a_lkm +=1 #sisennys2
print("A-kirjaimia on",a_lkm, "kappaletta sanassa",mjono, end=".\n")

 

Kirjoita sana, jossa on a-kirjaimia: matematiikka
A-kirjaimia on *** kappaletta sanassa ***.

 

  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):
 print(luku)

15
16
17
18
19

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]
print (lista1)
lista1[1]=5 #korvataan listan1 indeksin kohdalla 1 oleva alkio
print (lista1)
lista2=[] #luodaan uusi tyhjä lista2
lista2.append(6) #lisätään listalle2 alkio
lista2.append(21) #lisätään listalle2 alkio
lista1.append(60) #lisätään listalle1 alkio loppuun
print(lista2)
print(lista1)
lista1.pop(2) #poistaa listalta1 indeksin 2 kohdalla olevan alkion
print(lista1)
lista2.remove(6) #poistaa listalta2 alkion 6
print(lista2)
print(lista1[4]) #tulostaa listan1 alkion indeksin kohdasta 4
lista3=lista1+lista2 #yhdistää listan1 ja listan2
print(lista3) 


[10, 9, 7, 8, 3]

[10, 5, 7, 8, 3]




[6, 21]
[10, 5, 7, 8, 3, 60]

[10, 5, 8, 3, 60]

[21]
60

[10, 5, 8, 3, 60, 21]

 

For-rakennetta voi käyttää listan kanssa.

KOODI

OHJELMA TULOSTAA RUUDULLE

for nimi in["Leena","Sini","Tuija","Jaana","Soile"]:
 print(nimi)

Leena
Sini
Tuija
Jaana
Soile