while Döngüleri

11262

Python’da döngü deyimleri minimalist tasarlanmıştır ve sadece while ile for vardır.

C gibi dillerde kontrolün başta yapıldığı while döngüleri ve kontrolün sonda yapıldığı while döngüleri (do-while) gibi seçenekler vardır. Python’da do-while yoktur.


while <ifade>: <suite>
[else: <suite>]

gibi genel bir biçim vardır. while anahtar sözcüğünden sonra bir ifade ve sonra da : atomu olmalıdır. Sonra da bir suite gelmelidir.


Burada önce while anahtar sözcüğünün sağındaki ifadenin türüne bakar yorumlayıcı. Eğer bool türünden değilse o bool türüne dönüştürülür. İfade True ise suite deyimleri çalıştırılır. Sonra başa döner. False ise çalışma sonlandırılır.

i = 0
while i < 10:
  print(i)
  i += 1

Walrus operatörü ve while

Atama operatörü, aslında deyim demiştik, bir değer oluşturmadığı için Walrus operatöründen bahsetmiştik. while ile Python’da kullanılan sık bir kalıp da

while (n := int(input('Bir değer giriniz:'))) != 0:
  print(n * n)

Burada Walrus kullanmasaydık ise

val = 1
while val != 0:
  val = int(input('Bir değer giriniz:'))
  print(val * val)

gibi bir şey yazmamız gerekirdi.

Hatta

while n := int(input('Bir değer giriniz:')):
  print(n * n)

yazabiliriz.


Elbette while içerisindeki suite içerisinde başka while da olabilir.


while ise sonsuz döngü oluşturmak için while True: kullanılır, aslında while 1: de kullanabiliriz ya da sıfırdan başka herhangi bir değer ama genel geçer gören True kullanımıdır.

while-else

İsteğe bağlı bir else kısmı da olabilir. Bu kısım break ya da exception dışında normal bir biçimde çıkılırken bir kere çalıştırılır.

i = 0
while i < 5:
  print(i)
  i += 1
else:
  print('ends', i)

Çıktı:

0
1
2
3
4
ends 5

Eğer whileın koşulu en başta hiç sağlanmıyor olsa bile else kısmı varsa yine çalıştırılır.

i = 0
while i < 5:
  print(i)
  i += 1
print('ends', i)

Bunun else olandan farkı print(...) deyiminin her türlü çalıştırılacak olmasıdır. Örneğin döngüden break ile çıksak da çalışır ama else durumunda break ile çıkarsak çalışmaz.

11554