Veri Bilimi İçin Python Notları-3: Python’da While ve For Döngüleri

V

1. Python’da While Döngüsünün Çalışma İlkeleri

“while” döngüsünün çalışma ilkeleri aşağıda kodların içinde adım adım açıklanmıştır.

i = 0
while i <= 5: # i değeri 5’ten küçük veya eşit olduğu sürece Python döngünün içine girecektir. Koşul sağlanmazsa döngü sonlanır, yani artık döngünün içine girilmez. (1. adım)
  print(i) # Python döngünün içine girince i değeri konsola yazdırılır. (2. adım)
  i = i + 1 # i değeri konsola yazdırıldıktan sonra değeri 1 arttırılır ve süreç 1. adımdan tekrar edilir. (3.adım)
#Sonuç:
#0
#1
#2
#3
#4
#5
#Not: 3. adımdaki i=i+1 ifadesi döngünün içine eklenmezse, 1. adımdaki kısıt hiçbir zaman gerçekleşmez,
#böylece döngü sonsuza kadar devam eder. Yani Python hata verir.

print("___________\n")

i = 3
while i <= 6:
  print(i)
  i = i + 1
#Sonuç:
#3
#4
#5
#6  

Önemli: Yukarıdaki döngülerde, derleyici döngünün içine girdikten sonra döngüyü bitirebilecek koşul olan i değerinin sürekli arttırıldığına dikkat edin. Aksi durumda döngü sonsuza kadar devam edeceği için Python hata verecektir.

“else” ifadesiyle döngünün çıkışında aşağıda gösterildiği gibi Pythona bir görev verebilirsiniz.

i = 1
while i < 5:
  print(i)
  i = i + 1
else:
  print("i değeri artık 5'ten küçük olmadığı için döngüden çıkılıyor.")  

#Sonuç:
#1
#2
#3
#4
#i değeri artık 5'ten küçük olmadığı için döngüden çıkılıyor.

Yukarıdaki haliyle while döngüsünün if/else yapısına benzerliğine dikkat edin.

While döngüsü, yukarıda if bloklarında bahsedildiği gibi and, or, not mantık operatörleriyle de kullanılabilir.

x = 5
y = 10
count = 0
while count < x and count < y: #count, x ve y değişkenlerinin her ikisinden de küçük olduğu sürece döngü devam eder.
    print("count:", count, " ", "x =", x, " ", "y =", y)
    count += 1 #count = count + 1 ile aynı ifadedir. 

#Sonuç:
#count: 0   x = 5   y = 10
#count: 1   x = 5   y = 10
#count: 2   x = 5   y = 10
#count: 3   x = 5   y = 10
#count: 4   x = 5   y = 10

Not: Sonraki makalelerde while döngüsünün kullanıldığı yerlerde while döngüsünden tekrar bahsedilecektir.

2. Python’da While Döngüsünde “break” İfadesi

Döngünün sonlanması aşağıda gösterildiği gibi “break” ifadesiyle birlikte belirli bir koşulun gerçekleşmesine de bağlanabilir. Açıklamalar kodların içinde yapılmıştır.

i = 1
while i <= 5:
  print(i)
  if (i == 3): # i=3 olduğunda if koşulunun içine girilir.
    break #Döngü sonlanır.
  i = i + 1 # i'nin son değerinin 4 değil 3 olduğuna dikkat edin. 

#Sonuç:
#1
#2
#3

print("___________\n")

i = 1
while i <= 5:
  print(i)
  i = i + 1 # i'nin son değerinin 3 değil 2 olduğuna dikkat edin. i=3 olduğunda döngü tamamlanmadığı için i'nin döngü içinde aldığı son değer 2 olur.
  if (i == 3): # i=3 olduğunda if koşulunun içine girilir.
    break #Döngü sonlanır.
  
#Sonuç:
#1
#2

“break” ifadesi, başında herhangi bir kısıt içermeyen while döngüsüyle aşağıda gösterildiği gibi kullanılabilir.

count = 0
while True:
    print(count)
    count += 1 #count=count+1 ile aynı işleve sahiptir.
    if count >= 4:#count 4'ten büyük veya ona eşit olduğunda koşulun içine girer.
        break #döngü sonlanır.
#Sonuç:
#0
#1
#2
#3

3. Python’da While Döngüsünde “continue” İfadesi

Döngünün belirli bir değeri atlaması/görmezden gelmesi aşağıda gösterildiği gibi “continue” ifadesiyle birlikte belirli bir koşulun gerçekleşmesine bağlanabilir. Açıklamalar kodların içinde yapılmıştır.

i = 1
while i < 5:
  if i == 4:
    continue # i = 4 değerini aldığında, döngü sonlandırılmamakla birlikte, i = 4 değerini aldığında hiçbir şey yapmadan 5 değerinden devam edecektir.
  print(i)
  i += 1 #Bu ifade i = i + 1 ifadesi ile görevi yerine getirir.
#2
#3
#5

print("___________\n")

i = 1
while i < 5:
  i += 1 #Bu ifade i = i + 1 ifadesi ile görevi yerine getirir.
  if i == 4:
    continue # i = 4 değerini aldığında, döngü sonlandırılmamakla birlikte, i = 4 değerini aldığında hiçbir şey yapmadan 5 değerinden devam edecektir.
  print(i)
#2
#3
#5

Not: Yukarıdaki örneklerde print(i) ifadesinin bulunduğu satırın i’nin ilk ve son değerlerini etkilediğine dikkat edin.

4. Python’da While Döngüsüyle İlgili Bir Örnek

While döngüsü içinde input metodu, continue ve break ifadeleri ve if/else yapılarının bir arada yer aldığı aşağıdaki egzersizi inceleyebilirsiniz.

Not: try/except yapısı sonraki makalelerde ele alınacaktır.

prompt = "Lütfen pozitif bir tam sayı giriniz: "

while True:
    try:
        x = int(input(prompt)) #integer tipinde bir veri girilmesini bekliyoruz. Eğer veri girişi sonrasında bir hata oluşursa aşağıdaki except satırı çalışacaktır.
    except ValueError: #Sayısal olmayan bir veri girilirse, döngü atlanacak (aşağıdaki if koşulları okunmayacak) ve tekrar döngünün en başında yer alan input metoduna gidilecek.
        print ("Sayısal olmayan bir veri girişi yaptınız.")
        continue

    if x > 0:
        print("Tebrikler. Pozitif bir tam sayı girdiniz.")
        break #Koşul gerçekleşirse döngü sonlanacak.
    elif x < 0:
        prompt = "Negatif bir tam sayı girdiniz.\nLütfen pozitif bir tam sayı giriniz: " # Negatif bir tam sayı girilirse döngünün en başında yer alan input metoduna gidilecek.
        continue
    elif x == 0:
        prompt = "0 sayısını girdiniz.\nLütfen pozitif bir tam sayı giriniz: " # 0 sayısı girilirse döngünün en başında yer alan input metoduna gidilecek.
        Continue

5. Python’da For Döngüsünün Çalışma İlkeleri

Temelde while döngüsü ile benzer bir görevi yerine getiren “for” döngüsünün çalışma ilkeleri aşağıda kodların içinde açıklanmıştır.

for x in range(5): #range ile döngünün maksimum tekrarı belirtilebilir. Bu bölümün devamında range metodu detaylı açıklanacaktır.
    print(x)
#Not: Python’da bir değişkenin/indeksin değerinin daima 0'dan başladığını göz önünde bulundurun.
#Sonuç:
#0
#1
#2
#3
#4

print("___________\n")
    
myList = ["Volvo", "Toyota", "Jaguar"] #3 elemanlı bir list
x="İshak Kutlu" #Python x değişkeninin bu değerini konsola yazdırmayacak. Çünkü aşağıda myList değerlerini dolaşırken x'in bu değeri silinmiş olacak.
for x in myList: #myList'in tüm elemanları içinde dolaşılacak ve her elemanın değeri birer birer x değişkenine aktarılacak.
    print(x)
#Sonuç:
#Volvo
#Toyota
#Jaguar

print("___________\n")
    

y ="İshak Kutlu" 
for x in y: #y stringinin (boşluk dahil) tüm karakterleri içinde dolaşılacak ve her karakterin değeri birer birer x değişkenine aktarılacak.
    print(x)
#Sonuç:
#İ
#s
#h
#a
#k
# 
#K
#u
#t
#l
#u

while ve for döngülerinin birbirlerine göre üstünlüğü yoktur. Karşılaşılan sorunun çözümünde pratik olan döngü tercih edilebilir. Örneğin “for” döngülerini liste tipi değişkenlerle sıklıkla görebilirsiniz.

“for” döngüsünde, “while” döngüsündeki gibi döngüyü sonlandıracak “i” gibi bir sayaca genellikle ihtiyaç olmaz. Çünkü döngü, genellikle 5, myList gibi sonlu bir değere/eleman sayısına sahiptir.

“while” döngüsünde olduğu gibi “for” döngüsünün çıkışında da aşağıda gösterildiği gibi Pythona bir görev verebilirsiniz. Açıklamalar kodların içinde yapılmıştır.

for x in range(1,5):
    print(x)
else:
    print("i değeri artık 5 olduğu için döngüden çıkılıyor.")
#Sonuç:
#1
#2
#3
#4
#i değeri artık 5'ten küçük olmadığı için döngüden çıkılıyor.


print("___________\n")

#else öncesinde "break" gibi döngüyü sonlandıran bir ifade varsa else koşulu gerçekleşmez.
for x in range(1,5):
    if x == 3:break # break ifadesinin girintili şekilde alt satırda olmadığına, if koşulunun tek satırda belirtilebildiğini hatırlayın.
    print(x)
else:
    print("i değeri artık 5 olduğu için döngüden çıkılıyor.")
#Sonuç:
#1
#2

Yukarıdaki haliyle for döngüsünün if/else yapısına benzerliğine dikkat edin.

“for” döngüsünde oluşacak muhtemel bir hatada Python’un durmaması, devam etmesi “pass” ifadesi ile sağlanabilir.

'''
for x in [0, 2, 5]:
    #pass #Sonuç: IndentationError: expected an indented block
'''

for x in [0, 2, 5]:
    pass #Sonuç: hata oluşmayacak

Not: Sonraki makalelerde for döngüsünün kullanıldığı yerlerde for döngüsünden tekrar bahsedilecektir.

6. Python’da For Döngüsünde “break” ve “continue” İfadeleri

“while” döngüsünde açıklanan “break” ve “continue” ifadeleri aşağıda gösterildiği gibi “for” döngüleri içinde de kullanılabilir.

myList = ["Volvo", "Toyota", "Jaguar", "BMW"]
for x in myList:
  print(x) 
  if x == "Toyota":
    break #Döngü Toyota elemanında sonlanacak.
#Sonuç:
#Volvo
#Toyota

print("___________\n")

myList = ["Volvo", "Toyota", "Jaguar", "BMW"]
for x in myList:
  if x == "Toyota":
    continue #Toyota elemanı atlanacak/görmezden gelinecek.
  print(x) 
#Sonuç:
#Volvo
#Jaguar
#BMW

print("___________\n")

myList = ["Volvo", "Toyota", "Jaguar", "BMW"]
for x in myList:
  print(x) 
  if x == "Toyota":
    continue #Toyota elemanı atlanmayacak/görmezden gelinmeyecek. Çünkü print ifadesi üst satırda.
#Sonuç:
#Volvo
#Toyota
#Jaguar
#BMW

7. Python’da For Döngüsünün Başlangıç ve Bitiş Değerleri ile Adım Büyüklüğü (range metodu)

“range” metodu “for” döngülerinde yaygın bir şekilde kullanılır. Döngünün kaç kez tekrarlanacağı, döngünün başlangıcı ve bitişi, döngünün artım miktarı (step büyüklüğü) gibi görevler “range” metoduyla yapılabilir. Açıklamalar kodların içinde yapılmıştır.

for x in range(5): #range ile döngünün maksimum tekrarı belirtilebilir. Varsayılan olarak her döngüde x'in değeri 1 arttırılır.
    print(x)
#Not: Python’da bir değişkenin/indeksin değerinin daima 0'dan başladığını göz önünde bulundurun.
#Sonuç:
#0
#1
#2
#3
#4

print("___________\n")

for x in range(2,5): #range ile döngünün başlangıcı ve bitişi belirtilebilir.
    print(x)
#Sonuç:
#2
#3
#4

print("___________\n")

for x in range(4,12,2): #range ile döngünün başlangıcı ve bitişi belirtilebilir. Ayrıca artım miktarı da belirtilebilir. Örnekte döngüde x'in değeri 2'şer artacaktır.
    print(x)
#Sonuç:
#4
#6
#8
#10

print("___________\n")

for x in range(12,3,-3): # Ayrıca artım miktarı negatif olarak da belirtilebilir. Ancak başlangıç değerinin bitiş değerinden büyük olmasına dikkat edin.
    print(x)
#Sonuç:
#12
#9
#6

8. Python’da İç İçe For Döngüleri

İç içe for döngüleri ise aşağıda gösterildiği gibi kullanılabilir. Açıklamalar kodların içinde yapılmıştır.

myCarList = ["Volvo", "Jaguar", "BMW"]
myColorList = ["red", "yellow", "black"]
#döngü içindeki girintilere dikkat edin.
for x in myColorList:
  for y in myCarList:
    print(x, y)
#İlk x döngüsünde x=red değerini alır. 
#x=red iken içerdeki y döngüsünde y sırasıyla y=Volvo, y=Jaguar ve y=BMW değerlerini alır.
#print(x,y) olduğu için x=red iken red Volvo, red Jaguar, red BMW yazdırılır.
#ilk x değeri x=red iken y döngüsü bittikten sonra, süreç x'in diğer değerleri için de (x döngüsü sonlanana kadar) aynen tekrarlanır. 

#Sonuç:
#red Volvo
#red Jaguar
#red BMW
#yellow Volvo
#yellow Jaguar
#yellow BMW
#black Volvo
#black Jaguar
#black BMW
    
print("___________\n")

#Yukarıdaki myCarList ve myColorList döngülerinin yer değiştirilmiş halidir.
for x in myCarList:
  for y in myColorList:
    print(x, y)
#Sonuç:
#Volvo red
#Volvo yellow
#Volvo black
#Jaguar red
#Jaguar yellow
#Jaguar black
#BMW red
#BMW yellow
#BMW black

9. Python’da For Döngüsüyle İlgili Bir Örnek

For döngüsü içinde range metodu ve iç içe döngülerin bir arada yer aldığı aşağıdaki egzersizi inceleyebilirsiniz.

n = 5
for i in range(n): # i=0 iken aşağıdaki j döngüsü çalışmayacak.
    for j in range(i):          # j döngüsü i=1 iken ilk satıra tek *; i=2 iken ikinci satıra iki *; i=3 iken üçüncü satıra üç * vb. ekleyecek.
        print ('* ', end="")    # Ancak print("*", end="") metodu kullanıldığı için j döngüsündeki her print sonraki satıra değil, aynı satıra yazdırılacak.
    print('x') # j döngüsünün her tamamlanışında x ifadesi j döngüsünün * ifadelerinin yazdırıldığı satırın sonuna yazdırılacak ve print metodunda end olmadığı için sonraki işlem alt satıra yazdırılacak.

for i in range(n,-1,-1): #Yukarıdaki i döngüsü bittiğinde süreç tersten işleyecek.
    for j in range(i):
        print('* ', end="")
    print('x')
# Not: Sondaki x ifadelerini kaldırmak için print('x') metotlarını print('') metoduyla değiştirebilirsiniz.

#Sonuç:
"""
x
* x
* * x
* * * x
* * * * x
* * * * * x
* * * * x
* * * x
* * x
* x
x
"""

#Yukarıdaki süreç tek tek aşağıdaki gibi simüle edilebilir.
"""
for j in range(1):
    print ('* ', end="")  

print()

for j in range(2):
    print ('* ', end="")  

print()

for j in range(3):
    print ('* ', end="")  

print()

for j in range(4):
    print ('* ', end="")  

print()

for j in range(5):
    print ('* ', end="")  

print()

for j in range(4,0,-1):
    print ('* ', end="")  

print()

for j in range(3,0,-1):
    print ('* ', end="") 

print()

for j in range(2,0,-1):
    print ('* ', end="") 

print()

for j in range(1,0,-1):
    print ('* ', end="") 

"""

 

 

İshak Kutlu, Veri Bilimi İçin Python Notları

Yorum Yap

İshak Kutlu

Veri & Otomasyon Uzmanı

Kurumsal iş akışlarını düzenleyen veri odaklı otomasyon sistemleri ve makine öğrenmesi tabanlı çözümler geliştirir. Gerçek operasyonel süreçler için ölçeklenebilir ve izlenebilir yapılar tasarlar.

YouTube   YouTube   YouTube   YouTube