Ohjaus eli kontrollirakenteet
Kolme perusrakennetta
Ohjelmoinnissa käytetään kolmea perusrakennetta:
- Peräkkäis-rakenne
- Ehto-rakenne
- Toisto-rakenne.
Ehto-rakenteet
if-ehtolause
Valintarakenteista if-lausetta käytetään testaamaan onko sulkeissa annettu lauseke kokonaisuudessaan tosi tai epätosi. Ainoastaan siinä tapauksessa, että ehtolause on tosi, suoritetaan ehtolauseen jälkeinen lauseke tai lauselohko. Suoritettavat lauseet sisennetään! Oletuksena Pythonissa on että sisennys on neljä välilyöntiä.
if ehto:
lause
lause
if-lauseeseen on mahdollisuus liittää else-lohko, joka suoritetaan, jos varsinainen if-lauseen ehto ei toteudu.
if ehto:
lause1
lause2
else
lause_n1
lause_n2
Ehtolauseita voidaan myös ketjuttaa. Tällöin toteutuneen ehdon jälkeen ei enään tarkisteta jäljelle jääneitä ehtoja. Tällöin puhutaan if elif -lauseryhmästä.
if ehto1:
komento
elif ehto2:
komento
elif ehto3:
komento
else:
komento
Tässä muutamia esimerkkejä:
#esimerkki 1
money = 8
if money < 10:
print("Money is less than 10 euros. You can not withdraw money!");
#esimerkki 2
#if - elif - else
txt = input("Anna jokin luku: ")
number = int(txt)
if number == 10:
print("numero on 10")
elif number < 10:
print("numero on pienempi kuin 10")
elif number >= 20:
print("numero on suurempi tai yhtäsuuri kuin 20")
else:
print("numero on 11 ja 19 välissä")
num = int(input("Anna jokin nollaa suurempi ja kymmentä pienempi luku "))
if (num > 0 and num < 10):
print("Annoin kelvollisen luvun")
Ehtolauseiden loogiset operaattorit
Operaattori | Tehtävä | Esimerkki |
---|---|---|
== | yhtäkuin | if number == 10: |
!= | erisuuri kuin | if number != 10: |
< | pienempi kuin | if number < 10: |
> | suurempi kuin | if number > 10 |
<= | pienempi tai yhtäsuuri kuin | if number <= 10: |
>= | suurempi tai yhtäsuuri kuin | if number >= 10: |
not | ei ole tosi | if not valid: |
Zen
Ehtorakenteista muodostuu ohjelman logiikka, eli toisin sanottuna sen älykkyys. Vaikka näennäisesti ehtolauseet on melko helppo ymmärtää ne voivat väärin käytettynä olla erittäin monimutkaisia ja vaikeita. Myös suurin osa loogisista ohjelmointivirheistä tapahtuu ehto- ja toistolauseissa. Joten ole tarkkana kun kirjoitat ehtolauseita ;-)
Toistorakenteet
while-toistolause
While-silmukka on yksinkertainen toistorakenne. Siinä testataan onko ehtolause tosi ja silmukan sisällä olevien lauseiden toistaminen jatkuu niin kauan aikaa, kun ehto pysyy totena. Heti kun ehto ei enään ole voimassa, sovelluksen suoritus jatkuu toistolausetta seuraavasta lauseesta.
while ehto:
clause1
clause2
clauseX
Alla oleva esimerkki tulostaa luvut 1-10:
count = 1
while count <= 10:
print(count)
count+=1
for-toistolause
Toistorakennetta for käytetään yleensä yksinkertaisissa toistolauseissa, joissa toistomäärä on tiedossa. for-silmukka toistaa lausetta tai lauseita, kunnes toistoehto ei ole enää voimassa. for-silmukkaa käytetään käymään läpi haluttu sekvenssi joka voi olla lista, tuple, sanakirja, joukko tai merkkijono. Python kielen for silmukka on yksinkertaisempi kuin muiden ohjelmointikielten ja toimii kuin iteraattorimenetelmä muissa olio-ohjelmointikielissä. for-silmukan avulla voimme suorittaa joukon lauseita, kerran jokaiselle listan, tuplen jne. kohteelle.
Alla oleva esimerkki tulostaa kuusi lukua, luvut nollasta viiteen:
for x in range(6):
print(x)

Alla oleva esimerkki tulostaa yhdestä viiteen tähtimerkkiä:
a = ""
for i in range(5):
a = a + "*"
print(a)

Alla oleva esimerkki tulostaa names-listan nimet konsolille:
names = ["Annika", "Jack", "Mårten"]
for x in names:
print(x)

Vinkki for-loopilla voi käydä läpi myös merkkijonon, kokeile mitä tekee seuraava koodi:
for x in "Python Rules": print(x)
break-hyppylause
break-lauseella voidaan katkaista toistolauseen toisto. while ja for toistolauseiden sisällä on mahdollista käyttää break ja continue kontrollilauseita.
break
katkaisee silmukan suorituksen ja poistuu silmukkakoodista suorittamatta silmukan loppua.
while True:
luku = int(input("Anna jokin kokonaisluku "))
if luku < 0:
print("poistutaan loppista, hei hei")
break
else:
print("Annoit luvun ", luku)
#ohjelman suoritus jatkuu täältä jos annetaan nollaa pienempi luku
print("Taas mennään...")