Merkkijonon käsittelyä

Tavoitteet

Tavoitteena on syventää

  • merkkijonojen käsittelyä ja

  • perustyyppien ymmärrystä

      • merkkijono eli str

      • kokonaisluku eli int

      • liukuluku eli float

Tarkastellaan, miten seuraavat koodit toimivat

Lasketaan merkkijonossa oleva laskutoimitus (2+15+3+8)

# merkkijonoon tallennetaan keksitty summa

lasku = "2+15+3+8"


# luetaan merkkijonon osat listaan

# erottimena on plus-merkki

osat = lasku.split("+")


# alustetaan summa-niminen kokonaislukutyyppinen muuttuja

summa = 0


# käydään silmukassa läpi lista nimeltään osat,

for osa in osat:


# lisätään listan alkion arvo muuttujaan summa

# laskeminen edellyttää tyypinmuutoksen

summa += int(osa)


# tulostetaan lopuksi laskun tulos

print(summa)

CSV-tyyppisen tiedoston (esim Excelillä tallennettujen) tietojen käsittely

tiedosto = open("lukuja.csv", "r")

for rivi in tiedosto:

luvut = rivi.split(";") # Tallennetaan rivin listaan nimeltään luvut. Erottimenahan on ;

summa = 0

for luku in luvut:

summa += int(luku)

print (summa)

tiedosto.close()

Huomaa!

Tiedostojen peruskäyttöä on vaikea harjoitella pilvessä. Siksi kannattaa aluksi käyttää tietokoneen omaa levymuistia.

Hyvä yleismateriaali

Teemu Sirkiän pdf-dokumentti Ohjelmoinnin perusteet Pythonilla.

Tiedostojen käyttöä alkaen sivulta 50.

Harjoituksia

Etene niin pitkälle kuin ehdit. Kysy rohkeasti apua!

Harjoitus 1

Kopioi ylempi mallikoodi.

Kokeile sen toiminta.

Muuta yhteenlaskettavat luvut: esim. 1, 2, 3, 4, 5, 6, 7. Testaa ohjelman toimivuus.


Harjoitus 2

Muuta edellinen laskutoimitus kertolaskuksi:

lasku = "2*15*3*8"

Tee koodin tarvittavat muutokset siten, että kertolasku myös lasketaan koodissa. Muuta koodissa esiintyvät sanat johdonmukaisiksi.


Harjoitus 3a

Kopioi alempi mallikoodi.

Tee Excelillä alapuolella oleva csv-tyyppinen tiedosto nimeltään lukuja.csv. Tallenna se samaan kansioon kuin edellinen koodi.

HUOMAA! Opettele tekemään Excelissä sarjoja. Eli kirjoita rivin alkuun kaksi lukua ja vedä sitten täyttökahvasta loput. Kysy, ellet osaa!

Kokeile sitten koodi.

Harjoitus 3b

Muuta koodia siten, että ainoastaan koko taulukon kaikkien lukujen summa ilmoitetaan.

Harjoitus 4

a) Tallenna koodi eri nimellä (eli tee kopio koodista). Muuta koodi siten, että lasketaankin lukujen tulo.

b) Muuta koodi siten, että tulostetaankin kaikkien lukujen tulo eikä lukujen tuloa riveittäin.


Harjoitus 5

(Tämä tehtävä on yhä useimmilla tekemättä. Tässä hieman helpotettu aloitus.)

Laadi oheinen tekstitiedosto nimeltään kauppalasku.txt.

kahvi 6.56

leipä 2.47

appelsiini 3.15

viikuna 2.15

jogurtti 1.34

Tee sitten koodi, joka tulostaa rivit näyttöön. Tämä on välivaihe ennen seuraavaa päätarkoitusta

Kehitä sitten koodia siten, että lopuksi tulostetaan näyttöön kauppalaskun yhteissumman.

Voit käyttää split() -metodia ilman parametria ja "heittää pois" ensimmäisen merkkijonon ja käyttää vain toisen merkkijonon, joka tulee muuttaa float-tyyppiseksi.


Harjoitus 6

Ratkaise desimaalierottimeen (eli pisteeseen ja pilkkuun) liittyvä Excel-yhteensopimattomuus. Sillä Excelissä desimaalierottimena on oletusarvoisesti pilkku eikä piste.

Laadi siis kauppalasku Excelillä ja tallenna se nimellä kauppalasku.csv. Nyt on siis muutettava Excelin oletusarvoinen desimaalierotin pilkusta pisteeksi.