While loop - Learn Python 3 - Snakify

Lesson 6
Döngü sırasında


1. Döngü sırasında

while döngü defalarca eylemlerin sırasını tekrarlar bazı koşul olarak değerlendirilirse kadar False . Durum, döngü gövdesinden önce verilir ve döngü gövdesinin her çalıştırılmasından önce kontrol edilir. Tipik olarak, while döngüsü kullanılan önceden döngü yineleme tam sayısını tespit etmek mümkün olduğu zaman.

En basit durumdaki while döngüsünün sözdizimi şöyle görünür:

while some condition:
    a block of statements

Python öncelikle durumu kontrol eder. Yanlış ise, döngü sonlandırılır ve denetim while döngü gövdesinden sonraki sonraki ifadeye geçirilir. Durum Doğru ise, döngü gövdesi yürütülür ve daha sonra koşul tekrar kontrol edilir. Bu durum Koşul Doğru iken devam eder. Durum yanlış hale geldiğinde, döngü sona erer ve kontrol, döngüden sonraki sonraki ifadeye geçirilir.

Örneğin, aşağıdaki program parçası, 1 ile 10 arasındaki tüm tam sayıların karelerini basar. Burada "while" döngüsü yerine for ... in range(...) döngüsü for ... in range(...)

i = 1
while i <= 10:
    print(i ** 2)
    i += 1

Bu örnekte, döngü içindeki i değişkeni 1'den 10'a kadar yinelenir. Her yeni döngü yinelemesiyle değeri değişen bir değişkene sayaç denir. Bu parçayı çalıştırdıktan sonra, i değişkeninin değeri tanımlanır ve 11 eşittir, çünkü i == 11 olduğunda i <= 10 durumu ilk defa False olur.

Burada başka bir örnektir kullanımı while bir tamsayıdır basamak sayısını belirlemek için döngü n :

n = int(input())
length = 0
while n > 0:
    n //= 10  # bu n = n // 10&#39;a eşdeğerdir
    length += 1
print(length)  # 4

Her yinelemede, sayının son rakamını 10 ( n //= 10 ) ile tamsayı bölme kullanarak kestik. Değişken length bunu kaç kez yaptığımızı sayıyoruz.

Python'da bu problemi çözmek için daha kolay, daha kolay bir yol var: length = len(str(i)) .

Advertising by Google, may be based on your interests

2. Döngü kontrol akışı: başka

Biri else: bir else: yazabilir else: bir döngü gövdesinden sonra, döngüden sonra bir kez yürütülen ifade:

i = 1
while i <= 10:
    print(i)
    i += 1
else:
    print('Loop ended, i =', i)

İlk bakışta, bu ifade mantıklı görünmüyor, çünkü else: deyim gövdesi sadece döngü sonundan sonra konabilir. Bir döngüden sonra "else" ifadesi, komut break birlikte kullanıldığında yalnızca anlamlıdır. Döngü Python yorumlayıcısının yürütülmesi sırasında break yaşanırsa, döngü yürütmeyi hemen durdurur ve buradan çıkar. Bu durumda, else: şube yürütülür. Bu nedenle, herhangi bir yinelemenin ortasında döngü yürütmeyi iptal etmek için break verilir.

İşte Black Jack benzeri bir örnek: sayıları okuyan ve toplamı 21'e eşit veya daha büyük olana kadar toplayan bir program. Tüm sıralamaların toplam toplamı olsa bile, programın durması için girdi sırası 0 ile biter. 21'den az.

Farklı girdilerde nasıl davrandığını görelim.

Sürüm 1. Durum kontrol edildikten sonra döngü normal olarak çıkarılır, böylece "else" dalı yürütülür.

total_sum = 0
a = int(input())
while a != 0:
    total_sum += a
    if total_sum >= 21:
        print('Total sum is', total_sum)
        break
    a = int(input())
else:
    print('Total sum is less than 21 and is equal to', total_sum, '.')

Sürüm 2. döngü tarafından iptal edilir break yüzden "başka" dal atlanır.

total_sum = 0
a = int(input())
while a != 0:
    total_sum += a
    if total_sum >= 21:
        print('Total sum is', total_sum)
        break
    a = int(input())
else:
    print('Total sum is less than 21 and is equal to', total_sum, '.')

"Else" şubesi "for" döngüsü ile de kullanılabilir. Bir program 5 tam sayı okurken, ancak ilk negatif tam sayı karşılandığında sağa durduğunda örneğe bakalım.

Sürüm 1. Döngü normal olarak çıkar, bu yüzden "başka" şube yürütülür.

for i in range(5):
    a = int(input())
    if a < 0:
        print('Met a negative number', a)
        break
else:
    print('No negative numbers met')

Sürüm 2. Döngü durduruldu, bu nedenle "başka" şube yürütülür.

for i in range(5):
    a = int(input())
    if a < 0:
        print('Met a negative number', a)
        break
else:
    print('No negative numbers met')

Advertising by Google, may be based on your interests

3. Döngü kontrol akışı: devam

Döngü yürütmeyi kontrol etmek için kullanılan başka bir talimat continue . Python yorumlayıcısı, döngü yinelemesinin ortasında bir yerde continue , kalan tüm talimatları atlar ve sonraki yinelemeye geçer.

for num in range(2, 10):
    if num % 2 == 0:
        print("Found an even number", num)
        continue
    print("Found a number", num)

break ve continue birkaç iç içe döngüler içine yerleştirilirse, sadece en içteki olanı etkileyebilirler. Bunu göstermek için oldukça aptalca bir örneğe bakalım:

for i in range(3):
    for j in range(5):
        if j > i:
            # sadece 2 numaralı hat için kırılıyor
            break
        print(i, j)

Fikrinizi kullanmadan uygulayabiliyorsanız, talimatlar break ve continue ettirilir. İşte kötü kullanım tipik örneğidir break : Bu kod bir tamsayı basamak sayısını sayar.

n = int(input())
length = 0
while True:
    length += 1
    n //= 10
    if n == 0:
        break
print('Length is', length)

Bu döngüyü anlamlı bir döngü koşul ile yeniden yazmak için daha temiz ve daha kolay okunabilir:

n = int(input())
length = 0
while n != 0:
    length += 1
    n //= 10
print('Length is', length)
Advertising by Google, may be based on your interests

4. Çoklu atama

Python'da, birden fazla değişkenin değerini değiştirmek için tek bir atama ifadesi mümkündür. Bakalım:

a, b = 0, 1

Yukarıdaki kodda gösterilen etki şu şekilde yazılabilir:

a = 0
b = 1

İki sürüm arasındaki fark, çoklu atamanın aynı anda iki değişkenin değerlerini değiştirmesidir.

İki değişkenin değerlerini değiştirmeniz gerektiğinde çoklu atama yararlıdır. Birden fazla atamayı desteklemeden eski programlama dillerinde bu yardımcı değişken kullanılarak yapılabilir:

a = 1
b = 2
tmp = a
a = b
b = tmp
print(a, b)
# 2 1

Python'da, aynı swap bir satırda yazılabilir:

a = 1
b = 2
a, b = b, a
print(a, b)
# 2 1

"=" 'Nin sol tarafı, virgülle ayrılmış değişken adlarından oluşan bir listeye sahip olmalıdır. Sağ taraf, virgülle ayrılmış herhangi bir ifade olabilir. Sol taraf ve sağ taraftaki listeler eşit uzunlukta olmalıdır.

Advertising by Google, may be based on your interests