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

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 niin, että se lopulta arvioituu arvoon False. Tämä tarkoittaa, että ehdon täytyy 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 seuraavassa koodissa on?

2. Miten tätä silmukkaa voi muokata, jotta se ei pyöri loputtomasti?

question mark

Mikä ongelma seuraavassa koodissa on?

Select all correct answers

question mark

Miten tätä silmukkaa voi muokata, jotta se ei pyöri 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 niin, että se lopulta arvioituu arvoon False. Tämä tarkoittaa, että ehdon täytyy 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 seuraavassa koodissa on?

2. Miten tätä silmukkaa voi muokata, jotta se ei pyöri loputtomasti?

question mark

Mikä ongelma seuraavassa koodissa on?

Select all correct answers

question mark

Miten tätä silmukkaa voi muokata, jotta se ei pyöri loputtomasti?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 8
some-alt