Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Ääretön Silmukka | For-Silmukka
Practice
Projects
Quizzes & Challenges
Visat
Challenges
/
Python-Silmukoiden Opas

bookÄäretön Silmukka

Loputon silmukka on silmukka, joka ei koskaan pääty, koska sitä ohjaava ehto ei koskaan arvioidu epätodeksi (False). Tällaiset silmukat voivat aiheuttaa ohjelman jumiutumisen tai kaatumisen, joten niitä tulisi välttää, ellei niitä ole tarkoituksella käytetty.

Jos ehto on aina True, silmukka suoritetaan ikuisesti. Esimerkiksi matkustamiseen liittyvässä tilanteessa:

# Infinite loop example
while 'Barcelona' in ['Monako', 'Liverpool', 'Barcelona', 'Munchen']:
    print('I found Barcelona!')
  • Ehto 'Barcelona' in [...] on aina True, koska 'Barcelona' on listalla. Tämä vastaa ehtoa while True:;
  • Silmukka tulostaa jatkuvasti 'I found Barcelona!' ilman mahdollisuutta pysäyttää sitä.

Virheellisesti päivitetty silmukkamuuttuja voi myös johtaa ikuiseen silmukkaan. Esimerkiksi:

# 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 kasvateta, joten ehto i < len(travel_list) on aina True;
  • Silmukka tulostaa ensimmäisen kaupungin ('Monako') loputtomasti.

Välttääksesi ikuiset silmukat, varmista että silmukan ehto on suunniteltu siten, että se lopulta arvioituu arvoon False. Tämä tarkoittaa, että ehdon tulee olla dynaaminen ja muuttua silmukan suorituksen aikana. Lisäksi, jos käytät muuttujaa (kuten laskuria) silmukan ohjaamiseen, varmista että sitä kasvatetaan tai päivitetään asianmukaisesti silmukan sisällä, jotta ehto ei pysy True-arvossa loputtomasti.

1. Mikä ongelma on seuraavassa koodissa?

2. Miten voit muokata tätä silmukkaa estääksesi sen toistumisen loputtomasti?

question mark

Mikä ongelma on seuraavassa koodissa?

Select all correct answers

question mark

Miten voit muokata tätä silmukkaa estääksesi sen toistumisen loputtomasti?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 8

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

bookÄäretön Silmukka

Pyyhkäise näyttääksesi valikon

Loputon silmukka on silmukka, joka ei koskaan pääty, koska sitä ohjaava ehto ei koskaan arvioidu epätodeksi (False). Tällaiset silmukat voivat aiheuttaa ohjelman jumiutumisen tai kaatumisen, joten niitä tulisi välttää, ellei niitä ole tarkoituksella käytetty.

Jos ehto on aina True, silmukka suoritetaan ikuisesti. Esimerkiksi matkustamiseen liittyvässä tilanteessa:

# Infinite loop example
while 'Barcelona' in ['Monako', 'Liverpool', 'Barcelona', 'Munchen']:
    print('I found Barcelona!')
  • Ehto 'Barcelona' in [...] on aina True, koska 'Barcelona' on listalla. Tämä vastaa ehtoa while True:;
  • Silmukka tulostaa jatkuvasti 'I found Barcelona!' ilman mahdollisuutta pysäyttää sitä.

Virheellisesti päivitetty silmukkamuuttuja voi myös johtaa ikuiseen silmukkaan. Esimerkiksi:

# 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 kasvateta, joten ehto i < len(travel_list) on aina True;
  • Silmukka tulostaa ensimmäisen kaupungin ('Monako') loputtomasti.

Välttääksesi ikuiset silmukat, varmista että silmukan ehto on suunniteltu siten, että se lopulta arvioituu arvoon False. Tämä tarkoittaa, että ehdon tulee olla dynaaminen ja muuttua silmukan suorituksen aikana. Lisäksi, jos käytät muuttujaa (kuten laskuria) silmukan ohjaamiseen, varmista että sitä kasvatetaan tai päivitetään asianmukaisesti silmukan sisällä, jotta ehto ei pysy True-arvossa loputtomasti.

1. Mikä ongelma on seuraavassa koodissa?

2. Miten voit muokata tätä silmukkaa estääksesi sen toistumisen loputtomasti?

question mark

Mikä ongelma on seuraavassa koodissa?

Select all correct answers

question mark

Miten voit muokata tätä silmukkaa estääksesi sen toistumisen loputtomasti?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 8
some-alt