36
Ohjelmoinnin peruskurssi Y1 CSE-A1111 5.10.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 1 / 36

Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

  • Upload
    lekhue

  • View
    217

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Ohjelmoinnin peruskurssi Y1

CSE-A1111

5.10.2015

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 1 / 36

Page 2: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Mahdollisuus antaa luentopalautetta

I Goblinissa vasemmassa reunassa olevassa valikossa on valinta”Luentopalaute”. Tata kautta on mahdollisuus antaa nimettomanapalautetta luennosta.

I Jos jokin asia on jaanyt palautteen perusteella epaselvaksi, palataansiihen mahdollisuuksien mukaan seuraavalla luennolla.

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 2 / 36

Page 3: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Oppimistavoitteet: taman luennon jalkeen

I Tunnet lisaa erilaisia tapoja kayttaa listoja Python-ohjelmissa.

I Osaat kayttaa totuusarvoja sisaltavia listoja.

I Tunnet erilaisia tapoja kasitella merkkijonoja. Osaat esimerkiksikasitella kayttajan antamaa syotetta monipuolisemmin kuinaikaisemmin.

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 3 / 36

Page 4: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

AlilistatI Listasta voi ottaa helposti alilistoja (alkuperaisen listan osia):

>>> lista = [2, 4, 6, 8, 10, 12, 14, 16]

>>> alilista = lista[2:5]

>>> print(alilista)

[6, 8, 10]

Kaksoispisteen jalkeen annettua indeksia ei enaa oteta mukaan.I Ensimmainen tai viimeinen indeksi voidaan myos jattaa

merkitsematta, jolloin alilistaan otetaan alkiot listan alusta lahtien tailistaan loppuun asti:

>>> lista[:5]

[2, 4, 6, 8, 10]

>>> lista[5:]

[12, 14, 16]

I Negatiiviset indeksit tarkoittavat alkioita listan lopusta lahtien:

>>> lista[:-1]

[2, 4, 6, 8, 10, 12, 14]

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 4 / 36

Page 5: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Lisays listaanI Listan loppuun voi lisata uuden alkion append-metodilla:

>>> lista = [2, 4, 6, 8, 10, 12, 14, 16]

>>> lista.append(-3)

>>> print(lista)

[2, 4, 6, 8, 10, 12, 14, 16, -3]

I Sijoituskasky ei lisaa listaan uutta alkota, vaan se korvaa vanhanalkion uudella:

>>> lista[3] = -5

>>> print(lista)

[2, 4, 6, -5, 10, 12, 14, 16, -3]

I Sen sijaan metodilla insert voi lisata halutulle indeksille uudenalkion. Lisayspaikan jalkeen tulevia alkioita siirretaan listan loppuunpain:

>>> lista.insert(3, 22)

>>> print(lista)

[2, 4, 6, 22, -5, 10, 12, 14, 16, -3]

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 5 / 36

Page 6: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Alkion poistaminen listasta

I Metodi remove poistaa ensimmaisen alkion, jolla on parametrinaannettu arvo:

>>> print(lista)

[2, 4, 6, 22, -5, 10, 12, 14, 16, -3]

>>> lista.remove(22)

>>> print(lista)

[2, 4, 6, -5, 10, 12, 14, 16, -3]

I Operaattori del poistaa alkion halutulta indeksilta:

>>> print(lista)

[2, 4, 6, -5, 10, 12, 14, 16, -3]

>>> del lista[5]

>>> print(lista)

[2, 4, 6, -5, 10, 14, 16, -3]

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 6 / 36

Page 7: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Listan jarjestaminen ja kaantaminen

I Metodi sort jarjestaa listan:

>>> lista.sort()

>>> print(lista)

[-5, -3, 2, 4, 6, 10, 14, 16]

I Metodi reverse kaantaa listan jarjestyksen painvastaiseksi.

>>> lista.reverse()

>>> print(lista)

[16, 14, 10, 6, 4, 2, -3, -5]

I Funktio sorted tekee listasta kopion ja jarjestaa taman kopion.Alkuperainen lista jaa entiselleen:

>>> lista2 = sorted(lista)

>>> print(lista2)

[-5, -3, 2, 4, 6, 10, 14, 16]

>>> print(lista)

[16, 14, 10, 6, 4, 2, -3, -5]

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 7 / 36

Page 8: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Listojen yhdistaminen

I Kaksi listaa voidaan yhdistaa kayttamalla operaattoria +:

>>> lista1 = [1, 2, 3]

>>> lista2 = [4, 5, 6]

>>> yhteislista = lista1 + lista2

>>> print(yhteislista)

[1, 2, 3, 4, 5, 6]

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 8 / 36

Page 9: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Totuusarvoja sisaltava lista

I Lista voi sisaltaa myos bool-tyyppisia arvoja eli arvoja True ja False

I Seuraavassa esimerkkiohjelmassa on kaytetty tallaista listaakuvaamaan jonkin salin (esim. elokuvateatteri, teatteri taikonserttisali) varaustilannetta.

I Oletetaan, etta paikat on numeroitu nollasta alkaen.

I Listassa on indeksilla i arvo True, jos paikka on varattu, ja arvoFalse, jos paikka on vapaa.

I Ohjelmassa on funktiot halutun paikan varaamiseen, senselvittamiseen, onko maaratty paikka vapaa, kaikkien vapaidenpaikkojen selvittamiseen seka varattujen paikkojen maaranselvittamiseen.

I Ohjelmassa on vain lyhyt esimerkkipaaohjelma nayttamaan sita,miten eri funktioita voidaan kutsua. Jotta jarjestelmaa voisi oikeastikayttaa, tarvittaisiin selvasti pitempi kayttoliittymaohjelma.

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 9 / 36

Page 10: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Paikanvarausohjelma

def varaa_paikka(varatut, paikka):

if 0 <= paikka < len(varatut) and not varatut[paikka]:

varatut[paikka] = True

return True

else:

return False

def onko_vapaa(paikkalista, nro):

if 0 <= nro < len(paikkalista):

return not paikkalista[nro]

else:

return False

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 10 / 36

Page 11: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Paikanvarausohjelma, jatkoa

def kerro_vapaat_paikat(varauslista):

vapaiden_lista = []

for i in range(len(varauslista)):

if not varauslista[i]:

vapaiden_lista.append(i)

return vapaiden_lista

def montako_varattu(varaukset):

varattuja = 0

for alkio in varaukset:

if alkio:

varattuja += 1

return varattuja

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 11 / 36

Page 12: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Paikanvarausohjelma, jatkoa

def main():

PAIKKAMAARA = 10

paikka_varattu = [False] * PAIKKAMAARA

for i in range(5):

paikkanro = int(input("Mika paikka varataan? "))

if varaa_paikka(paikka_varattu, paikkanro):

print("Paikan varaus onnistui!")

else:

print("Varaus ei onnistunut.")

tutkittava = int(input("Anna paikan numero: "))

if onko_vapaa(paikka_varattu, tutkittava):

print("Paikka", tutkittava, "on vapaa.")

else:

print("Paikka", tutkittava, "ei ole vapaa.")

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 12 / 36

Page 13: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Paikanvarausohjelma, jatkoa

print("Vapaat paikat:")

print(kerro_vapaat_paikat(paikka_varattu))

print("Paikkoja on varattu {:d} / {:d}.".format(

montako_varattu(paikka_varattu),

len(paikka_varattu)))

main()

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 13 / 36

Page 14: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Valitehtava

I Lisaa edella esitettyyn paikanvarausohjelmaan funktiovaraa_ensimmainen_vapaa, joka varaa ensimmaisen vapaan paikan.Funktio palauttaa varatun paikan numeron tai arvon -1, jos kaikkipaikat on jo varattu.

I Jos aikaa jaa, mieti, miten funktiota voi kutsua paaohjelmassa niin,etta siella joko tulostetaan varatun paikan numero tai vaihtoehtoisestitieto siita, etta vapaita paikkoja ei enaa ole.

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 14 / 36

Page 15: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Merkkijonot

I Merkkijonojen avulla ohjelmassa voi esittaa tekstitietoa, esim. nimia,osoitteita ja erilaisia tunnuksia.

I Merkkijonon tyyppi Pythonissa on str.

I Yksittaisia merkkeja varten ei ole omaa tyyppia, vaan ne ovat yhdenmerkin pituisia merkkijonoja.

I Merkkijono esitetaan yksin- tai kaksinkertaisten lainausmerkkienavulla.

mjono = ’appelsiini’

mjono = "appelsiini"

I Useammalle riville jatkuva merkkijono kirjoitetaan kolmenlainausmerkin sisaan.

pitkajono = """Tama merkkijono sisaltaa

useamman kuin yhden

rivin"""

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 15 / 36

Page 16: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Merkkijonojen kasittely

I Merkkijonoja voidaan kasitella monessa tapauksessa samalla tavallakuin listoja, esim.

>>> sana = "sitruuna"

>>> print(sana[3])

r

I Olennainen ero: merkkijonon sisaltoa ei voi muuttaa sen jalkeen, kunmerkkijono on luotu, esim.

>>> sana[3] = ’a’

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: ’str’ object does not support item assignment

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 16 / 36

Page 17: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Merkkijonon lapikaynti

I Merkkijonon merkit voi kayda lapi for-kaskyn avulla samalla tavallakuin listan alkiot:

>>> mjono = "matti"

>>> for merkki in mjono:

... print(merkki)

...

m

a

t

t

i

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 17 / 36

Page 18: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Alimerkkijonot

I Merkkijonosta voi ottaa myos alimerkkijonoja samaan tapaan kuinlistoista alilistoja:

>>> mjono = "appelsiini"

>>> print(mjono[2:5])

pel

>>> print(mjono [:4])

appe

>>> print(mjono [:-1])

appelsiin

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 18 / 36

Page 19: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Merkkijonon pituus ja merkin esiintymisen tutkiminen

I Merkkijonon pituuden saa selville funktiolla len.

>>> mjono = "appelsiini"

>>> print(len(mjono))

10

I Operaattorin in avulla voi tutkia, esiintyyko merkki merkkijonossa.

>>> print("i" in mjono)

True

I Operaattorin in avulla voi myos tutkia, esiintyyko pitempi merkkijonoosana toista.

>>> print("else" in mjono)

False

>>> print("elsi" in mjono)

True

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 19 / 36

Page 20: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Merkin esiintymiskohta merkkijonossa

I Metodin index avulla voidaan hakea parametrina annetun merkinensimmainen esiintymispaikka merkkijonosta:

>>> mjono = "appelsiini"

>>> print(mjono.index("i"))

6

I Saman metodin avulla voidaan hakea myos pitempaa merkkijonoa:

>>> print(mjono.index("lsi"))

4

I Ohjelma kaatuu, jos haettua merkkijonoa ei loydy :

>>> print(mjono.index("lse"))

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

ValueError: substring not found

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 20 / 36

Page 21: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Sijoitus merkkijonomuuttujaan

I Merkkijonon sisaltoa ei voi muuttaa sen jalkeen, kun merkkijono onluotu.

I Voidaan kuitenkin tehda uusi merkkijono ja sijoittaa se arvoksivanhalle muuttujalle:

>>> mjono = "mansikka"

>>> print(mjono)

mansikka

>>> mjono = "mustikka"

>>> print(mjono)

mustikka

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 21 / 36

Page 22: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Uusi merkkijono vanhan avullaI Uusi merkkijono voi kuitenkin riippua jotenkin vanhasta

merkkijonosta. Metodi upper luo uuden merkkijonon, joka sisaltaamuuten samat merkit kuin vanha merkkijono, mutta kaikki pienetkirjaimet on muutettu isoiksi:

>>> mjono = "mustikka"

>>> mjono = mjono.upper()

>>> print(mjono)

MUSTIKKA

I Metodi lower luo uuden merkkijonon, joka sisaltaa muuten samatmerkit kuin vanha merkkijono, mutta kaikki isot kirjaimet onmuutettu pieniksi:

>>> print(mjono)

MUSTIKKA

>>> mjono = mjono.lower()

>>> print(mjono)

mustikka

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 22 / 36

Page 23: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Merkkijonojen liittamiset

I Useampi merkkijono voidaan liittaa perakkain +-operaattorilla.

>>> etunimi = "Matti"

>>> sukunimi = "Virtanen"

>>> kokonimi = etunimi + " " + sukunimi

>>> print(kokonimi)

Matti Virtanen

Jos merkkijonoon halutaan liittaa muuntyyppisten muuttujien arvoja,pitaa ensin suorittaa tyypinmuunnos str-operaattorilla.

>>> tunteja = 50

>>> tuntip = 12.5

>>> palkka = tunteja * tuntip

>>> tulosrivi = str(tunteja) + " h * " + str(tuntip) + \

... " eur / h = " + str(palkka)

>>> print(tulosrivi)

50 h * 12.5 eur / h = 625.0

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 23 / 36

Page 24: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Merkkijonojen monistaminen

I Operaattorin * avulla voidaan tehda merkkijono, joka sisaltaapienemman merkkijonon monta kertaa.

I Rivinvaihtomerkin saa tarvittaessa mukaan lisaamalla merkkijonoonerikoismerkin "\n":

>>> merkit = "*!*"

>>> rivi = 5 * merkit

>>> print(rivi)

*!**!**!**!**!*

>>> rivit = 3 * (rivi + "\n")

>>> print(rivit)

*!**!**!**!**!*

*!**!**!**!**!*

*!**!**!**!**!*

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 24 / 36

Page 25: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Erikoismerkkeja

I Merkkijonoihin on mahdollista liittaa erikoismerkkeja (engl. escapecharacters), jotka aiheuttavat tulostuksessa esimerkiksi rivinvaihdontai kursorin siirron seuraavaan tabulointikohtaan.

I Tarkeimpia erikoismerkkeja:\n rivinvaihto\t tabulaattori\’ yksinkertainen lainausmerkki\" kaksinkertainen lainausmerkki\\ yksi kenoviiva

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 25 / 36

Page 26: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Tyhjien merkkien poisto syotteen alusta ja lopusta

I Usein halutaan poistaa kayttajan syotteesta kayttajan mahdollisestivahingossa alkuun tai loppuun kirjoittamat ns. tyhjat merkit(valilyonnit, tabuloinnit, rivinvaihdot).

I Tama on helppo tehda metodin strip avulla:

>>> syote = input("Anna tekstia.\n")

Anna tekstia.

kirjoitetaan jotain

>>> print("*{:s}*".format(syote))

* kirjoitetaan jotain *

>>> muutettu_syote = syote.strip()

>>> print("*{:s}*".format(muutettu_syote))

*kirjoitetaan jotain*

I Jos tyhjat merkit halutaan poistaan vain merkkijonon alusta tailopusta, voidaan kayttaa metodeita lstrip tai rstrip.

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 26 / 36

Page 27: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Merkkijonon jakaminen

I Monesti on tarve jakaa merkkijono osiin jonkun merkin (esimerkiksivalilyonnin kohdalta).

I Esimerkki: halutaan erottaa samalla rivilla annettu etunimi jasukunimi tai sana ja sen kaannos toiselle kielelle toisistaan.

I Merkkijono voidaan jakaa metodilla split. Se palauttaa listan, jokasisaltaa jaetun merkkijonon eri osat.

I Oletusarvoisesti split-metodi jakaa merkkijonon valilyonninkohdalta, mutta metodille voidaan antaa parametrina joku muumerkki, jonka kohdasta jako tehdaan.

I Jaossa kaytetty merkki ei tule mukaan mihinkaan osaan.

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 27 / 36

Page 28: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Merkkijonon jakaminen, esimerkkeja

>>> teksti = "Pitka teksti, joka sisaltaa monta eri sanaa."

>>> osat = teksti.split()

>>> print(osat)

[’Pitka’, ’teksti,’, ’joka’, ’sisaltaa’, ’monta’, ’eri’,

’sanaa.’]

>>> sanarivi = "kirja=book"

>>> kaannokset = sanarivi.split("=")

>>> print(kaannokset)

[’kirja’, ’book’]

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 28 / 36

Page 29: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Valitehtava

I Kayttajalta luetaan merkkijono, joka sisaltaa yhden kilpailijan nimenseka taman kilpailijan pisteet kahdelta eri kilpailukierrokselta. Eritiedot on erotettu toisistaan kauttaviivalla /.

I Kirjoita ohjelman osa, joka laskee kilpailijan yhteispisteet (molempienkierrosten pisteet yhteensa). Taman jalkeen ohjelman pitaa tulostaakilpailijan nimi ja hanen yhteispisteensa.

I Esimerkki kayttajan antamasta rivista:

Teemu Teekkari/25/15

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 29 / 36

Page 30: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Merkkijonojen vertailu

I Merkkijonojen sisaltoja voi verrata toisiinsa vertailuoperaattoreilla ==,!=, <=, >=, < ja >.

I Kun katsotaan, onko toinen merkkijono suurempi kuin toinen,verrataan merkkeja keskenaan merkkijonojen alusta lahtien.

I Jarjestyksen maaraa kirjainten arvo kaytetyssamerkkikoodausjarjestelmassa – mita lukuarvoa kukin kirjain vastaa.

I Kaytannossa koodit noudattavat muuten aakkosjarjestysta, mutta isotkirjaimet ovat ennen pienia ja skandinaaviset aakkoset eivat olekeskenaan oikeassa jarjestyksessa.

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 30 / 36

Page 31: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Esimerkkeja merkkijonojen vertailuista

>>> nimi1 = "matti"

>>> nimi2 = "teppo"

>>> nimi1 == nimi2

False

>>>

>>> nimi1 < nimi2

True

>>>

>>> nimi3 = "Teppo"

>>> nimi2 == nimi3

False

>>>

>>> nimi3 < nimi2

True

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 31 / 36

Page 32: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Esimerkkeja merkkijonojen vertailuista, jatkoa

>>> nimi1 = "matti"

>>> nimi4 = "matilda"

>>> nimi1 < nimi4

False

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 32 / 36

Page 33: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Esimerkki: lampotilamuunnos

I Seuraava esimerkkiohjelma muuttaa kayttajan antamia lampotilojafahrenheit-asteista celsius-asteiksi tai painvastoin kayttajan valinnanmukaan.

I Merkkijonojen vertailulla selvitetaan, kumpaan suuntaan kayttajahaluaa tehda muunnoksen ja sen mukaan kutsutaan oikeaa funktiota.

I Lisaksi vertailun avulla selvitetaan, haluaako kayttaja tehda uudenmuunnoksen.

I Kayttajan syotteet muutetaan kokonaan isoiksi tai pieniksi kirjaimiksi,jotta niiden ero ei vaikuttaisi vertailun tulokseen.

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 33 / 36

Page 34: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Lampotilamuunnos: koodi

def muunna_celsiuksiksi(fahr_asteet):

celsius_asteet = (fahr_asteet - 32) * 5.0 / 9.0

return celsius_asteet

def muunna_fahrenheiteiksi(cel_asteet):

fahrenheit_asteet = 9.0/5.0 * cel_asteet + 32

return fahrenheit_asteet

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 34 / 36

Page 35: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Lampotilamuunnos: koodi jatkuu

def main():

jatko = "kylla"

while jatko != "ei":

rivi = input("Anna lampotilan yksikko (C/F): ")

yksikko = rivi.upper()

if yksikko == "C":

asteet = float(input("Lampo celsiuksina: "))

fahrenheit = muunna_fahrenheiteiksi(asteet)

print(asteet, "C on", fahrenheit, "F.")

elif yksikko == "F":

asteet = float(input("Lampo fahrenheiteina: "))

celsius = muunna_celsiuksiksi(asteet)

print(asteet, "F on", celsius, "C.")

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 35 / 36

Page 36: Ohjelmoinnin peruskurssi Y1 · PDF filek asitell a k aytt aj an antamaa sy otett a monipuolisemmin kuin aikaisemmin. ... TypeError: ’str’ object does not support item assignment

Lampotilamuunnos: koodi jatkuu

else:

print("Virheellinen yksikko, oikea on C tai F")

rivi = input("Haluatko jatkaa (kylla/ei)? ")

jatko = rivi.lower()

main()

CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 36 / 36