Commit 5f8605914af2c53c477cc83a8115ee282e1bd47d

Kasapäin esimerkkejä lisää.
luento.org
(157 / 9)
  
5151>>>
5252#+end_example
5353
54Liukuluvut ovat liukulukuja Pythonissakin:
5455
56#+begin_example
57>>> 1.0 + 2.0
583.0
59>>> 10.0 + 20.0
6030.0
61>>> 0.1 + 0.2
620.30000000000000004
63>>> from decimal import Decimal
64>>> Decimal('0.1')+Decimal('0.2')
65Decimal('0.3')
66>>>
67#+end_example
68
69Johtuen liukulukujen esitystavasta tietokoneessa, ne eivt koskaan ole
70tarkkoja lukuja. Pyristysvirheit syntyy helposti, kuten yll
71nhdn. Tmn takia monista ohjelmointikielist lytyy reaalilukujen
72aritmetiikkaa paremmin mallintavia tyyppej, kuten Pythonin =Decimal=.
73
74Trkeint on muistaa, ett jo laskettaessa rahasummia voi
75ohjelmointikielen perusliukulukutyyppien kytt aiheuttaa ikvi
76ylltyksi, joten rahamrille kannattaa kytt omaa luokkaansa.
77
5578** Muuttujista
5679
5780Muuttujat Pythonissa ovat kytnnss viitteit. Ne antavat uuden nimen
130130toisen muuttujan kautta.
131131
132132#+begin_example
133>>> a=[1,2,3] >>> b=a >>> b[0]=2 >>> b [2, 2, 3] >>> a [2, 2, 3] >>>
133>>> a=[1,2,3]
134>>> b=a
135>>> b[0]=2
136>>> b
137[2, 2, 3]
138>>> a
139[2, 2, 3]
140>>>
134141#+end_example
135142
143Muuttujan sisltmn tai viittaaman arvon tyypin voi aina tarkistaa
144funktiolla =type()=. Tt ei tule kytt liikaa, se vain osoittaisi
145hutiloitua oliosuunnittelua.
146
147#+begin_example
148>>> a=2
149>>> type(a)
150<type 'int'>
151>>> a='kissa'
152>>> type(a)
153<type 'str'>
154>>> type(2)
155<type 'int'>
156>>> type(type)
157<type 'type'>
158>>> type(Decimal)
159<type 'type'>
160>>> type(Decimal('1.0'))
161<class 'decimal.Decimal'>
162>>>
163#+end_example
164
165
136166** Muita tietotyyppej
137167
138Listat:
168Listat muuttuvien ja jrjestettyjen tietojoukkojen ksittelyyn:
139169#+begin_example
140170>>> lista=[1, 2, 'kolme', 4]
141171>>> lista[0]
187187#+end_example
188188
189189Monikot ovat kuten listat, mutta ne eivt voi muuttua: niiden koko
190pysyy samana, eik alkioita voi muuttaa.
190pysyy samana, eik edes alkioita voi muuttaa.
191191
192192#+begin_example
193193>>> monikko=(1, 2, 'kolme', 4)
279279>>>
280280#+end_example
281281
282Hajautustaulut (/dictionary/, /hash table/, /map/)
282Hajautustaulut (sanasto, /dictionary/, /hash table/, /map/)
283283ovat paljon kytetty tietorakenne. Avain, jonka perusteella arvo haetaan,
284284voi olla lhes mit tahansa tyyppi (tyypille tytyy lyty funktioiden
285285=hash= ja =cmp= toteutus, tai vastaavien metodien toteutus).
311311>>>
312312#+end_example
313313
314Joukot sisltvt alkiot ilman jrjestyst ja moninkertoja.
315
314316#+begin_example
315317>>> joukko = set([1,1,2,3,5,8])
316318>>> joukko
333333
334334* Rakenteiden mrittely
335335
336** funktion mrittely ja dokumentointi
337** if, while, for, break, continue
338** luokan mrittely ja dokumentointi
339** olion luonti
340** try ... except
336** Funktion mrittely ja dokumentointi
337
338#+begin_example
339>>> def summa(a,b):
340... "Palauttaa kahden argumenttinsa summan."
341... return a+b
342...
343>>> summa(2+3)
344Traceback (most recent call last):
345 File "<stdin>", line 1, in <module>
346TypeError: summa() takes exactly 2 arguments (1 given)
347>>> summa(2,3)
3485
349>>> summa(0.1,0.2)
3500.30000000000000004
351>>> summa(Decimal('0.1'),Decimal('0.2'))
352Decimal('0.3')
353>>> summa('kissa ','istuu')
354'kissa istuu'
355>>> help(summa)
356
357Help on function summa in module __main__:
358
359summa(a, b)
360 Palauttaa kahden argumenttinsa summan.
361(END)
362[Paina Q-nppint palataksesi kehoitteeseen.]
363>>> type(summa)
364<type 'function'>
365>>>
366#+end_example
367
368Funktioita voi mys antaa argumentteina toisille funktioille ja
369palauttaa funktioiden arvoina. Funktio-ohjelmoijat ovat siis melkein
370kuin kotonaan Pythonin parissa.
371
372** Ehto ja toistolauseet: if, while, for, break, continue
373
374#+begin_example
375>>> if 2>3:
376... print 'oletko aivan varma?'
377... else:
378... print 'nin on!'
379...
380nin on!
381>>>
382#+end_example
383
384#+begin_example
385>>> a=1
386>>> while a<5:
387... print '%d. Spam' % a
388... a = a + 1
389...
3901. Spam
3912. Spam
3923. Spam
3934. Spam
394>>>
395#+end_example
396
397#+begin_example
398>>> menu = ('Spam','Spam','Spam', 'Spam')
399>>> for i in menu:
400... print i
401...
402Spam
403Spam
404Spam
405Spam
406>>>
407#+end_example
408
409#+begin_example
410>>> a=1
411>>> while True:
412... print '%d. Spam' % a
413... if a>4: break
414... elif a==2:
415... print '...with Spam, please!'
416... a = a + 1
417... else:
418... a = a + 1
419...
4201. Spam
4212. Spam
422...with Spam, please!
4233. Spam
4244. Spam
4255. Spam
426>>>
427#+end_example
428
429** Luokan mrittely ja dokumentointi
430
431** Olion luonti
432
433** Poikkeuksellisesti: try ... except
341434
342435
343436* Testilhtinen ohjelmistokehitys