Kirjoittaja: Antti Laaksonen (2009).
⚠ Huomio! Tämä opas on vanhentunut. Oppaan sisältöön ei voi enää luottaa. Opas on säilytetty vain sen historiallisen arvon vuoksi. ⚠
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
koodiaif ehto: # ehto on tosi
koodia
else: # ehto ei ole tosi
koodiaif 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)
koodiaif 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
koodiawhile ehto:
break # keskeyttää silmukanwhile ehto:
continue # siirtyy silmukan alkuunfor n in lista: # käy läpi listan alkiot
koodiafor 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 nOsan 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 + bPalautusarvo:
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?
Todella hieno opas! Nyt saa vähän vaihtelua ainaiselle PHP-koodin väännölle :)
Pythonin oliohjelmointiin pääsee tutustumaan:
https://www.ohjelmointiputka.net/keskustelu/
Hyvä opas !
Vielä esimerkki py2exe käytöstä, niin voila!
Osaan kyllä noita tehdä (kiitos oppaan :D) mutta en vieläkään ymmärrä että toimiiko ohjelmat vain ja ainoastaan siinä python shellissä tai mikä onkaan??
Vähän myöhään tämän oppaan teon jälkeen luin sen, mutta oli hyvä opas ja opin paljon :) tehtävät vähän vaikeita :( mutta pakko on opetella koska saan ihan kohta tietokoneen joka tarvitsee python-taitoa.
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.