Transcription of Ohjelmoinnin perusteet Pythonilla - cs.hut.fi
1 Ohjelmoinnin perusteet Pythonilla Teemu Sirki , 2015. P ivitetty Yleist . Materiaali sis lt l hinn Aalto-yliopiston Ohjelmoinnin peruskurssi Y1:n harjoitus- teht viss tarvittavia keskeisi asioita Vastaavat tiedot l ytyv t huomattavasti laajemmin kurssin opetusmonisteesta Ohjelmoimaan oppii vain ohjelmoimalla ja oivaltamalla! N yt lle tulostaminen Komennolla print tulostetaan n yt lle print("Ohjelmointi on hauskaa!"). luku1 = 3. luku2 = 5. print("Valitut luvut ovat", luku1, "ja", luku2). luku1 = 3. luku2 = 5. print("Lukujen summa on", luku1 + luku2). Laskutoimitukset K yt ss on tavalliset laskutoimitukset + yhteenlasku - v hennyslasku Katkaisevan jakolaskun lopputulos on jaettavien lukujen tyypist riippuen * kertolasku kokonaisluku tai desimaaliluku, jonka desimaaliosa on aina nolla.
2 / jakolasku 10 / 4 = // katkaiseva jakolasku 10 // 4 = 2. ** potenssiin korotus // 4 = % jakoj nn s tulos = 2 + 3. tulos = 2 * (3 + 5). tulos = (luku1 + luku2) * 3. tulos = tulos + 2 tulos += 2. N pp imist n lukeminen Komennolla input voi pyyt k ytt j . antamaan tietoja ohjelmalle nimi = input("Kerro nimesi\n"). print("Hei", nimi). Vastaus palautetaan aina merkkijonona, vaikka k ytt j antaisikin luvun Merkkijono \n input-k skyn lopussa tarkoittaa rivinvaihtoa. N in kysymys ja vastaus menev t eri riveille, mik on tarpeellista mm. palautettaessa teht vi Gobliniin. Tyyppimuunnokset input-k sky palauttaa k ytt j n sy tteen aina merkkijonona, joten ennen kuin k ytt j lt saatuja tietoja voi k ytt.
3 Laskutoimituksissa, tulee tehd tyyppi- muunnos merkkijonosta luvuksi luku = input("Anna luku, kerron sen kahdella\n"). tulos = float(luku) * 2. print("Luku kaksinkertaisena on", tulos). float tarkoittaa desimaalilukua, int kokonaislukua Tyyppimuunnokset Muunnokseen on monta erilaista tapaa: rivi = input("Anna 1. luku\n") luku1 = input("Anna 1. luku\n"). luku1 = float(rivi) luku1 = float(luku1). rivi = input("Anna 2. luku\n") luku2 = input("Anna 2. luku\n"). luku2 = float(rivi) luku2 = float(luku2). tulo = luku1 * luku2 tulo = luku1 * luku2. luku1 = input("Anna 1. luku\n"). luku2 = input("Anna 2.)
4 Luku\n"). tulo = float(luku1) * float(luku2). Tyyppimuunnoksen voi yhdist k tev sti my s input-k skyyn, jolloin se ei unohdu: luku1 = float(input("Anna 1. luku\n")). luku2 = float(input("Anna 2. luku\n")). tulo = luku1 * luku2. Vakiot Vakio on ohjelmassa kiinte sti m ritelty arvo, jolle on annettu sit kuvaava nimi eik sen arvoa muuteta Vakiot tekev t koodista helpommin ymm rrett v . Sen sijaan, ett kirjoittaisi saman lukuarvon useaan kohtaan koodia, voi k ytt vakion nime . Vakioiden nimet kirjoitetaan isoilla kirjaimilla KILOHINTA = PAKKAUSKULUT = paino = float(input("Anna paino kilogrammoina:\n")).
5 Print("Tuote maksaa", paino * KILOHINTA + PAKKAUSKULUT, "euroa."). Ehtolauseet if-ehtolauseilla voidaan ohjata ohjelman toimintaa erilaisten ehtojen avulla Ehtolauserakenteita on erilaisia eri k ytt tarkoituksia varten if luku >= 0: print("Luku on nolla tai suurempi"). if luku >= 0: print("Luku on nolla tai suurempi"). else: print("Luku on nollaa pienempi"). Ehtolauseet if luku > 0: print("Luku on nollaa suurempi"). elif luku < 0: print("Luku on nollaa pienempi"). else: print("Luku on nolla"). Vain ensimm inen ehdot t ytt v osio suoritetaan, loput j tet n huomiotta Ehtolauseessa voi olla (tai olla olematta).
6 Rajaton m r elif-osia ja yksi else-osa Ehtolauseet Ehdoissa voi hy dynt vertailuoperaattoreita == yht suuri erisuuri !=. Ehdon voi k nt . > suurempi kuin < pienempi kuin sanalla not if not luku > 9: >= suurempi tai yht suuri kuin <= pienempi tai yht suuri kuin Ehtoja voi yhdistell sanoilla and ja or if luku1 > 4 and luku2 < 3: if (luku1 > 4) or (luku2 < 3 and luku2 >= 1): if luku > 2 and luku <= 8: if 2 < luku <= 8: Tarvittaessa t ytyy k ytt sulkeita lausekkeiden ryhmittelemiseen. while-silmukka while-silmukan avulla voidaan toistaa koodia niin kauan kuin jatkamisehto on voimassa kierros = 0.
7 While kierros < 5: print(kierros). kierros += 1. print("Silmukka suoritettiin", kierros, "kertaa"). Jatkamisehto tarkistetaan jokaisen kierroksen alussa, my s ensimm isen Silmukkaa ei siis v ltt m tt suoriteta kertaakaan while-silmukka Jatkamisehto m ritell n samalla tavalla kuin if-lauseessa Jos jatkamisehto ei ole voimassa, ohjelman suorittaminen jatkuu seuraavasta sisent m tt m st rivist silmukan j lkeen kierros = 0. while kierros != 8: print(kierros). kierros += 1. print("Silmukka suoritettiin", kierros, "kertaa"). while-silmukka Suorituskertojen m r ei tarvitse tiet . v ltt m tt ennakkoon Laske miljoonaa pienemm t kahden potenssit: luku = 1.
8 While luku < 1000000: print(luku). luku *= 2. Silmukan suorittaminen p ttyy, kun luku tulee liian suureksi eik jatkamisehto ole en voimassa while-silmukka while-silmukan avulla voidaan pyyt k ytt j lt . esimerkiksi lukuja, joiden m r ei tiedet ennakkoon Laske positiivisten lukujen m r , lopeta nollalla: laskuri = 0. luku = int(input("Anna ensimmainen luku\n")). while luku != 0: if luku > 0: laskuri += 1. luku = int(input("Anna seuraava luku\n")). print("Annoit", laskuri, "positiivista lukua"). Ensimm inen luku pyydet n jo ennen silmukkaa Seuraava luku pyydet n kierroksen lopussa ja jatkamisehto tarkistetaan seuraavan kierroksen alussa while-silmukka Yleisimm n k ytt tavan muistilista: Jatkamisehdossa olevan muuttujan luku = 0.
9 Pit olla olemassa jo ennen ensimm ist kierrosta while luku < 10: Varmista, ett jatkamisehto muuttuu jossakin vaiheessa ep todeksi. Yleens kuitenkin aikaisintaan vasta .. ensimm isen kierroksen j lkeen. luku += 1 Muista p ivitt jatkamisehtoon liittyv n muuttujan arvoa for-silmukka for-silmukan avulla voidaan toistaa koodia, jos toistojen m r tiedet n heti silmukan alussa Toista silmukka viisi kertaa: for luku in range(5): print("Hei maailma!"). for-silmukkaan kuuluu aina muuttuja, jonka arvo p ivittyy automaattisesti (edellisess esimerkiss t t muuttujaa ei vain tarvittu mihink n). for-silmukan avulla voidaan k yd l pi my s luvut ennalta m ritellylt v lilt.
10 Toistojen m r tai lukuv li voi olla kiinte sti koodissa tai arvot voidaan lukea muuttujista for-silmukka Askellus m ritell n range-funktiolla Lukuja l pik yv t for-silmukat voi korvata aina my s while-silmukalla Toista silmukka viisi kertaa / k y l pi luvut 0, 1, 2, 3, 4: for luku in range(5): luku = 0. print(luku) while luku < 5: range(toistoja) print(luku). luku += 1. K y l pi luvut 13-28 yksitellen (13, 14, 15, .., 26, 27, 28): for luku in range(13, 29): luku = 13. print(luku) while luku < 29: range(alaraja, yl raja+1) print(luku). luku += 1. for-silmukka K y l pi joka toinen luku v lill 12-20 (12, 14, 16, 18, 20): for luku in range(12, 21, 2): luku = 12.