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.