lista = []
Scratch | Python |
---|---|
lista.append("hei") |
|
"hei" in lista |
|
lista[0] Huomioi että Pythonissa listan ensimmäinen elementti on 0. elementti! |
|
del(lista[0]) |
|
len(lista) |
|
lista[0] = "hei" |
print(lista)
Lista voi sisältää erilaisia elementtejä, seuraava koodi alustaa listan elementeillä "elementti" ja 9000 ja tulostaa sen.
löytyyListasta
-totuusarvomuuttujaa
käytetään apuna, jotta voidaan lopussa kertoa jos lukua ei löytynyt listasta. Kokeile esimerkkiä.
lista = [5, 4, 1, 8] luku = int(input("Anna luku josta haluat tietää onko se listassa: ")) löytyyListasta = False for muuttuja in lista: if muuttuja == luku: print("Luku on listassa!") löytyyListasta = True if löytyyListasta == False: print("Ei löytynyt listasta.")
lista = [1, 2, 3, 4, 5]
ja laskea ohjelmallisesti lukujen summa. Sinun täytyy siis alussa
alustaa muuttuja summa nollaksi. Vinkki: samaan muuttujaan voi sijoittaa uudelleen luvun, esimerkiksi tyyliin
summa = summa + muuttuja
Tulosta lopussa listan lukujen summa, vastauksen pitäisi olla 15.
lista = [5, 4, 3, 1, 7]
ja etsiä ohjelmallisesti listan pienin alkio sekä tulostaa se.
Vinkki: Määrittele ohjelman alkuun muuttuja pienin , jolle annat alkuarvoksi listan ensimmäisen alkion seuraavalla koodilla:
pienin = lista[0]
. Tämän jälkeen listaa läpikäydessä vertaa listan vuorossaolevaa alkiota apumuuttujaan,
ja muuta apumuuttujan arvoa jos se on tarpeen.
lista = [5, 4, 3, 1, 7]
ja etsiä ohjelmallisesti listan suurin alkio sekä tulostaa se.
print("Hei maailma") #Tämä on kommentti eikä sitä suoriteta
Huomaamme usein ohjelmakoodissamme tilanteita missä sama asia toistuu usein. Esimerkiksi, jos haluamme tulostaa luvut yhdestä kymmeneen, on yksi -- kohta onneksi turha -- ratkaisu kirjoittaa jokainen käsky erikseen.
print(1) print(2) print(3) print(4) print(5) print(6) print(7) print(8) print(9) print(10)
Entä jos haluaisimme tulostaa kaikki luvut yhdestä sataan, tai vaikka luvut yhdestä käyttäjän antamaan syötteeseen asti? Tällaisissa tapauksissa käytetään toistorakenteita. Toistorakenteiden avulla voidaan toteuttaa toistuvia käskyjä. Toistorakenteet näyttävät Pythonissa erilaisilta kuin Scratchissa, mutta perusidea on molemmissa sama, asioiden toistaminen.
Komento while
toistaa lohkonsa koodia niin kauan kun määritelty ehto on voimassa. Komennon while
ehto-osa toimii kuten if
:ssä.
Kuten kaikki lohkot, while
:n lohko alkaa kaksoispisteellä. Lohkossa oleva koodi on sisennettyä, ja lohko päättyy sisennyksen loppumiseen.
Seuraavassa esimerkissä tulostetaan luvut 1,2,..,9,10. Kun luku
-muuttuja saa arvokseen yli 10, while
-ehto ei ole enää voimassa ja toistaminen lopetetaan.
luku = 1; while luku < 11: print(luku) luku = luku + 1
1 2 3 4 5 6 7 8 9 10
Lue ylläoleva "niin pitkään kuin luku on pienempi kuin 11, tulosta luku ja kasvata lukua yhdellä".
Ylläolevassa koodissa ehto-lausessa olevaa muuttujaa luku
kasvatettiin jokaisella kierroksella yhdellä. Päivitysehto voi olla mikä tahansa.
luku = 1024 while luku >= 1: print(luku) luku /= 2; # luku = luku / 2
break
Komennon voi sijoittaa esimerkiksi if-ehdon sisälle silmukan sisälle, esimerkiksi seuraavaan tyyliin.
if luku == 0: break
syöte = input("Anna syöte: ")
if syöte.isnumeric():
syöte = int(syöte)
print(syöte)
muuttuja = 9000 print("Muuttujan muuttuja arvo on: " + str(muuttuja))
Tee ohjelma, joka tulostaa kokonaisluvut väliltä 100–1.
Ohjelman tulostus on seuraava:
100 99 98 (välissä paljon rivejä) 3 2 1
Tee ohjelma, joka tulostaa parilliset kokonaisluvut väliltä 2–100.
2 4 6 (välissä paljon rivejä) 96 98 100
Kirjoita ohjelma, joka tulostaa kokonaisluvut 1:stä käyttäjän antamaan lukuun asti.
Mihin asti? 3 1 2 3
Mihin asti? 5 1 2 3 4 5
Seuraavassa esimerkissä aloitamme laskemisen 0:sta ja toistamme while
-toistolausekkeen lohkoa, kunnes olemme lukeneet käyttäjältä kolme lukua, jolloin ehto ei ole enää voimassa.
print("Anna kolme lukua ja kerron niiden summan") luettu = 0 summa = 0 while luettu < 3: luku = int(input("Anna luku: ")) summa = summa + luku # tai summa += luku; luettu += 1 # tai luettu = luettu + 1; print("Lukujen summa on: " + str(summa))
Tiedämme usein jo etukäteen kuinka monta kertaa tahdomme suorittaa toistolausekkeen lohkon. Edellisessä esimerkissä suoritimme lohkon 3 kertaa. Tämän voi ilmaista myös käyttämällä for-toistolausetta seuraavalla tavalla.
print("Anna kolme lukua ja kerron niiden summan") summa = 0 for i in range(3): # i in range(3) tarkoittaa käydään luvut 0, 1, 2 yksitellen läpi luku = int(input("Anna luku: ")) summa = summa + luku # tai summa += luku; print("Lukujen summa on: " + str(summa))
Komento range
antaa kaikki luvut nollan ja komennolle range parametrina annetun luvun välillä. Esimerkiksi komento range(10)
antaisi luvut 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
.
Tässä ei kannata säikähtää yksikirjaimista muuttujaa i. Sen käytöllä on tietojenkäsittelyssä ja ohjelmoinnissa pitkät perinteet.
for-lauseke käy yksitellen range
-komennolla saadut luvut läpi. Jokainen luku on vuorollaan muuttujassa i
. Muuttujan i
arvon voi tulostaa aivan kuten kaikkien muidenkin muuttujien arvon. Esimerkiksi lukujen 1, 2, ... , 10 tulostaminen käy seuraavasti for-lausekkeen avulla.
for i in range(10): # i in range(10) käy läpi luvut 0, 1, ..., 9 print(str(i + 1))
1 2 3 4 5 6 7 8 9 10
Komennolle range
voi myös kertoa luvun josta aloitetaan. Ylläolevan tulostuksen saa aikaan myös seuraavasti:
for i in range(1, 11): # i in range(1, 11) käy läpi luvut 1, 2, ..., 10 print(i) # huomaa että pelkkää lukua ei tarvitse muuttaa tekstityyppiseksi tulostettaessa
Käytännössä for on while-lauseen pelkistetympi muoto. Komennolle range
voi asettaa myös kolmannen arvon, joka kertoo askeleen koosta. Esimerkiksi komento range(1, 10, 3)
käy läpi luvut 1, 4, 7 (luku 10 ei tule mukaan koska toiseksi arvoksi -- eli ylärajaksi -- on asetettu 10).
print "Tulostetaan joka kolmas luku."; for i in range(1, 10, 3): print(i)
Tulostetaan joka kolmas luku. 1 4 7
aat = "" for i in range(5): aat += "a" print(aat)
Tee ohjelma, joka tulostaa käyttäjän antaman määrän tähtiä.
Kuinka monta tähteä? 5 *****
Kuinka monta tähteä? 8 ********
Tee ohjelma, joka tulostaa suorakulmion, jonka leveyden ja korkeuden käyttäjä antaa.
Vihje: Tee kaksi sisäkkäistä silmukkaa.
Anna leveys: 4 Anna korkeus: 3 **** **** ****
Anna leveys: 10 Anna korkeus: 5 ********** ********** ********** ********** **********
Tee ohjelma, joka tulostaa listassa olevat luvut tyylikkäästi. Lukujen väliin tulee pilkku ja välilyönti. Viimeisen luvun jälkeen ei kuitenkaan tule pilkkua.
Lista määritellään koodin alussa seuraavasti:
luvut = [5, 1, 3, 4, 2];
Ohjelman tulostus on seuraava:
5, 1, 3, 4, 2