Kirjautuminen

Haku

Tehtävät

Oppaat: Python-ohjelmointi: Osa 12 - Yhteenveto

  1. Osa 1 - Ensimmäinen ohjelma
  2. Osa 2 - Tiedon käsittely
  3. Osa 3 - Ehtorakenteet
  4. Osa 4 - Toistorakenteet
  5. Osa 5 - Listojen käsittely
  6. Osa 6 - Merkkijonot
  7. Osa 7 - Omat funktiot
  8. Osa 8 - Tiedostot ja virheet
  9. Osa 9 - Standardikirjasto
  10. Osa 10 - Tietorakenteet
  11. Osa 11 - Alkeita edemmäs
  12. Osa 12 - Yhteenveto
  13. Liite 1 - Asennus ja käyttö

Kirjoittaja: Antti Laaksonen (2015).

Ohjelmoinnin ja Python-kielen perusasiat on nyt käsitelty!

Tämä opas kokoaa yhteen aiempien oppaiden tärkeitä asioita. Opas soveltuu asioiden kertaukseen sekä ohjelmoijan muistilapuksi. Lisäksi oppaan lopussa on joukko tehtäviä, jotka liittyvät oppaiden 7–11 asioihin.

Muuttuja

nimi = "Henrikki"      # merkkijono
vuosi = 1672           # kokonaisluku
pii = 3.14159          # liukuluku
virhe = False          # totuusarvo
luvut = [1, 2, 3]      # lista
sanat = {"ikä": "age"} # sanakirja

(lisätietoa oppaassa 2)

Laskutoimitus

laskutoimitusselitys
a + byhteenlasku
a - bvähennyslasku
a * bkertolasku
a / bjakolasku
a % bjakojäännös
a ** bpotenssilasku

(lisätietoa oppaassa 2)

Totuusarvo

totuusarvomilloin tosi?milloin epätosi?
Trueainaei koskaan
Falseei koskaanaina
a == ba on ba ei ole b
a <> ba ei ole ba on b
a != ba ei ole ba on b
a < ba on alle ba on ainakin b
a <= ba on korkeintaan ba on yli b
a > ba on yli ba on korkeintaan b
a >= ba on ainakin ba on alle b
x and yx ja y ovat tosiax tai y ei ole tosi
x or yx tai y on tosix eikä y ei ole tosi
not xx ei ole tosix on tosi
a in listaa on listassaa ei ole listassa
a not in listaa ei ole listassaa on listassa

(lisätietoa oppaassa 3)

Ehtorakenne

if ehto:            # ehto on tosi
    koodia
if ehto:            # ehto on tosi
    koodia
else:               # ehto ei ole tosi
    koodia
if ehto1:           # ehto1 on tosi
    koodia
elif ehto2:         # ehto2 on tosi (ja ehto1 ei)
    koodia
elif ehto3:         # ehto3 on tosi (ja ehto1 ja ehto2 eivät)
    koodia
if ehto1:           # ehto1 on tosi
    koodia
elif ehto2:         # ehto2 on tosi (ja ehto1 ei)
    koodia
elif ehto3:         # ehto3 on tosi (ja ehto1 ja ehto2 eivät)
    koodia
else:               # mikään ehdoista ei ole tosi
    koodia

(lisätietoa oppaassa 3)

Silmukka

while ehto:         # jatkuu niin kauan, kuin ehto on tosi
    koodia
while ehto:
    break           # keskeyttää silmukan
while ehto:
    continue        # siirtyy silmukan alkuun
for n in lista:     # käy läpi listan alkiot
    koodia
for n in range(10): # käy läpi luvut 0-9
    koodia

(lisätietoa oppaassa 4)

Lukuväli

merkintälukuväli
range(10)0, 1, 2, 3, 4, 5, 6, 7, 8, 9
range(5, 15)5, 6, 7, 8, 9, 10, 11, 12, 13, 14
range(-6, 3)-6, -5, -4, -3, -2, -1, 0, 1, 2
range(24, 16, -1)24, 23, 22, 21, 20, 19, 18, 17
range(3, 20, 2)3, 5, 7, 9, 11, 13, 15, 17, 19
range(35, 4, -4)35, 31, 27, 23, 19, 15, 11, 7

(lisätietoa oppaassa 4)

Lista ja merkkijono

Määrittely:

lista = [1, 2, 3, 4, 5]
mjono = "abcde"

Pituus:

print(len(lista))          # 5 alkiota
print(len(mjono))          # 5 merkkiä

Yhdistys:

print([1, 2] + [3, 4, 5])  # [1, 2, 3, 4, 5]
print("ab" + "cde")        # "abcde"

Toisto:

print([1, 2, 3] * 3)       # [1, 2, 3, 1, 2, 3, 1, 2, 3]
print("abc" * 3)           # "abcabcabc"

Läpikäynti:

for n in lista:           # n = 1, 2, 3, 4, 5
    print(n)
for n in mjono:           # n = "a", "b", "c", "d", "e"
    print(n)

Osan erotus:

print(lista[1])            # 2
print(lista[-3])           # 3
print(mjono[1])            # "b"
print(mjono[-3])           # "c"
print(lista[1:4])          # [2, 3, 4]
print(mjono[1:4])          # "bcd"
print(lista[-3:5])         # [3, 4]
print(mjono[-3:5])         # "cd"
print(lista[:3])           # [1, 2, 3]
print(mjono[:3])           # "abc"
print(lista[-2:])          # [4, 5]
print(mjono[-2:])          # "de"

Mukanaolo:

if a in lista:            # a on osa listaa
   koodia
if a in mjono:            # a on osa merkkijonoa
   koodia

(lisätietoa oppaassa 5 ja oppaassa 6)

Funktio

Ei palautusarvoa:

def funktio(a, b):
    print(a + b)

Palautusarvo:

def funktio(a, b):
    return a + b

(lisätietoa oppaassa 7)

Tiedosto

Tiedoston lukeminen (kaikki rivit):

tiedosto = open("rivit.txt", "r")
rivit = tiedosto.readlines()
tiedosto.close()

Tiedoston lukeminen (rivi kerrallaan):

tiedosto = open("rivit.txt", "r")
while True:
    rivi = tiedosto.readline()
    if rivi == "":
        break
    # rivin käsittely
tiedosto.close()

Tiedostoon kirjoittaminen:

tiedosto = open("rivit.txt", "w")
tiedosto.write("Rivi 1\n")
tiedosto.write("Rivi 2\n")
tiedosto.write("Rivi 3\n")
tiedosto.close()

(lisätietoa oppaassa 8)

Virheenkäsittely

try:
    koodia
except virhe:
    koodia
except virhe:
    koodia

(lisätietoa oppaassa 8)

Tehtäviä

Seuraavassa on joukko tehtäviä, joiden avulla voit kehittää ohjelmointitaitoasi:

  1. Kirjoita ohjelma, joka järjestää listan ilman sort-metodia.

    Ohjelman runko voi olla seuraava:

    lista = [4, 1, 2, 9, 5, 6]
    
    # listan järjestävä koodi
    
    print(lista)      # [1, 2, 4, 5, 6, 9]
  2. Kirjoita ohjelma, joka ilmoittaa sekuntimäärän päivinä, tunteina, minuutteina ja sekunteina.

    Ohjelman tulostus voi olla seuraava:

    Kuinka monta sekuntia? 12785
    0 päivää
    3 tuntia
    33 minuuttia
    5 sekuntia
  3. Kirjoita ohjelma, joka jakaa annetun euromäärän kolikoiksi niin, että kolikoita on mahdollisimman vähän.

    Ohjelman tulostus voi olla seuraava:

    Anna euromäärä: 5,70
    2 kpl 2 e
    1 kpl 1 e
    1 kpl 50 snt
    1 kpl 20 snt
  4. Kirjoita ohjelma, joka muuttaa tiedoston rivien järjestyksen päinvastaiseksi seuraavan esimerkin mukaisesti.

    Tiedoston sisältö ennen ohjelman suoritusta:

    Tästä alkaa tiedosto.
    Sitten tulee toinen rivi.
    Yhteensä rivejä on kolme.

    Tiedoston sisältö ohjelman suorituksen jälkeen:

    Yhteensä rivejä on kolme.
    Sitten tulee toinen rivi.
    Tästä alkaa tiedosto.
  5. Kirjoita ohjelma, jolle annetaan tiedoston nimi ja hakusana ja joka tulostaa tiedoston kaikki rivit, jotka sisältävät hakusanan.

    Ohjelman tulostus voi olla seuraava:

    Anna tiedosto: tarina.txt
    Anna hakusana: Henrikki
    
    Rivi 1: Henrikki on urhea ritari,
    Rivi 3: Henrikki on tämän pelin sankari.
    Rivi 4: Nyt Henrikki on 25 vuotta vanha,
    
    Yhteensä 3 hakutulosta.
  6. Kirjoita ohjelma, joka etsii suomen kielen sanalistasta kaikki palindromisanat eli sanat, jotka ovat samat alusta loppuun ja lopusta alkuun luettuina. Suomen kielen sanalista esiintyi oppaassa 8.

    Ohjelman tulostus voi olla seuraava:

    ajaja
    akka
    ala
    alla
    (paljon lisää rivejä)
  7. Kirjoita ohjelma, joka sekoittaa lauseen sanoja niin, että joka sanan ensimmäinen ja viimeinen kirjain pysyvät paikallaan ja muiden järjestys on satunnainen.

    Ohjelman tulostus voi olla seuraava:

    Anna lause: Mitähän tämä ohjelma tekee?
    Mäihätn tämä ohejmla teeke?
  8. Kirjoita ohjelma, joka laskee, kuinka monella tavalla kahdeksan kuningatarta voidaan sijoittaa shakkilaudalle niin, että yksikään kuningatar ei uhkaa toista. Tässä on yksi tapa sijoittaa kuningattaret laudalle:

    . . . . K . . .
    . . . . . . K .
    . . . K . . . .
    K . . . . . . .
    . . K . . . . .
    . . . . . . . K
    . . . . . K . .
    . K . . . . . .
  9. Kirjoita ohjelma, joka tulostaa kaikki sanat, jotka saadaan järjestämällä annetun sanan kirjaimet uudestaan.

    Ohjelman tulostus voi olla seuraava:

    Anna sana: sana
    
    aans
    aasn
    anas
    ansa
    asan
    asna
    naas
    nasa
    nsaa
    saan
    sana
    snaa
  10. Kirjoita ohjelma, joka tulostaa kaikki eri ryhmät, jotka voidaan muodostaa annetusta määrästä henkilöitä.

    Ohjelman tulostus voi olla seuraava:

    Kuinka monta henkilöä? 4
    
    1
    2
    3
    4
    1 ja 2
    1 ja 3
    1 ja 4
    2 ja 3
    2 ja 4
    3 ja 4
    1, 2 ja 3
    1, 2 ja 4
    1, 3 ja 4
    2, 3 ja 4
    1, 2, 3 ja 4
  11. Alkulukujen haku oppaassa 7 ei ole kovin nopea. Toteuta nopeampi ohjelma, joka ilmoittaa annettua ylärajaa pienempien alkulukujen määrän. Kuinka nopeaksi saat ohjelman, kun yläraja on miljoona?

    Ohjelman tulostus voi olla seuraava:

    Yläraja: 50
    15 alkulukua
  12. Reitti ulos labyrintista oppaassa 11 ei ole aina lyhin. Toteuta parannettu ohjelma, joka löytää aina lyhimmän reitin.

    Ohjelman tulostus voi olla seuraava:

    Ulos pääsee näin:
    Mene alas
    Mene oikealle
    Mene oikealle
    Mene oikealle
    Mene ylös
    Mene oikealle

Loppusanat

Toivottavasti tästä opassarjasta on ollut sinulle hyötyä Python-ohjelmoinnin opettelussa! Voit lähettää oppaista palautetta sähköpostitse osoitteeseen antti.laaksonen@ohjelmointiputka.net. Mistä aiheista haluaisit lukea Ohjelmointiputkan tulevista oppaista?


Kirjoita kommentti

Huomio! Kommentoi tässä ainoastaan tämän oppaan hyviä ja huonoja puolia. Älä kirjoita muita kysymyksiä tähän. Jos koodisi ei toimi tai tarvitset muuten vain apua ohjelmoinnissa, lähetä viesti keskusteluun.

Muista lukea kirjoitusohjeet.
Tietoa sivustosta