Python: Silmukat
Tulosta luvun 12 kertotaulun 10 ensimmäistä riviä
Sen sijaan, että kirjotettaisiin 10 tulostus-käskyä käsin, tämä kannattaa tehdä toistolauseen eli silmukan avulla.
kertoja = 1 # alussa kertoja on 1
while kertoja <= 10:
tulo = 12 * kertoja
print("12 * " + str(kertoja) + " = " + str(tulo))
kertoja += 1 # kasvatetaan kertojaa yhdelläTuloste:
12 * 1 = 12
12 * 2 = 24
\(\vdots\)
12 * 10 = 120
while-silmukka toistaa lohkoa niin kauan, kun while-avainsanan jälkeen kirjoitettu ehto on voimassa.
Heitä noppaa niin kauan, kunnes silmäluvuksi tulee 6. Tulosta jokainen heitto ja lopuksi heittojen lukumäärä.
import random
heittoja = 0 # alussa heittoja on 0
while True: # jatketaan toistaiseksi
silmaluku = random.randint(1, 6) # arvotaan kok.luku väliltä 1-6
print("Heitettiin silmäluku " + str(silmaluku))
heittoja += 1 # kasvatetaan heittojen määrää yhdellä
if silmaluku == 6:
break # poistutaan silmukasta
print("Heittoja tarvittiin: " + str(heittoja))"Ehto" True on aina tosi. Siis while-true-silmukasta poistutaan vain, jos erikseen näin käsketään break -käskyllä
while True:
print("Moi!")
if 1 == 2:
breakwhile-true-silmukasta saa helposti vahingossa ikuisen silmukan. Esim. seuraava ohjelma tulostaisi "Moi!" ikuisesti, koska ehto 1==2 ei ole koskaan tosi
⚠️⚠️⚠️
Tulosta kymmenen kertaan "Moi!"
for i in range(10):
print("Moi!")while-silmukan sijaan tämä voidaan tehdä näppärämmin for-silmukalla
for i in lista:
ottaa joka toistolla muuttujan i paikalle seuraavan luvun listasta, kunnes luvut loppuu
range(n) luo listan*, jossa on luvut 0, 1, 2, ..., n-1. Listassa on tällöin siis n lukua!
Miksi tässä toistetaan kymmenen kertaa?
* tarkalleen ottaen range on oma tietotyyppinsä, mutta sen saa helposti muutettua tavalliseksi listaksi funktiolla list()
Ensimmäinen esimerkki luvun 12 kertotaulusta olisi voitu helposti tehdä myös for-silmukalla
for kertoja in range(1, 11):
tulo = 12 * kertoja
print("12 * " + str(kertoja) + " = " + str(tulo))range(a, b) luo listan, jossa on kaikki kokonaisluvut luvusta \(a\) lukuun \(b-1\) asti
Funktiolle range voi antaa myös kolmannen parametrin,
joka on askeleen koko.
range(a, b, n) luo listan, joka alkaa luvusta a ja sisältää n:n välein kaikki kaikki b:tä pienemmät luvut.
Huom. myös n:n on oltava kokonaisluku!
for i in range(0, 10, 2):
print(i)Tuloste:
0
2
4
6
8
Vinkki: jos haluaa nopeasti tarkistaa, mitä lukuja rangessa on, voi muuttaa rangen ensiksi listaksi ja sitten tulostaa, esim.
print(list(range(0, 10, 2)))
05 Python: Silmukat
By Timo Pelkola
05 Python: Silmukat
- 232