Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0
Wiki Markup
h1. Python

Julkaistu vuonna 1990 ja sen nimi perustuu Monty Pythonin lentävään sirkukseen. Nimi Python koettiin tarpeeksi lyhyenä ja mysteerisenä, joten se päätettiin jättää siihen muotoon.

Python on monipuolinen, tulkattava ohjelmointikieli. Pythonia pidetään helppona oppia sen yksinkertaisen syntaksin ja korkean tason tietorakenteiden takia.



Luonteenomaista Pythonille pyrkimys selkeään ja luettavaan koodiin. Kauneuden ja yksinkertaisuuden tavoittelu onkin osa suunnittelufilosofiaa.

2000-luvun alussa syntyi alkuperäisestä Python kielestä jalostettu Python 2.0, joulukuussa 2008 julkaistiin Python 3.0

Kehittäjä Guido van Rossum on pysynyt kielen kehityksessä koko sen historian ajan keskeisessä roolissa.

h2. Esimerkki yksinkertaisesta ohjelmasta

{code}

Python

Julkaistu vuonna 1990 ja sen nimi perustuu Monty Pythonin lentävään sirkukseen. Nimi Python koettiin tarpeeksi lyhyenä ja mysteerisenä, joten se päätettiin jättää siihen muotoon.

Python on monipuolinen, tulkattava ohjelmointikieli. Pythonia pidetään helppona oppia sen yksinkertaisen syntaksin ja korkean tason tietorakenteiden takia.

Luonteenomaista Pythonille pyrkimys selkeään ja luettavaan koodiin. Kauneuden ja yksinkertaisuuden tavoittelu onkin osa suunnittelufilosofiaa.

2000-luvun alussa syntyi alkuperäisestä Python kielestä jalostettu Python 2.0, joulukuussa 2008 julkaistiin Python 3.0

Kehittäjä Guido van Rossum on pysynyt kielen kehityksessä koko sen historian ajan keskeisessä roolissa.

Esimerkki yksinkertaisesta ohjelmasta

Code Block
def main():
	print "Hello, World!"

main()
{code}
Tai yksinkertaisemmin (ilman funktion määrittelyä):

...



{code
}print "Hello, World!"

Pythonin keskeiset piirteet

Voi käyttää oliopohjaisena, proseduraalisena tai funktionaalisena ohjelmointikielenä

Python on dynaamisesti tyypittävä ohjelmointikieli

Tulkattava joko tulkki + komentotulkilla tai käytettävä työkalua (esim. Eclipse pydev-plugarilla)

Muuttujat

Code Block
{code}
h2. Pythonin keskeiset piirteet

Voi käyttää oliopohjaisena, proseduraalisena tai funktionaalisena ohjelmointikielenä

Python on dynaamisesti tyypittävä ohjelmointikieli

Tulkattava joko tulkki + komentotulkilla tai käytettävä työkalua (esim. Eclipse pydev-plugarilla)

h2. Muuttujat

{code}nimi="Vesa"
print"Hei,",nimi
{code}
Määrittää muuttujalle nimi arvoksi merkkijonon "Vesa"

...



{code
}nimi=raw_input("Kerro nimesi:")
print"Hei,",nimi
{code}
Tulostaa "Kerro nimesi" ja sijoittaa syötteen muuttujaan

...



h2. Syötteen ottaminen

...



input() voi ottaa vain kokonaislukuja tai liukulukuja, merkkijonoja vain jos se on sitaateissa\!

...



Etuna, että tallentaa oikeantyyppisenä, eikä tyyppimuutos tarpeen.

...



raw_input() tallentaa kaiken merkkijonoina, mutta sitaatteja ei tarvita.

...

Merkkijonot

Sitaatit ja lainausmerkit samanarvoisia, mutta eivät toimi ristiin.
"kissa'

...



h2. Merkkijonot


Sitaatit ja lainausmerkit samanarvoisia, mutta eivät toimi ristiin.
"kissa'

Saatetaan tarvita ohjausmerkkiä:
'vaa'alla'  'vaa\'alla'

...

Ohjausmerkit

...



h3. Ohjausmerkit

Tulostus useammalle riville: \n

...


{code
}print "Tama talle.\n Ja tama toiselle.
{code}
Tulostaa:

...


{{Tama talle.

...

}}
{{Ja tama toiselle

...

Tyyppimuutokset

...

.}}

h3. Tyyppimuutokset

Sisäänrakennetuilla funktioilla kuten int(), str(), float()

...



{{>>> int("32")

...

}}
{{32}}

{{>>> int("Hello")

...

}}
{{ValueError: invalid literal for int(): Hello

...

}}

Muuttaa siis liukulukuja kokonaisluvuksi, mutta ei osaa pyöristää

...



{{>>> int(3.99999)

...

}}
{{3}}

Float() muuttaa kokonaislukuja ja numeerisia merkkijonoja liukuluvuiksi:

...



{{>>> float(32)

...

}}
{{32.0

...

}}

{{>>> float("3.14159")

...

}}
{{3.14159

...

}}

Str() muuttaa annettuja syötteitä merkkijonoiksi:

...



{{>>> str(32)

...

}}
{{'32'

...

}}

{{>>> str(3.14149)

...

}}
{{'3.14149'

...

Muotoiltu tulostus

Muuttujaa voidaan kutsua tulostukseen

Code Block
}}

h3. Muotoiltu tulostus

Muuttujaa voidaan kutsua tulostukseen

{code}print "diipadaa", kissa, "jadijada"
print "metsastys"+koira+"koulutus"
{code}
Esimerkissä muuttuja "kissa" on eroteltu muusta tulostuksesta pilkuilla. Pilkku ohjaa tulostusta siten, että se sijoittaa välilyönnin molemmin puolin muuttujaa. Muutuja "koira" taas on sijoitettu siten, että sen ympärille ei tule välejä, jolloin tulostus on yhdyssana.

...



{code
}print "kaapissa on %.3f olutta" % (maara)
{code}
Tässä esimerkissä muuttuja on sijoitettu tulostuskäskyn sijaan ja sille on annettu määreeksi kolme desimaalia.

h2.

...

Ohjausrakenteet

If

Code Block
 Ohjausrakenteet

h3. If

{code}numero = 23
arvaus = input('Anna kokonaisluku : ')
if arvaus == numero:
	print 'Arvasit oikein!'
	print "Peli päättyy tähän"
elif arvaus < numero:
	print 'Luku on suurempi kuin arvaus'
else:
	print 'Luku on pienempi kuin arvaus'
{code}
Pythonin rakenne "elif" on kätevä käyttää, mikäli halutaan tutkia useiden argumenttien todenperäisyyttä. Rakenne vaatii aina kuitenkin "else"-rakenteen

...



h3. Toistorakenne While

...



{code
}hevi = True
oletus = "ei"
while hevi:
	arvaus = input('onko hevi kaupallista? : ')
	if arvaus == oletus:
		print 'Hevi on edelleen true'
		print "Poppia ei tueta!"
	else:
		print 'Hevista tuli poppi-gagaa'
		hevi = False
else:
	print "Hevi ei ole enaa True, vaan", hevi
{code}
Ylläolevassa esimerkissä on ensin määritelty muuttujalle "hevi" arvo True, jota käytetään hyväksi toistossa. While-rakenne toistaa silmukkaa kunnes se katkaistaan ohjauskomennolla tai kunnes muuttuja "hevi":n arvo on False

...



h3. Toistorakenne For

...



{code
}for i in range(1, 5):
	print i
else:
	print 'Silmukka on päättynyt.‟

Ohjauskomennot

Code Block

{code}
h3. Ohjauskomennot

{code}eka = "rahat"'
toka = "henki"
while True:
	vastaus = raw_input("Rahat tai henki!\n")
	if vastaus == eka:
		print "Sulla on enemmankin!"
		continue
	elif vastaus == toka:
		Print "Bang!"
		break
	else:
		print "Hopohopo"
		pass
{code}
Ylläolevassa esimerkissä on käytetty ohjauskomentoja "continue", "break" ja "pass". Varsinaisesti esimerkki ei tarvitsi ohjausrakenteitam koska kaikille if-rakenteen osioilla on argumentti. Kuitenkin "break"-komento katkaisee suorituksen, jolloin ei tarvitse määrittää erikseen määritellä muuttujaa, jonka arvo olisi True. "pass"-komento on kätevä, mikäli syntaksi vaatii argumentin.

h2.

...

Funtiot

Parametrit

Code Block
 Funtiot

h3. Parametrit

{code}def sanoTerve(nimi, osasto, vuosikurssi):
	print "Terve vaan "+nimi+"!"
	print "Ai, sä olet",+osasto+","
	print "Ja että vuosi nro.",vuosikurssi

sanoTerve("Vesku","Kone","4" )
{code}
Ylläolevassa esimerkissä ensin määritellään funktio "sanoTerve", jonka jälkeen funktiolle on määritelty parametrit "nimi", "osasto" ja "vuosikurssi". Funktion sisällä kutsutaan parametrejä (muuttujia) ja sijoitetaan tulostuskomennon sisään. Pääohjelmassa kutsutaan funtktio ja annetaan parametreille arvot.

...



h3. Arvon palautus

...



{code
}def pullot():
	maara = float(raw_input("Paljonko sulla on  tolkkeja?\n"))
	arvo = 0.15
	rahat = maara * arvo
	return rahat

def main():
	print "Jummijammi!", rahat, "euroa, tallahan saa wappusimaa!"

rahat = pullot()
main()
{code}
Ohjelmassa määritellään funktiot "pullot()" ja "main()" (näillä ei ole argumentteja - argumentit eivät ole välttämättömiä\!). Funtio pullot palauttaa muuttujan "rahat" arvon. Pääsuorituksen tasolla on määritelty muuttuja "rahat" siten, että se suorittaa funtion "pullot()". Tämän jälkeen palautettua arvoa käyttäen kutsutaan funtio "main()", jossa käytetään muuttujan "rahat" arvoa.

h2.

...

 Luokat

...



{code
}class Mies:
	etunimi = "Jamppa"
	sukunimi = "Perus"
	ika = 34
	ammatti = "insinööri"

	def sano(self):
		Print "Hyvaa kohta on valmista"

mies1 = Mies()
Mies2 = Mies()

mies1.etunimi = "Kalevi"
mies1.sukunimi = "Karvajalka"
mies1.ika = 42
mies1.ammatti = "pommikoneen rahastaja"
mies1.sano_hei()

print mies1.etunimi, mies1.sukunimi,"on"
print mies1.ika, "vuotta vanha", mies1.ammatti
print "ja sanoo", mies1.sano_hei()
print mies2.etunimi, mies2.sukunimi, "on"
print mies2.ika, "vuotta vanha", mies2.ammatti

Lähteet

{code}
h2. Lähteet

Wikipedia: Python

...



Luentokalvot: TKK:n kurssi T-106.1208 Ohjelmoinnin perusteet Y

...



Kasurinen, Jussi: Python - ohjelmointiopas, LUT 2008, ISBN 978-952-214-634-2

...



Pollari-Malmi, Kerttu: T-106.1208 Kurssin opetusmoniste, korjattu versio 10.2.2010

...

Linkit

...



h2. Linkit

[Python kotisivu|http://www.python.org/]
[Kasurinen, Jussi: Python - ohjelmointiopas|http://www.it.lut.fi/kurssit/06-07/Ti5210210/materiaali/Python-ohjelmointiopas_LTY2006.pdf]