Esitehtävät¶
Näissä harjoituksissa asennetaan tarpeellisia työkaluja ja tutustutaan Pythonin peruskäyttöön.
Osaamistavoitteet: Näiden harjoitusten jälkeen tiedät miten Pythonia käytetään. Tähän kuuluu
Python-tulkin
käyttö sekä kooditiedostojen
suorittaminen
.Asennukset¶
Seuraavia ohjeita kannattaa noudattaa asentaessa ohjelmistoja kotikoneelle. Jos käytät tietokoneluokan tietokonetta harjoitusten tekemiseen, voit harjoituksissa siis ohittaa suurimman osan tästä osiosta - katso kuitenkin Notepad++-ohjelman asetukset hieman alempaa! Palaa näihin asennusohjeisiin kuitenkin kotona, jotta kurssin tehtävien suorittaminen onnistuisi kotoakin käsin!
Asennetaan tietenkin itse Python, jota ilman Pythonia käyttävää ohjelmointikurssia on hieman hankala suorittaa. Lisäksi asennetaan käytännössä pakollinen parempi tekstieditori sekä joitain elämää helpottavia ohjelmia. Kussakin kohdassa tulee seurata omalle käyttöjärjestelmälläsi suunnattuja ohjeita.
Python¶
Ensinnäkin on syytä huomata, että kurssilla käytetään Pythonin kolmosversiota – ei siis vanhaa kakkosversiota! Nykyinen versio on Python 3.10. Osa kurssin ohjeista saattaa vielä viitata vanhempiin versioihin, jotka ovat olleet ohjeiden laatimisen aikaan uusimpia versioita. Älä välitä tästä, kuvittele vain 3.10 siihen tilalle.
Pääasiassa ladattavat paketit löytyvät Python Software Foundationin sivuilta. Tarkemmat ohjeet alla.
Windows¶
Asennus pitäisi toimia yhdellä käyttäjälle asennettuna. Jos kohtaat ongelmia käytön kanssa, voit koettaa asennusta pääkäyttäjän oikeuksilla kaikille käyttäjille.
- Aloita nappaamalla asennuspaketti ainoasta oikeasta virallisesta lähteestä ja tallentamalla se johonkin sopivaan paikkaan (selaimen oletuslatauskansio on aivan hyvä).
- Kaksoisklikkaa tai muuten käynnistä lataamasi
python-3.11.5-amd64.exe
-tiedosto. Windows saattaa valittaa, että tiedosto ei ole luotettavasta lähteestä, jolloin kerrot sille, että asenna nyt vain. - Asennusta tehdessä kiinnitä huomiota alla olevassa kuvassa osoitettuihin asioihin ja varmista, että teet kaiken samalla tavalla.
Tämän jälkeen pitäisi olla valmista.
Mac OS X¶
OS X toimittaa käyttöjärjestelmän mukana Pythonin kakkosversion, 2.7 jotain. Koska käytämme kurssilla Python 3:a, se on asennettava erikseen. Uusin versio intel-suorittimille vaatii käyttöjärjestelmän 10.6-version, mikä ei taida tuottaa ongelmia vuonna 2023.
- Lataa asennusohjelma OS X versiolle 10.9 tai uudemmille.
- Klikkaile asennuksen läpi myöntäen ehdot, mitään muita asetuksia ei tarvitse valita.
Siinäpä se sitten olikin. Nyt voit avata
Python-tulkin
komentoriviltä
(Terminal) komennolla python3
– varo, ettet kirjoita pelkästään python
ilman kolmosta, sillä tämä avaa vanhan kakkosversion tulkin, jossa jotkut ominaisuudet toimivat eri tavalla kuin mitä kurssilla tulet oppimaan.Linux¶
Useimmissa Linux-jakeluissa voit asentaa Pythonin suoraan pakettienhallinnasta. On tosin hyvin mahdollista, että Python 3 tulee muutenkin käyttöjärjestelmän asennuksen mukana – yleensä nimellä
python3
(pelkkä python
käynnistää vanhan kakkosversion, jos sekin on esiasennettuna). Todennäköisesti tunnet itse oman Linuxisi käytännöt paremmin kuin me, joten emme pyri antamaan ohjeita jokaiselle mahdolliselle jakelulle. Versioksi riittää 3.8. tai uudempi.Jos pakettienhallinta ei tarjoa Pythonista kolmosversiota, joudut asentamaan Pythonin lähdekoodista kääntämällä. Tällöin voit ladata lähdekoodin täältä. Tämän jälkeen prosessi etenee seuraavilla komennoilla:
- cd /hakemisto/johon/latasit/tiedoston
- tar xvzf Python-3.11.5.tgz
- cd Python-3.11.5
- ./configure
- make
- make install
Mikäli kohtaat ilmoituksia puuttuvista kirjastoista (esimerkiksi readline-kirjaston kehittäjäpaketti), asenna ne seuraten jälleen Linux-jakelusi käytäntöjä.
Tekstieditori¶
Ohjelmoinnista huomattava osa on tietysti
koodin
kirjoittamista ja muokkaamista, ja näin ollen hyvä tekstieditori auttaa ohjelmoinnissa todella paljon. Tarvitsemme siis hyvän tekstieditorin, joka osaa vähintään:- näyttää rivinumerot,
- pitää auki useita tiedostoja kerralla,
- värjätä tekstiä koodin syntaksinmukaisesti sekä
- korvata sarkainmerkit halutulla määrällä välilyöntejä.
Useimmat hyvät tekstieditorit tekevät enemmänkin. Tekstieditorin sijaan voit halutessasi asentaa myös kokonaisen kehitysympäristön, jolloin voit ohittaa tämän kohdan ja siirtyä seuraavaan. Kehitysympäristöt tarjoavat vielä enemmän ominaisuuksia, mutta niiden käyttö vaatii hieman enemmän opettelua. Yksi erittäin suosittu kehitysympäristö on VSCode.
Windows¶
Windowsille suosittelemme koodin kirjoittamiseen Notepad++-ohjelmaa. Se on avointa lähdekoodia, täysin ilmainen ja täyttää kaikki hyvän tekstieditorin vaatimukset. Se löytyy myös PC-luokkien koneilta, joten harjoituksissa käyville se tulee taatusti tutuksi.
- Lataa asennuspaketti tästä linkistä.
- Kaksoisklikkaa lataamaasi .exe-tiedostoa.
- Tarvittaessa vakuuta Windowsille, että kyllä haluat asentaa tämän ohjelman.
- Valitse kieleksi englanti.
- Seuraa ohjeita. Oletusasetukset ovat ihan hyvät.
Notepad++ Asetukset¶
Kun ohjelma on asentunut, kannattaa tehdä pari muutosta sen asetuksiin. Nämä muutokset kannattaa tehdä myös tietokoneluokissa!
- Valitse valikosta Settings -> Preferences…
- Etsi ikkunasta Language -välilehti ja laita rasti kohtaan
Replace by space
, ellei se ole jo raksittu (kuva alempana). - Etsi ikkunasta New Document -välilehti ja valitse Encoding-asetuksista
UTF-8
(tärkeää: ei UTF-8 with BOM) sekä laita rasti sen alla olevaan kohtaan. Valitse lisäksi Format-asetuksistaWindows
. Jos nämä asetukset olivat jo valmiiksi asetettuina, jätä koskematta niihin.
Voit muutella muita asetuksia omien tarpeidesi mukaan. Nämä kaksi muutosta vähentävät merkittävästi mystisten ongelmien määrää tulevaisuudessa – erityisesti, jos siirtelet tiedostoja eri koneiden välillä.
Mac OS X¶
Käyttöjärjestelmän mukana tuleva tekstieditori TextEdit ei täytä edellä mainittuja hyvän editorin ominaisuuksia. Graafisia tekstieditoreja on monia hyviä, esimerkiksi ilmainen avoimen lähdekoodin Kate, joka on myös kurssin pitäjän ykkösvalinta Linuxissa. Asennettuasi Katen voit helposti avata tiedostoja
komentokehotteesta
komennolla kate esimerkki.py
.Linux¶
Linuxin graafisten käyttöympäristöjen mukana tulee useimmiten joku käypä tekstieditori, esimerkiksi Gedit (Gnomessa) tai Kate (KDE:ssä). Graafista ympäristöjä kaihtavat koodarit käyttävät yleensä Emacsia tai Vimiä. Niiden käyttö vaatii kuitenkin hieman opettelua. Pieniin editointeihin
komentorivillä
voi käyttää myös Nanoa, mutta sillä ei mitään suurempaa kannata tehdä.Komentorivityökalut¶
Sekä Linuxissa että Mac OS X:ssä on oletuksena varsin hyvät
komentorivityökalut
myös ohjelmointikäyttöön. Windowsin komentorivi sen sijaan on parhaimmillaankin lähinnä välttävä, mutta sen uudemmat versiot ovat riittäviä tälle kurssille. Komentorivityökaluista käytetään useita nimityksiä: komentorivi, komentokehote, terminaali, konsoli... Työkalujen roolit ja käyttö¶
Yllä asennetuilla työkaluilla on kullakin oma roolinsa ohjelmoinnissa, tiivistetysti:
- Python: suorittaa koodia (eli muuttaa sen konekieliseksi prosessoria varten) joka on kirjoitettu interaktiiviseen Python-konsoliintaikooditiedostoon
- Tekstieditori: käytetään kooditiedostojen kirjoittamiseen ja tallentamiseen
- Komentokehote: käytetään käyttöjärjestelmäkomentojen syöttämiseen sekä Pythonin käynnistämiseen
Kun istut alas koodaamaan, näistä käynnistetään yleensä heti tekstieditori ja komentokehote. Python kannattaa opetella heti alkuun käynnistämään komentokehotteesta, vaikka interaktiivisen tulkin voikin avata myös graafisen käyttöliittymän valikosta - kooditiedostojen suorittaminen ei nimittäin interaktiivisen tulkin sisältä onnistu halutulla tavalla.
Komentokehotteen käyttö¶
Komentokehote eli komentorivi eli terminaali eli konsoli on käyttöliittymä, jossa toiminnot tehdään antamalla käskyt tekstinä käyttäen käyttöjärjestelmän tuntemia komentoja. Aikanaan tietokoneissa ei muunlaisia käyttöliittymiä edes ollut, ja nykyäänkin palvelimia tyypillisesti hoidetaan puhtaasti terminaalin kautta. Linux-käyttäjille terminaali on yleensä tuttu työkalu, Windowsin puolella sitä sen sijaan vähän kaihdetaan ja koitetaan pitää piilossa.
Käynnistäminen¶
Windowsissa voit avata Käynnistä-valikon ja kirjoittaa hakuun
cmd
- komentokehote pitäisi näkyä hakutuloksissa ensimmäisenä ja käynnistyä kun painat Enter. Windowsillakin komentoriviä
kannattaa käyttää Python-koodin ajamiseen, koska kaksoisklikkaamalla käynnistetyt kooditiedostot
eivät ensinnäkään pysy näkyvissä kovin pitkään, ja komentoriviargumenttien
antaminen niille myöhemmin kurssilla on vähän mutkikasta.Linuxilla
komentokehotteen
aukaiseminen onnistuu joko näppäinyhdistelmällä Ctrl+Alt+T tai painamalla Alt + F2 ja kirjoittamalla hakukenttään sanan Terminal. Macilla löydät vastaavan hakukentän oikeasta ylänurkasta ja voit kirjoittaa sinne hakusanan Terminal.Komentokehote ja hakemistot (Windows)¶
Komentokehotetta käyttäessä on aina syytä tietää mikä on senhetkinen aktiivinen hakemisto ("olet täällä"). Komentokehotteessa hakemistosta toiseen seilataan ihan samalla tavalla kuin käyttöjärjestelmän graafisessa tiedostoselaimessa, ja myös ihan yhtä lailla hakemiston sisällön saa komentokehotteessa näkyviin. Hiirellä klikkailun sijaan molemmat täytyy vain hoitaa tekstikomennoilla:
cd
: (change directory) komento jolla siirrytään toiseen hakemistoon jokorelatiivisestitaiabsoluuttisestidir
: (directory listing) komento joka näyttää aktiivisen hakemiston sisällön
Komentokehote aukeaa yleensä omaan kotihakemistoosi kun taas tyypillisesti kansiot joita Windowsin tiedostoselain tarjoaa pikavalintoina ovat kotihakemiston alla olevia kansioita. Usein näiden oikea polku eroaa siitä mitä tiedostoselain näyttää. Esim. tiedostoselain saattaa näyttää kansion nimeltä "Ladatut tiedostot" mutta sen oikea polkunimi on Downloads. Näet kaikki kotihakemiston alikansiot (ja tiedostot)
dir
-komennolla. Näihin alikansioihin voidaan siis siirtyä cd
-komennolla. Oletetaan vaikka, että olet luonut Ohjelmointi-nimisen kansion "Omat tiedostot" kansion sisälle. Koska tuoreeltaan avattu komentokehote on kotihakemiston juuressa, tarvitaan kaksi cd-komentoa Ohjelmointi-kansioon pääsemiseksi:C:\Users\aasi>cd Documents C:\Users\aasi\Documents>cd Ohjelmointi C:\Users\aasi\Documents\Ohjelmointi>
tai vaihtoehtoisesti voidaan kirjoittaa haluttu polku yhteen cd-komentoon:
C:\Users\aasi>cd Documents\Ohjelmointi C:\Users\aasi\Documents\Ohjelmointi>
Toinen tapa päästä haluttuun kansioon on käyttää absoluuttista polkua. Tämä on kätevää erityisesti silloin, jos löydät haluamasi tiedoston tiedostoselaimella, mutta et ole varma miten sinne pääsee komentokehotteessa. Tiedostoselaimessa saat auki olevan hakemiston
absoluuttisen polun
näkyviin klikkaamalla osoiteriviäTästä osoitteen voi kätevästi kopioida komentokehotteeseen cd-komennon perään jolloin siirryt suoraan kyseiseen kansioon.
C:\User\aasi>cd C:\Users\aasi\Documents\Ohjelmointi C:\Users\aasi\Documents\Ohjelmointi>
Takaisin ylempään kansioon pääsee myös cd-komennolla, mutta kansion nimen sijasta laitetaan kaksi pistettä:
C:\Users\aasi\Documents\Ohjelmointi>cd .. C:\Users\aasi\Documents>cd .. C:\Users\aasi>
Komentokehote ja hakemistot (OS X / Linux)¶
Unix-pohjaisissa käyttöjärjestelmissä terminaalin käyttö on tyypillisesti paremmin integroitu graafiseen käyttöliittymään. Kuten Windowsissa, myös tällä puolella komentokehotteessa on aina aktiivinen hakemisto, ja tekstikomennoilla voidaan siirtyä paikasta toiseen. Komennot ovat:
cd
: (change directory) komento jolla siirrytään toiseen hakemistoon jokorelatiivisestitaiabsoluuttisestils
: (listing) komento joka näyttää aktiivisen hakemiston sisällön
Komentokehote aukeaa yleensä omaan kotihakemistoosi, jonka oletusrakenne vaihtelee OS X:n ja eri Linux-distrojen välillä. Tyypillisiä alikansioita ovat tälläkin puolella esim. Downloads ladatuille tiedostoille ja Documents käyttäjän omille tiedostoille. Jos oletetaan, että Documentsin alle on luotu Ohjelmointi-niminen kansio, sinne siirryttäisiin kotihakemiston juuresta seuraavasti (~ on lyhennemerkintä kotihakemistolle):
aasi@linuxpurkki:~$ cd Documents aasi@linuxpurkki:~/Documents$ cd Ohjelmonti aasi@linuxpurkki:~/Documents/Ohjelmointi$
tai vaihtoehtoisesti kansiota voidaan yhdistää yhteen cd-komentoon:
aasi@linuxpurkki:~$ cd Documents/Ohjelmointi aasi@linuxpurkki:~/Documents/Ohjelmointi$
Unix-pohjaisissa graafisissa käyttöliittymissä on myös usein mahdollista avata komentokehote tiedostoselaimesta siten, että se aukeaa valittuun kansioon. Tyypillisesti tämä onnistuu valikosta joka aukeaa hiiren oikealla painikkeella. Yleensä on myös mahdollista kopioida auki olevaan kansioon johtava polku tiedostoselaimen osoiteriviltä ja liittää se cd-komennon perään
absoluuttisena polkuna
:aasi@linuxpurkki:~$ cd /home/aasi/Documents/Ohjelmointi aasi@linuxpurkki:~/Documents/Ohjelmointi$
Takaisin ylempään kansioon pääsee myös cd-komennolla, mutta kansion nimen sijasta laitetaan kaksi pistettä:
aasi@linuxpurkki:~/Documents/Ohjelmointi$ cd .. aasi@linuxpurkki:~/Documents$ cd .. aasi@linuxpurkki:~$
Terminaalivinkkejä¶
Terminaalin käyttöön liittyy pari kätevää temppua jotka helpottavat elämää mukavasti. Vanhoja komentoja voit selata ylös- ja alas-nuolilla. Jos vaikka käynnistelet Python-ohjelmaasi useaan kertaan, käynnistyskomentoa ei aina tarvi kirjoittaa uusiksi - riittää että painat kerran ylöspäin. Tämä toimii myös Python-tulkin sisällä kirjoitetuille koodiriveille!
Toinen näppärä temppu on automaattitäydennys sarkainnäppäimellä. Voit kirjoittaa vain osan kansion tai tiedoston nimestä ja painaa sarkainnäppäintä: jos käyttöjärjestelmä pystyy löytämään kirjoittamasi alun perusteella tasan yhden vastaavan nimen, se täydentyy loppuun automaattisesti. Toiminta tilanteessa jossa kirjoittamasi alku vastaa useaa nimeä eroaa hieman käyttöjärjestelmien välillä:
- Windows tarjoaa ensimmäisen vaihtoehdon jota voit vaihtaa painamalla sarkainnäppäintä uudestaan
- Esim. jos kirjoitat kotihakemistossa D ja koitat painaa sarkainnäppäintä, Windows tarjoaa vaihtoehdoksi ensin Desktop, sitten Documents ja viimeisenä Downloads
- Linux täydentää polkua siihen asti kuin pystyy ja odottaa, että annat lisää merkkejä joiden avulla nimi voidaan tunnistaa yksiselitteisesti.
- Esim. jos kirjoitat vain D kotihakemistossa, sarkainnäppäin ei tee mitään mutta sen uudelleen painaminen näyttää mitä D:llä alkavia vaihtoehtoja kansiossa on
- Kotihakemistossa pitäisi kirjoittaa siis vähintään Doc että voit mennä Documents-kansioon
IPython asennus¶
Kurssilla käytetään esimerkeissä IPython-tulkkia, ja sen käyttöä suositellaan vahvasti myös opiskelijoille. IPythonissa on muutamilta osin merkittävästi miellyttävämpi käytettävyys kuin Pythonin mukana tulevan interaktiivisen tulkin. Asennus on vasta tässä kohtaa ohjeita, koska se pitää tehdä komentokehotteessa.
Kirjoita terminaaliin
Kirjoita terminaaliin
pip install ipython
Linuxissa
pip3 install ipython
ja Mac OS X:ssä komennolla
pip3 install --user ipython
Yksi mahdollinen ongelma on, että komentokehote herjaa ettei löydä pip-komentoa. Tällöin Pythonin scripts-hakemisto ei ole PATH-ympäristömuuttujassa jolloin helpointa on asentaa Python uudestaan ja varmistaa, että olet ruksannut "Add Python 3.10 to PATH" -kohdan.
Lisäksi pip saattaa huomauttaa, että siitä on uusi versio saatavilla. Tämä näkyy asennuksen lopussa keltaisena varoitustekstinä.
Ilmoitukselle ei tarvi tehdä mitään, mutta jos haluat eroon siitä voit toimia ohjeen mukaan ja päivittää pip-ohjelman kirjoittamalla
pip install --upgrade pip
IPython-tulkin käyttö¶
Interaktiivisessa Python-tulkissa
voimme suorittaa Python-koodia rivi riviltä ja nähdä rivin palauttaman tuloksen. Käynnistetään tulkki kirjoittamalla komentokehotteeseen ipython
. Kun olet saanut IPython-tulkin auki komentokehotteessa
, rivin alkuun ilmestyy In [1]:
Tästä tiedät olevasi tulkissa
. Mac OSX: Jos asennuksen jälkeen ipython-komentoa ei löydy, kirjoita sen sijaan
python3 -m IPython
Kokeile nyt muutamia yksinkertaisia matemaattisia
operaatioita
, esimerkiksi yhteen-, vähennys-, kerto- ja jakolaskua luvuilla. Huomaat, että jo näillä taidoilla Pythonia voi käyttää laskimena!In [1]: 1 + 1
Out[1]: 2
In [2]: 5 * 3 - 4
Out[2]: 11
In [3]: 9 / 2
Out[3]: 4.5
Python-tulkista poistuminen¶
Jotta voit suorittaa seuraavan vaiheen, sinun tulee palata
komentokehotteeseen
eli poistua Python-tulkista
. Tiedät olevasi tulkissa, jos näet edelleen rivin alussa In [N]:
. IPythonia käyttäessä poistuminen tapahtuu painamalla Ctrl + D ja painamalla varmistuskysymykseen Enter. Konsolista voi poistua myös komennoilla quit
ja exit
.Jos käytät IPythonin sijasta tavallista Python-tulkkia Windowsissa, siitä poistutaan painamalla ensin Ctrl + Z jolloin riville ilmestyy
^Z
. Tämän jälkeen tulee vielä painaa Enter. Mac- ja Linux-koneilla ei ole tätä eroa. Tavallisesta tulkista voi poistua myös kirjoittamalla quit()
.Python-kooditiedostojen suorittaminen¶
Kun haluamme ohjelmoida todellisia ohjelmia, emmekä suorittaa koodia vain rivi kerrallaan, meidän on kirjoitettava koodi niin sanottuun
lähdekooditiedostoon
jollain tekstieditorilla. Python-kooditiedostojen suorittaminen tapahtuu komentoriviltä
siten, että ensin liikutaan cd
-komennolla samaan hakemistoon, missä tiedosto sijaitsee. Tämän jälkeen suoritetaan komento ipython kooditiedosto.py
, missä kooditiedosto korvataan sen tiedoston nimellä, joka halutaan suorittaa.Esimerkiksi ylläoleva heimaailma.py-niminen tiedosto, joka sijaitsee hakemistossa Downloads, suoritettaisiin liikkumalla ensin kotihakemistosta hakemistoon Downloads komennolla
cd Downloads
ja sen jälkeen suorittamalla komento ipython heimaailma.py
. Lataa tiedosto ylläolevasta linkistä (alaspäin osoittava vihreä nuoli) tietokoneesi Downloads-hakemistoon ja kokeile!Huomaa, että
tiedostopääte
on sisällytettävä mukaan tiedostonnimeen
. Python-kooditiedostoissa tuo pääte on aina .py
.Kooditiedostojen suorittamisesta IPythonilla ei ole kovin suurta etua. Teemme niin pääasiassa sen takia, että silloin kooditiedostoista syntyvät virheilmoitukset näyttävät samoilta kuin tulkissa syntyvät. Eli kurssilla ei tarvitse opetella lukemaan kahdenlaisia virheilmoituksia.
Ohjelmointiharjoituksia¶
Näissä esitehtävissä tutustutaan hyvin pintapuolisesti Python-koodin kirjoittamiseen ja ohjeiden antamiseen tietokoneelle. Apuna käytetään Turtle-nimistä
kirjastoa
, joka tulee Pythonin perusasennuksen mukana, ja jolla voi piirtää grafiikkaa antamalla tietokoneelle käskyjä. Turtlessa on käskyjä kohtalaisen paljon, mutta näissä tehtävissä käytämme vain muutamaa niistä. Turtlea käytetään myös myöhemmin kurssilla kunkin harjoituskerran lämmittelytehtävänä.Kuvalähteet¶
- alkuperäinen lisenssi: CC-BY-NC 2.0 (teksti lisätty)
Anna palautetta
Kommentteja ohjeista?