PYTHON PROGRAMMING DANIEL PHILLIPE GONÇALVES MENEZES SERGIPE ARACAJU BRAZIL 27 ANOSUNIVERSITY OF HELSINKI.pdf

danielphmenezes 0 views 27 slides Sep 28, 2025
Slide 1
Slide 1 of 27
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27

About This Presentation

PYTHON PROGRAMMING DANIEL PHILLIPE GONÇALVES MENEZES SERGIPE ARACAJU BRAZIL 27 ANOS UNIVERSITY OF HELSINKI


Slide Content

Viikko 11
OHjelmoinnin JAtkokurssi
18.11.2024

Viime viikolla
Perintä
Näkyvyysmääreistä
Operaattorien ylikuormitus

Lista listasta
Oletetaan seuraava ongelma:

Meillä on lista, jonka alkiot ovat merkkijonoja. Jokainen merkkijono sisältää luvun
(esim. "18"). Tavoitteemme on muuntaa se listaksi kokonaislukuja.

"Perinteinen" ratkaisu
Luodaan uusi, tyhjä lista

Kirjoitetaan for-lause, jossa
käsitellään jokainen alkio yksi
kerrallaan. Muutetaan alkio
kokonaisluvuiksi int-funktiolla

Lisätään uuteen listaan
append-metodilla
tuloslista = []

for alkio in lukulista:
tuloslista.append(int(alkio))

Listakooste
Listakoosteen idea on, että uusi lista
luodaan yhdellä lausekkeella

Syntaksi:

[<operaatio> for <alkio> in
<sarja>]

Esimerkiksi
Sama esimerkki listakoosteena:
[int(alkio) for alkio in lukulista]

Esimerkki
lista1 = [1, 2, 3, 5, 4, 2]
lista2 = [x * 3 for x in lista1]

Oman funktion kutsuminen koosteessa

Alkioiden suodatus
Yleinen syntaksi:

Esimerkiksi(1)

Esimerkiksi (2)
Operaatio yhdistettynä:

Esimerkiksi (3)

Vaihtoehtoinen haara
Jo aikaisemmin mainittu if-lauseke:

<lauseke1> if <ehto> else <lauseke2>

Vaihtoehtoinen haara
yhdistettynä listakoosteeseen:

[<lauseke1> if <ehto> else <lauseke2> for alkio in sarja]

Esimerkiksi

Kooste ja merkkijonot
Iteroitava sarja voi olla
myös esimerkiksi
merkkijono:

Kooste ja merkkijonot, join-metodi
Erityisen näppärää, kun yhdistetään join-metodi

Kooste, join ja split

Omat oliot koosteissa

Kooste ja sanakirja

Funktioiden väliset kutsut

Funktiot voivat kutsua itseään
Tästä seuraa kuitenkin "ikuinen" silmukka:

Rekursio
Funktio kutsuu itseään
muuttuvalla syötteellä
kunnes lopetusehto
täyttyy

Rekursio ja paluuarvot
Mutatoitumattomat arvot pitää palauttaa rekursiivisesta funktiosta:

Esimerkki: Fibonacci
def fibo(n: int):
if n <= 2:
return 1

return fibo(n - 1) + fibo(n - 2)
Luvuille 1 ja 2 algoritmi palauttaa arvon 1 ehdon n <= 2
mukaisesti.
Luvulle 3 algoritmi palauttaa arvon lausekkeesta fibonacci(n -
1) + fibonacci(n - 2), eli käytännössä lausekkeen fibonacci(2)
+ fibonacci(1). Koska edellisessä kohdassa huomattiin, että
näiden molempien arvo on 1, palauttaa funktio siis arvon 1 + 1
== 2 (joka onkin kolmas Fibonaccin luku)
Luvulle 4 algoritmi palauttaa arvon lausekkeesta fibonacci(3) +
fibonacci(2), mikä edellisten kohtien perusteella on siis 2 + 1
eli 3.
Luvulle 5 algoritmi palauttaa arvon lausekkeesta fibonacci(4) +
fibonacci(3), mikä edellisten kohtien perusteella on siis 3 + 2
eli 5.

Miksi ja koska rekursio?
Erityisen hyödyllinen, kun
käsitellään luonnostaan
rekursiivisia rakenteita

Esim. puut, graafit, jne.

Usein vaikea hahmottaa ensi
alkuun

Ensi viikolla
Funktiot parametreina
Lambda-lauseke
Generaattorifunktiot
Funktionaalista ohjelmointia: map, filter, reduce
Säännölliset lausekkeet
Tags