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.
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 | selitys |
---|---|
a + b | yhteenlasku |
a - b | vähennyslasku |
a * b | kertolasku |
a / b | jakolasku |
a % b | jakojäännös |
a ** b | potenssilasku |
(lisätietoa oppaassa 2)
totuusarvo | milloin tosi? | milloin epätosi? |
---|---|---|
True | aina | ei koskaan |
False | ei koskaan | aina |
a == b | a on b | a ei ole b |
a <> b | a ei ole b | a on b |
a != b | a ei ole b | a on b |
a < b | a on alle b | a on ainakin b |
a <= b | a on korkeintaan b | a on yli b |
a > b | a on yli b | a on korkeintaan b |
a >= b | a on ainakin b | a on alle b |
x and y | x ja y ovat tosia | x tai y ei ole tosi |
x or y | x tai y on tosi | x eikä y ei ole tosi |
not x | x ei ole tosi | x on tosi |
a in lista | a on listassa | a ei ole listassa |
a not in lista | a ei ole listassa | a on listassa |
(lisätietoa oppaassa 3)
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)
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)
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)
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)
Ei palautusarvoa:
def funktio(a, b): print(a + b)
Palautusarvo:
def funktio(a, b): return a + b
(lisätietoa oppaassa 7)
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)
try: koodia except virhe: koodia except virhe: koodia
(lisätietoa oppaassa 8)
Seuraavassa on joukko tehtäviä, joiden avulla voit kehittää ohjelmointitaitoasi:
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]
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
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
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.
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.
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ä)
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?
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 . . . . . .
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
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
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
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
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?
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.