Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Ääretön Silmukka | The While Loop
Python-Silmukoiden Opas

book
Ääretön Silmukka

Ääretön silmukka on silmukka, joka ei koskaan pääty, koska sitä ohjaava ehto ei koskaan arvioidu False-arvoksi. Nämä silmukat voivat aiheuttaa ohjelman jumiutumisen tai kaatumisen, joten niitä tulisi välttää, ellei niitä ole nimenomaisesti tarkoitettu.

Jos ehto on aina True, silmukka jatkuu ikuisesti. Esimerkiksi, käytetään matkailuun liittyvää tilannetta:

python
# Infinite loop example
while 'Barcelona' in ['Monako', 'Liverpool', 'Barcelona', 'Munchen']:
print('I found Barcelona!')
  • Ehto 'Barcelona' in [...] on aina True, koska 'Barcelona' on läsnä listassa. Se on sama kuin while True:;
  • Silmukka tulostaa jatkuvasti 'I found Barcelona!' ilman mitään tapaa pysäyttää sitä.

Väärin päivitetty silmukkamuuttuja voi myös johtaa loputtomaan silmukkaan. Esimerkiksi:

python
# Another infinite loop example
i = 0
travel_list = ['Monako', 'Luxemburg', 'Liverpool', 'Barcelona', 'Munchen']

while i < len(travel_list):
print(travel_list[i])
# Missing increment: i += 1
  • Indeksiä i ei koskaan lisätä, joten ehto i < len(travel_list) on aina True;
  • Silmukka jatkaa ensimmäisen kaupungin ('Monako') tulostamista loputtomasti.

Välttääksesi äärettömät silmukat, varmista, että silmukan ehto on suunniteltu lopulta arvioitumaan False:ksi. Tämä tarkoittaa, että ehdon on oltava dynaaminen ja muututtava silmukan suorituksen aikana. Lisäksi, jos käytät muuttujaa (kuten laskuria) ohjaamaan silmukkaa, varmista, että se lisätään tai päivitetään oikein silmukan sisällä, jotta ehto ei pysy True:na loputtomasti.

1. Mikä on ongelma seuraavassa koodissa?

2. Kuinka voit muokata tätä silmukkaa estääksesi sen pyörimisen ikuisesti?

question mark

Mikä on ongelma seuraavassa koodissa?

i = 0
travel_list = ['Monako', 'Luxemburg', 'Liverpool']
while i < len(travel_list):
print(travel_list[i])

Select the correct answer

question mark

Kuinka voit muokata tätä silmukkaa estääksesi sen pyörimisen ikuisesti?

while 'Barcelona' in ['Monako', 'Luxemburg', 'Barcelona']:
print('I found Barcelona!')

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 2
some-alt