Ana içeriğe geç
Modül 2 · Ders 3 ders 4Kurstaki 7/36~10 min
Modül dersleri (3/4)

döngüler halinde ara, devam et ve başka

Bir döngü içinde (hem for hem de while) normal akışı şununla değiştirebilirsiniz: üç yapı:

  • break — döngüden hemen çıkar.
  • continue — vücudun geri kalanını atlar ve bir sonraki yinelemeye atlar.
  • else (döngüde) — döngü bir break olmadan sona erdiğinde yürütülür.

break

Python
for n in [3, 7, 11, 4, 9]:
    if n % 2 == 0:
        primo_pari = n
        break
primo_pari  # 4

break döngüyü mümkün olan en kısa sürede durdurur. break sonrasındaki herhangi bir şey geçerli yinelemenin gövdesi yürütülmez.

continue

Python
risultati = []
for n in range(1, 11):
    if n % 2 == 0:
        continue   # skip evens
    risultati.append(n * n)
risultati  # [1, 9, 25, 49, 81]

continue'yı "sonraki yinelemeye git" olarak düşünün. Öğeleri filtrelemek için kullanılır bir girinti düzeyi daha eklemeden.

döngüde else (Pythonik deyim)

Python'a özgü bir özellik: döngüler aynı zamanda yalnızca aşağıdaki durumlarda çalıştırılan bir else'ye de sahip olabilir: döngü doğal olarak sonlandırıldı (break olmadan). Aramalar için mükemmeldir:

Python
target = 7
for n in [2, 4, 6, 8]:
    if n == target:
        trovato = True
        break
else:
    trovato = False
trovato  # False

Şu şekilde okuyun: _"listedeki her n için; break dalını alırsanız atlayın diğer; aksi halde else" komutunu çalıştırın.

İç içe döngüler: break yalnızca en içteki döngüden çıkar

Python
for x in range(3):
    for y in range(3):
        if x == y == 1:
            break
        print(x, y)

break yalnızca for y'den çıkar, for x'den değil. Her ikisinden de çıkmak için bir kullanmalısınız bayrak veya bir işlev + return.

Alışılmadık döngü...else yapısı

Python'da hem for hem de while döngüleri isteğe bağlı bir else cümlesi içerebilir. else bloğu yalnızca döngü normal şekilde tamamlanırsa (yani bir break ifadesiyle karşılaşılmadan) yürütülür. Bu, arama algoritmaları için çok faydalıdır (örneğin, "bir öğeyi arayın: bulunursa ara verin; aksi takdirde bulunamadığını bildirin").

Kendin dene

Egzersiz#python.m2.l3.e1
Denemeler: 0Yükleniyor…

'Sayılar = [10, 15, 20, 25, 30, 35]' listesi verildiğinde, 7'ye bölünebilen ilk sayıyı bulun ve onu 'sonuç'a atayın. Hiçbiri yoksa -1 atayın.

Düzenleyici yükleniyor…
İpucu göster

35, listede 7'ye bölünebilen ilk (ve tek) sayıdır.

3 denemeden sonra çözüm mevcut

Alıştırmayı gözden geçirin

Egzersiz#python.m2.l3.e2
Denemeler: 0Yükleniyor…

Bir for döngüsü (1, 21) kullanarak 1'den 20'ye kadar (dahil) tek sayılarla "tek_sayılar" listesini oluşturun ve çift sayıları atlamaya devam edin.

Düzenleyici yükleniyor…
İpucu göster

Eğer n çift ise devam edin; aksi halde ekleyin.

3 denemeden sonra çözüm mevcut

Ek zorluk

Egzersiz#python.m2.l3.e3
Denemeler: 0Yükleniyor…

Given the list `numbers = [7, 11, 14, 21, 25]`, write a `for` loop to find the first number that is divisible by 7 and also strictly greater than 10. When you find it, store it in `found` and exit the loop using `break`. Finally, evaluate `found`.

Düzenleyici yükleniyor…
İpucu göster

Inside the loop, check if num % 7 == 0 and num > 10:, assign it to found and trigger break.

3 denemeden sonra çözüm mevcut