Merhaba Python While Döngüsü yazısını okuyan ziyaretçi! :)

Bir önceki yazımda For döngüsünü anlatmıştım. Bu yazımda sana While döngüsünü ve break continue, while else ve pass metodlarından bahsedeceğim.

Önceki yazımızda iki çeşit döngü olduğundan bahsetmiştik ve for ile ilgili örnekler görmüştük. Bu yazımda While döngüsünü anlatacağım ve örneklerle destekleyeceğim.


Loops (Döngüler) Nedir?

Loops; yani döngüler, işlemlerin tekrarlanmasına ihtiyaç duyulduğunda kullanılır.

Örneğin, kullanıcıdan bir veri almak istediğiniz. Kullanıcıya belirli şartlar koştunuz, ve bu şartların dışına çıkıldığında, işlemin tekrarlanması istediniz. Bu durumda döngülerden yararlanmalısınız. Aksi durumda, aynı kodu arka arkaya belki 30 belki 300 kez yazmanız gerekebilir. Kullanıcının kaç kez kural dışı davranacağını bilemezsiniz değil mi?


while Loops (while Döngüsü)

while döngüsünü, genelde işlemin kaç kez yapılacağını bilmediğimizde kullanılırız.
while kelimesinin, Türkçe karşılığını olarak, olduğu sürece diyebiliriz.

İf'lerde olduğu gibi döngülerde de girinti eklemelisiniz. Python'da girintiler çok önemlidir ve işlemin nereye ait olduğunu belirtir.

Çalışma mantığı, şart sağlanıyorsa her defasında tekrarlanır, şart sağlanmadığında durur. Bir örnek üzerinde anlamaya çalışalım.

sayi = 2

while sayi == 2:
   print ("Bu sayi 2'dir")

Bu kodu çalıştırdığımızda sonsuza karar Bu sayı 2'dir yazacak ve sonsuz döngüye girecek. Çünkü her çalıştığında aynı kural geçerli oluyor ve kural değişmediği için işlem tekrarlanıyor.

İlk satırda sayi adından integer oluşturdum ve değerini 2 olarak belirledim.

while satırına geldiğimizde if'e benzeyen bir yapı görüyoruz.  Operatörler tanıdık gelmiştir umarım? :) if oluşturmaktan bir farkı bulunmuyor. while yanına kuralımızı belirliyoruz. Yukarıdaki işlemde sayi değişkeni 2'ye eşit olduğu sürece şartı koşuldu.


Şimdi while döngüsü ile 1'den 10'a kadar ekrana yazdıralım.

sayi = 0

while sayi < 11:
   print (sayi)
   sayi += 1
Satır satır inceleyelim.
  • İlk satırda sayi değişkeni oluşturdum ve 0 değeri verdim.
  • İkinci satır boş ve üçüncü satırda, sayi değişkeni 11'den küçük olduğu sürece şartını belirttim. 11 yazmamın sebebi, 10 sayısını ekrana yazdırmak istememdir. 10 sayısı 10'a eşit olduğu için tekrar döngüyü çalıştırmayacaktır.
  • Dördüncü satırda sayi değişkenini ekrana yazdırdım.
  • Beşinci satırda ise döngü çalıştığı sürece sayi değişkenine 1 ekledim. Matematiksel işlemler yazısında görmüştük. Böylece, her bir sayı ekrana yazdırıldığında sayi değerine 1 ekleyerek devam edecek. En sonunda kural sağlanmadığı için duracak.
Çalıştırdığınızda 0,1,2,3..10 şeklinde çıktı verecektir. 0 rakamını yazdırmasının sebebi kod önceliğidir; değişkene 1 eklemeden önce print() ile değeri yazdırmanız 0'ın görüntülenmesine sebep olmaktadır.

input() ve if ile bir while döngüsü örneği oluşturdum.

while True:
   sayı = input('Hadi bir 1 ila 5 arasında bir sayı söyle :) >>> ')

   if sayı == '3':
      print ('Doğru!')
   else:
      print ('Bu doğru değil.')

Türkçe karakter kullandım, fark ettin mi? Python3'de Türkçe karakter kullanabilirsin ama pek önermiyorum. Bu örneği boşver, adı üstünde örnek :)

İlk satırda dikkati çeken while True: satırı, herhangi bir şart aranmaksızın döngü başlat anlamına gelir desem yersiz olmaz.

Bu kodu çalıştırdığında kullanıcı veriyi girdiğinde her seferinde başa dönecek ve input() tekrar çalışacak. Döngüyü sonlandırmak için break kullanırız. Okumaya devam et :)


Python break Metodu

While ile sonsuz döngü başlattığında, yani yukarıdaki örnekte olduğu gibi True değeri verdiğinde; döngüyü sonlandırman gerekebilir. İşte bunu yapmak istediğinde break metodu kullanmalısın. Şunu söylememe gerek var mı: Sonlanmasını istediğin yere break ekle. ;)

while True:
   sayı = input('Hadi 1 ila 5 arasında sayı söyle :) >>> ')
   if sayı == '3':
      print ('Doğru!')
      break
   
   else:
      print ('Bu doğru değil.')

Bu kodu çalıştırdığımızda, kullanıcı 3 cevabını bulduğunda, döngü sonlanacak ve başka işlem olmadığı için kod sonlanacak. else altında break olmadığı için kullanıcı 3 cevabını verene kadar döngü devam edecek.

Bu arada if girintisine dikkat ettin mi? while altında bir girinti, if altında ise bir girinti daha görüyorsun. if altındaki girintiler, işlemin while döngüsüne ait olmadığı belirtiyor.

Python continue Metodu

continue metodu, break komutuna çok benzer, contunie döngüyü başa alır. break ise döngüyü sonlandırıyordu :)

deger = 0

while True:
   sayi = int(input('Değer 0. Kaç eklemek istersiniz?>>'))

   if sayi > 5:
      print ('Bu sayı 5\'den büyük. Tekrar dene')
      continue

   elif sayi < 5:
      print ('Bu sayı olur.')
      deger += sayi
      print ('Yeni sayı', deger)
      break

Kodu incelediğimizde, sayi > 5 şartı çalıştığında; Yani girilen sayı 5'den büyük olduğunda, bir hata mesajı verip aynı soruyu tekrar soruyor. Döngüyü sonlandırmadı, başa aldı.

5'den küçük bir sayı girdiğimizde ise, deger değişkenine yeni sayıyı ekliyor ve yeni sayıyı gösterip break ile döngüyü sonlandırıyor.


Python pass metodu

pass metodu, adından da anlaşıldığı gibi pas geçiyor. Yine mükemmel bir örnek vereceğim, çok mükemmel örnek veririm ;)
while True:
   giris = input('Bir isim girin>>')
   if giris == 'anarşist':
      print ('O sensin! Gözlerim yollarda kaldı..')

   elif giris == '':
      pass

   elif giris == 'hacker adana':
      print ('Ekip böyle olur!')

   else:
      print ('Seni pek tanıyamadım :(')

Tamamını anlatmayacağım. pass bulunan yeri anlatacağım. Eğer kullanıcı herhangi bir isim girmezse, yani input() boş olursa hiç bir şey yapmadan devam edecek. Sonsuz bir döngü olduğu için, işlem bu kodda başa dönecek.


Python while else Metodu

C, C++ gibi dillerde böyle bir özellik yok. Tıpkı if'lerde olduğu gibi else'yi while'de de kullanabiliyoruz. İf'de olduğu gibi şartlar uyuşmadığında çalışıyor.

while True:
   i = input('Sayı girin>')
   while i > '5':
      print ('Sayı 5\'den büyük')
      break
   else:
      print ('Sayı 5\'den küçük')

   continue

Yine mükemmel bir örnek ve yine ben.. Kahretsin çok iyiyim dostum! :))
Şöyle bir tahminde bulun bakalım bu kod ne yapıyor ;)

Öncelikle sonsuz bir döngü oluşturuyoruz, sonrasında input() ile kullanıcıdan bir sayı girmesini istiyoruz. Sonrasında döngü içerisinde yeni bir döngü oluşturuyoruz ve while i > 5 şartını koşuyoruz. Bu şart gerçekleştiğinde 5'den büyük yazıyoruz ve break ile ikinci döngüyü sonlandırıyoruz! 

Girilen değer while şartına uymadığı durumda else çalışıyor ve 5'den küçük yazıp, en başa dönüyor. Çünkü else sonrasında bir eksik girinti ile continue eklenmiş, yani ilk döngü için geçerli.

else altına break eklemememin sebebi, altında continue olması. Farklı bir işlemin olması, sonsuza kadar çıktı vermesini engelliyor.



Döngüler konusunun sonuna geldik. For döngüsü yazısını okumadıysan eğer, beni kırar ve çok şey kaybedersin. Lütfen buradan for yazısını oku.

Sorularını sormaktan çekinme. yorumların da önemli tabi ama kırmadan, incitmeden :)
Serinin başından beri bizi takip eden arkadaşlarımıza buradan sevgilerimi ve takdirlerimi iletiyorum. Takdir iletmemin sebebi, gerçekten öğrenmeyi istemeleri. Sen yeter ki öğren, ben gerekirse 24 saat yazı yazarım.

Sonraki yazımda görüşürüz!