Verkkokurssi Python-kielen alkeista: https://tie.koodariksi.fi/alkeet/
Selaimella toimiva Python-editori alla olevien tehtävien ja omien ohjelmien tekemiseen: replit.com
Tällä sivulla olevat tietolaatikot ja osa tehtävistä on lainattu Juuso Linnusmäen "Ohjelmointia Pythonilla" -materiaalista.
Tehtävä 1: Tulostaminen
a) Tee ohjelma, joka tulostaa näytölle tekstin Hei maailma!
vinkki: print("Kirjoita viestisi lainausmerkkien sisään.")
b) Laita ohjelma tulostamaan edellisen tekstin alle Minä olen X. (Laita X:n tilalle oma nimesi.)
c) Käske lopuksi ohjelmaasi tulostamaan laskutoimituksen 547+453 vastaus.
vinkki: Laskutoimitus pitää kirjoittaa print-komentoon sulkujen sisään ilman lainausmerkkejä.
Tehtävä 2: Laskuja
Tee ohjelma, joka tulostaa seuraavien laskutoimitusten tulokset. (Älä tulosta mitään muuta kuin lopputulokset.)
a) 12 - 7
b) 3.1 * 5.0
c) (12 + 8) / 4
Tehtävä 3: Muuttujat
Määrittele aluksi ohjelman alkuun muuttuja koulumatka ja tallenna muuttujaan koulumatkasi pituus kilometreinä.
vinkki: koulumatka = 2.6
Tee sitten ohjelma, joka tulostaa näytölle tekstin Koulumatkani pituus kilometreinä on…
Käytä print()-komennossa ohjelman alussa määrittelemääsi muuttujaa koulumatka!
vinkki: print(”Koulumatkani pituus kilometreinä on”, koulumatka)
Mitä tapahtuu, jos muutat ohjelman alussa määrittelemäsi muuttujan koulumatka lukuarvoa joksikin toiseksi?
Tehtävä 4: Kommentointi
Yhden oppilaan kouluruokailu maksaa noin 3 euroa päivässä. Koulussamme on 150 oppilasta. Tee ohjelma, joka laskee, kuinka paljon kouluruokaan menee rahaa päivässä. Luo ensin muuttujat annoshinta ja oppilasmaara. Käytä sitten näitä muuttujia laskussa ja tulosta vastaus.
vinkki: print("Kouluruokaan kuluu yhteensä", annoshinta*oppilasmaara, "euroa.")
Kirjoita ohjelmaasi vielä kommentit, joiden avulla kuka tahansa koodia katsova ymmärtää, mitä ohjelma tekee.
vinkki: # Tallennetaan muuttujiin koulun oppilasmäärä ja yksittäisen annoksen hinta.
(Jos koulun oppilasmäärä tai ruoan hinta muuttuvat, koko koodia ei tarvitse kirjoittaa uudestaan, vaan riittää, että muuttujien arvot päivitetään. Siksi on kätevä käyttää laskukaavoissa muutujia eikä näpytellä sinne lukuja.)
Tehtävä 5.1: Moikkaa käyttäjää
Tee ohjelma, joka kysyy käyttäjän nimen ja sitten tervehtii häntä. Saat itse päättää, millä sanoilla ohjelma tervehtii käyttäjää, kunhan se puhuttelee tätä nimeltä.
vinkki: Katso mallia yllä olevasta esimerkistä 6.
Tehtävä 5.2: Nimi ja luokka
Tee ohjelma, joka kysyy ensin käyttäjältä nimen ja luokan. Sitten se tulostaa alla olevan esimerkin mukaisen tervehdyksen.
vinkki: Muista luoda kaksi muuttujaa ja nimeä ne sopivasti.
Anna nimesi: Pekka Python
Anna luokkasi: 9
Olet siis Pekka Python, ja olet luokalla 9.
vinkki:
nimi = input("Syötä nimesi: ")
print("Olet siis " +nimi+ ".")
Tehtävä 6.1: Laskuja käyttäjän antamilla luvuilla
Tee ohjelma, joka kysyy käyttäjältä ensin kaksi lukua. Tallenna luvut float-muodossa muuttujiin (esim. luku1 ja luku2). Katso mallia yllä olevan esimerkin alusta. Tee sitten ohjelma, joka laskee näiden lukujen yhteen-, vähennys-, kerto- ja jakolaskun tuloksen näytölle.
vinkki: luku1 = float(input("Anna ensimmäinen luku: "))
vinkki: print(”Luvun”, luku1, ”ja luvun”, luku2, ”summa on”, luku1+luku2)
Tehtävä 6.2: Vuorokauden unimäärä
Tee ohjelma, joka kysyy, kuinka monta tuntia käyttäjä nukkuu vuorokaudessa, ja tallentaa vastauksen muuttujaan uni. Tämän jälkeen ohjelma tulostaa näytölle tiedon, kuinka monta prosenttia vuorokaudessa käyttäjä nukkuu.
vinkki: print(”Nukut vuorokaudesta”, (uni/24)*100, ”prosenttia!”)
Opetusvideo: Python - if-rakenne (Tekijä: Samu Montonen)
Tehtävä 7.1: Täysi-ikäinen vai ei?
Tee ohjelma, joka kysyy käyttäjältä tämän ikää (kokonaisluku) ja iän perusteella ohjelma kertoo käyttäjälle, onko hän alaikäinen vai täysi-ikäinen.
vinkki: Katso mallia yllä olevasta esimerkistä 9.
Tehtävä 7.2: Selvitä käyttäjän ikä
Tee ohjelma, joka kysyy käyttäjältä, minä vuonna hän on syntynyt ja mikä vuosi nyt on. Tallenna käyttäjän antamat tiedot muuttujiin syntymävuosi ja tämävuosi. Kerro sitten käyttäjälle, kuinka monta vuotta hän täyttää tänä vuonna.
vinkki: print(”Täytät tänä vuonna”, laske tähän käyttäjän ikä)
Kerro lopuksi käyttäjälle, voiko hän saada mopokortin tai ajokortin tänä vuonna.
vinkki: print(”Voit saada tänä vuonna mopokortin.") TAI print("Et ole vielä mopoikäinen.")
Tehtävä 7.3: Kumpi luvuista on isompi?
Tee ohjelma, joka kysyy käyttäjältä kaksi lukua ja ilmoittaa sitten, kumpi niistä on isompi. Ota huomioon myös se vaihtoehto, että luvut saattavat olla yhtä isot.
vinkki: print("Luku", luku1, "on isompi kuin", luku2)
Opetusvideo: Pythonin toistorakenteet (Tekijä: Samu Montonen)
Tehtävä 8.1 Anna oikea salasana
Tee ohjelma, joka kysyy käyttäjältä salasanaa. Ohjelma toistaa salasanan kysymistä, kunnes käyttäjä antaa oikean salasanan. Valitse salasanaksi jonkun teidän luokkanne oppillaan nimi. Kun käyttäjä antaa oikean salasanan, tulosta näytölle onnittelu tai jokin muu ystävällinen viesti.
vinkki: Katso mallia esimerkistä 13.
Tehtävä 8.2 Ikuinen silmukka (while True:)
Tee ohjelma, joka kysyy käyttäjältä aina uudestaan, mikä on koulun kivoin luokka. Ohjelma jatkaa kyselyä ikuisesti, kunnes käyttäjä vastaa "kasit". Sen jälkeen ohjelma kehuu käyttäjää oikeasta vastauksesta.
vinkki: Katso mallia esimerkistä 15.
Tehtävä 8.3 Yhteenlaskukone
Tee ohjelma, joka pyytää käyttäjältä lukuja ja laskee niiden summan niin kauan, kunnes käyttäjän antama luku on 0. Tulosta summa ruudulle näkyviin.
vinkki: Aloita asettamalla summa-niminen muuttuja nollaksi. Sen jälkeen kysy käyttäjältä uusi luku. Jos käyttäjän antama luku ei ole nolla, lisää se summa-muuttujaan.
summa = 0
uusiluku = int(input("Anna kokonaisluku: "))
while uusiluku != 0:
summa = summa + uusiluku
Tehtävä 8.4 Arvauspeli
Tee satunnaislukugeneraattorin avulla peli, jossa pitää arvata oikein jokin numero nollan ja tuhannen väliltä. Kopioi ensin alla oleva koodi.
import random
arvattava = random.randint(0, 1000)
Kopioimasi koodi luo satunnaisen luvun ja tallentaa luvun muuttujaan nimeltä arvattava. Käyttäjän tehtävä on arvata tuo luku oikein. Tarvitset seuraavaksi while-rakennetta ja if-rakennetta. Valmiin pelisi pitäisi näyttää tältä (käyttäjän näpyttelemät arvaukset näkyvät punaisella):
Yleisohje seuraaviin tehtäviin:
Olisi hyvä, että jokaisen ohjelman alussa ohjelma antaisi käyttäjälle tiedon, mitä kyseinen ohjelma tekee,
esim. print(”Tämä ohjelma laskee, kuinka monta prosenttia jokin luku on jostain toisesta luvusta.”)
Tehtävä 1: Kuinka monta prosenttia?
Tee ohjelma, joka laskee, kuinka monta prosenttia jokin luku on jostain toisesta luvusta. Aluksi ohjelma kysyy lukua 1 ja tallentaa sen muuttujaan luku1. Tämän jälkeen ohjelma kysyy toista lukua ja tallentaa sen muuttujaan luku2. Ohjelma laskee kuinka paljon on (luku1/luku2)*100 ja tulostaa kysytyn tiedon näytölle.
vinkki: luku1=float(input(”Anna jokin luku \n”))
print(luku1, ”on luvusta”, luku2, luku1/luku2*100, ”prosenttia”)
Tehtävä 2: Alennusprosentti
Tee ohjelma, joka laskee, kuinka suuri jokin alennus on prosentteina. Aluksi ohjelma kysyy alkuperäistä hintaa ja tallentaa tiedon muuttujaan alkuhinta. Seuraavaksi ohjelma kysyy alennettua hintaa ja tallentaa sen muuttujaan alehinta. Tämän jälkeen ohjelma laskee, kuinka suuri alennus on prosentteina ja tulostaa tiedon näytölle.
vinkki: muutos=alkuhinta-alehinta
Tehtävä 3: Kuinka paljon on x prosenttia jostain luvusta?
Tee ohjelma, jonka avulla saat laskettua prosenttiosuuden jostakin luvusta. Aluksi ohjelma kysyy lukua, josta prosenttiosuus halutaan laskea. Tämän jälkeen ohjelma kysyy, kuinka monta prosenttia luvusta halutaan laskea. Seuraavaksi ohjelma laskee kysytyn prosenttiosuuden ja tulostaa sen näytölle.
vinkki: Prosenttiosuus saadaan laskettua kertolaskun avulla. Lasku noudattaa aina samaa kaavaa:
Muuta ensin käyttäjän antama prosenttiluku desimaaliluvuksi jakamalla se sadalla.
Kerro äsken laskemallasi desimaaliluvulla se luku, josta haluat ottaa tietyn prosenttiosuuden.
Tehtävä 4: Alennettu hinta
Tee ohjelma, joka laskee tuotteen uuden hinnan, kun alkuperäinen hinta ja alennusprosentti tiedetään. Ohjelma kysyy aluksi tuotteen alkuperäistä hintaa ja tallentaa sen sopivasti nimettyyn muuttujaan. Tämän jälkeen ohjelma kysyy, kuinka monta prosenttia tuote on alennuksessa ja tallentaa myös tämän tiedon muuttujaan. Sen jälkeen ohjelma laskee alennetun hinnan ja tulostaa sen näytölle.
Kaisan malliohjelma (joka tekee vähän enemmänkin kuin ohjeessa käsketään)
Tehtävä 5: Liuosten sekoitus
Tee ohjelma, joka kertoo syntyvän liuoksen pitoisuuden, kun sekoitetaan kahta eri vahvuista liuosta toisiinsa. Aluksi ohjelma kysyy liuoksen 1 massan ja pitoisuuden (%) ja tallentaa tiedot sopiviin muuttujiin. Tämän jälkeen ohjelma kysyy liuoksen 2 massan ja pitoisuuden (%) ja tallentaa myös nämä tiedot sopiviin muuttujiin. Tämän jälkeen ohjelma laskee syntyvän sekoituksen pitoisuuden ja tulostaa tiedon näytölle.
vinkki:
Selvitä ensin kuinka monta grammaa liuennutta ainetta on yhteensä liuoksissa 1 ja 2.
Lopullisen sekoituksen pitoisuuden saat seuraavalla laskulla: (liuenneen aineen massat yhteensä) / (koko sekoituksen massa yhteensä) * 100
Tehtävä 1: Särmiön tilavuus
Tee ohjejlma, joka kysyy käyttäjältä suorakulmaisen särmiön pituuden, leveyden ja korkeuden. Näiden tietojen avulla ohjelma laskee särmiön tilavuuden ja ilmoittaa sen käyttäjälle.
vinkki:
pituus=float(input(”Anna suorakulmaisen särmiön pituus senttimetreinä:”))
Tekstin muuttaminen ASCII-kuvaksi
Tee ohjelma, joka muuttaa annetun tekstin ASCII-kuvaksi. Kopioi alla oleva koodi ja kokeile, mitä se tekee.
import pyfiglet
teksti = input("Kirjoita sana tai lyhyt teksti: ")
kuva = pyfiglet.figlet_format(teksti)
print(kuva)
ASCII-kuvien tulostaminen
Kopioi alla oleva koodisotku ja kokeile, mitä se tekee. Voit sen jälkeen kokeilla korvata kuvan jollain muulla ASCII-kuvalla. Kopioitavia kuvia löydät esimerkiksi täältä.
print('''
*******************************************************************************
| | | |
_________|________________.=""_;=.______________|_____________________|_______
| | ,-"_,="" `"=.| |
|___________________|__"=._o`"-._ `"=.______________|___________________
| `"=._o`"=._ _`"=._ |
_________|_____________________:=._o "=._."_.-="'"=.__________________|_______
| | __.--" , ; `"=._o." ,-"""-._ ". |
|___________________|_._" ,. .` ` `` , `"-._"-._ ". '__|___________________
| |o`"=._` , "` `; .". , "-._"-._; ; |
_________|___________| ;`-.o`"=._; ." ` '`."\` . "-._ /_______________|_______
| | |o; `"-.o`"=._`` '` " ,__.--o; |
|___________________|_| ; (#) `-.o `"=.`_.--"_o.-; ;___|___________________
____/______/______/___|o;._ " `".o|o_.--" ;o;____/______/______/____
/______/______/______/_"=._o--._ ; | ; ; ;/______/______/______/_
____/______/______/______/__"=._o--._ ;o|o; _._;o;____/______/______/____
/______/______/______/______/____"=._o._; | ;_.--"o.--"_/______/______/______/_
____/______/______/______/______/_____"=.o|o_.--""___/______/______/______/____
/______/______/______/______/______/______/______/______/______/______/_____ /
*******************************************************************************
''')
Tekstin animoiminen ruudulle
Kopioi alla oleva koodi ja muokkaa se omaan ohjelmaasi sopivaksi.
import sys
import time
#Alla on määritelty aliohjelma, joka tulostaa ruudulle tekstiä kirjain kirjaimelta.
def animoi(teksti):
for kirjain in teksti:
print(kirjain, end="")
sys.stdout.flush()
time. sleep(0.05) # Sulkujen sisällä oleva numero määrittää, kuinka nopeasti teksti tulee ruudulle. Voit vaihtaa sen arvoa, jos haluat.
#Kirjoita sulkujen sisään lainausmerkkeihin se teksti, jonka haluat ilmestyvän ruudulle.
animoi("Tämä teksti tulee animoituna ruudulle kirjain kirjaimelta.")
#Sitten tehdään tyhjä rivi tähän väliin ja tulostetaan loppukommentti kolmen sekunnin kuluttua.
print("\n")
time.sleep(3)
animoi("Näppärää, eikö?")
Tämän linkin takana on valmis ohjelma. Testaa!
Muuttuva tarina
Tee ohjelma, joka tulostaa tarinan. Henkilön nimi tallennetaan muuttujaan, joten jos nimeä halutaan muuttaa, riittää antaa muuttujalle toinen arvo ja uusi nimi ilmestyy kaikkiin kohtiin tarinassa. Voit halutessasi lisätä henkilölle myös häntä kuvaavia adjektiiveja.
Jos käyttäjä antaa henkilön nimeksi "Matti", ohjelma voisi tulostaa seuraavaa:
Syrjäisessä laaksossa asui nuorukainen Matti,
joka oli ammatiltaan lammaspaimen.
Matti oli vasta herännyt,
kun pihaan ratsasti tumma-asuinen ritari.
Pian Matti saisi kuulla, että hänet oli
valittu tärkeään tehtävään...
Jos nimi-muuttujassa lukee "Arto", ohjelma voisi tulostaa seuraavaa:
Syrjäisessä laaksossa asui nuorukainen Arto,
joka oli ammatiltaan lammaspaimen.
Arto oli vasta herännyt,
kun pihaan ratsasti tumma-asuinen ritari.
Pian Arto saisi kuulla, että hänet oli
valittu tärkeään tehtävään...
Kaisan oma versio muuttuvasta tarinasta löytyy täältä.
(Yllä olevan tehtävän idea on lainattu Helsingin yliopiston "Ohjelmoinnin perusteet" -kurssilta.)