#Python: Python Dersleri 25: For Döngüsü Deyimleri: Break, Continue, Range, Enumerate, Zip
#Döngü Deyimleri
################################################################
#Dögülerde break ve continue deyimleri de önemlidir.
#BREAK kelimesi sonlandırmak anlamında olup CONTINUE ise devam etmek anlamındadır.
#Buradaki iki deyim önemlidir. Örneklerle kullanım şeklini izah edelim.
#break deyimi döngüyü sonlandırır.
for sayi in range(1000,2000):
if sayi%122==0:
print(sayi, "sayısı 122'ye bölünmektedir.")
break
#Bu örnekte eğer belirtilen sayı 122'ye bölünüyorsa break komutu devreye girer ve döngüyü sonlandırır.
#Continue deyimi ise döngüyü devam ettirir fakat continue deyimi geçen satırın altında olup da döngünün parçası olan kodları okumaz, doğrudan döngünün başına geçer.
for sayi in range(1500,2000):
if sayi%122!=0:
continue
print(sayi, "sayısı 122'ye bölünmektedir.")
break
"""
Bu örnekte de görüldüğü gibi eğer 122'ye bölündüğünde sıfır dışında bir kalan verirse continue çalışıyor ve döngünün diğer kodları olan (print(sayi, "sayısı 122'ye bölünmektedir."))
ve (break) satırları atlanıyor. Yani hiç okunmuyor. Eğer if koşulu içindeki durum gerçekleşmezse, yani sayı 122'ye bölünür olursa bu durumda continue kodu devreye girmediği için alttaki kodlar çalışıyor.
Önce sayı yazılmış oluyor ve sonra break kodu ile döngü sonlandırılıyor. Böylece diğer sayılara bakılmıyor.
"""
#Dikkat: break ve continue deyimleri WHILE döngüsü bölümünde detaylı şekilde anlatılmıştır.
####
#For ile birlikte sık kullanılan range() fonksiyonunu inceleyelim:
for sayi in range(10):
print(sayi)
#Görüldüğü gibi sadece 10 yazarsak, yani tek parametre olursa 0-9 arası sayıları getiriyor. 10 dahil değildir. Adım sayısı ise 1'dir.
for sayi in range(15,25):
print(sayi)
#Yukarıda 15-24 arası sayıları getirir. Adım sayısı 1
for sayi in range(15,255,4):
print(sayi)
#15 ile 254 arası sayıları getirir. Adım sayısı 4 oldu.
for sayi in range(255,15,-1):
print(sayi)
#Bu kısma dikkat! Burada 255'ten başlayarak 15'e kadar (15 hariç) -1 adımda listeler. Dikkat edilirse adım sayısı -1 yazıldığı için 255 öne yazıldı, 15 ise arkaya yazıldı.
for sayi in range(255,15,-12):
print(sayi)
#Range kullanırken döngü yapmak zorunda değilsiniz. Aşağıdaki ifade 0-100 arası sayıları verir.
print(*range(100),sep="->")
#0-100 arası sayıları bir listeye atamak isterseniz aşağıdaki gibi yapabilirsiniz.
liste=list(range(100))
print(liste)
#Sonuç olarak diğer araçları ve özellikleri kullanarak döngü oluşturmadan da bazı işlemleri gerçekleştirebilirsiniz. Eğer yukarıdaki işlemi döngü ile yaparsanız:
liste=list()
for sayi in range(100):
liste.append(sayi)
print(liste)
#Tek satırda yapılabilecek işlem döngü ile 3 satırda yapıldı!
########################################################################
#İlerleyen aşamalarda liste üreteçlerinde sıklıkla kullanacağımız bir husus ise RANGE yöntemi ile liste üretmektir. Aşağıdaki örnekleri inceleyiniz:
liste=list(range(1,101,4))#1-101 arasındaki sayılar (101 hariç) 4'er atlanarak oluşturulmuş ve bunlar listeye dönüştürülmüştür. Aşağıdaki örnekte ise bunlar kümelere ve demetlere dönüştürülmüştür.
print(liste)
kume=set(range(1,101,4))
print(kume)
demet=tuple(range(1,101,4))
print(demet)
############################################
#Aşağıdaki örneği inceleyiniz:
kelime="Merhaba"
sayi=0
for harf in kelime:
print("İndeks numarası {} olan harf: {}".format(sayi,harf))
sayi+=1
#Bunu bir de listeye dönüştürerek yapalım:
sayi=0
liste=list(kelime)
for eleman in liste:
print("İndeks numarası {} olan harf: {}".format(sayi,eleman))
sayi+=1
#################
#ENUMERATE kodu bize belli bir nesnenin elemanlarını numaralandırmak için kullanılır. Sonucu bir demet şekline dönüştürür.
cumle="Bugün dünyada güzel şeyler olacak."
numarali=enumerate(cumle)
for eleman in numarali:
print(eleman)
#Yukarıdaki örnekte görüldüğü gibi numarali değişkeninin her bir elemanı TUPLE cinsinden üretildi.
#Buna karşın aşağıdaki kod bize sonucu bu şekilde üretmez:
print(numarali) #SONUÇ: <enumerate object at 0x000001E2B5B43B40>
print(type(numarali)) #SONUÇ: <class 'enumerate'>
#Burada yer alan enumerate fonksiyonu döngülerde indeks numarası vermek için kullanılabilir:
for sayi, harf in enumerate(cumle):
print("{} indeks numaralı harf: {}".format(sayi, harf))
#Bu fonksiyon listeler için de kullanılabilir:
liste=["Ahmet","Mehmet","Ali","Veli"]
yeni_liste=list(enumerate(liste))
print(
yeni_liste
)
#enumerate fonksiyonunu istediğimiz sayıdan da başlatabiliriz:
yeni_liste=list(enumerate(liste,start=20)) # enumerate(liste,20) yazmak da yeterli olacaktır.
print(
yeni_liste
)
######################
#ZIP fonksiyonu da listelerin elemanlarını birleştirip her bir elemanı demet olan yeni bir nesne üretir. Bu nesneyi görüntülemek için yeniden listeye çevirmeniz gerekir.
liste1=[1,2,3]
liste2=["a","b","c"]
yeni_liste=list(zip(liste1,liste2)) #Yeniden liste vb. bir nesneye çevirmek gerekir ki görüntülenebilsin.
print(yeni_liste)
#Eğer aşağıdaki gibi doğrudan yazdırmak istersek:
print(
zip(liste1,liste2) #SONUÇ: yani zip nesnesi olur.
)
#Dilerseniz sözlüğe de çevirebilirsiniz. Bu durumda biri anahtar, diğeri değer olarak atanacaktır.
sozluk=dict(zip(liste1,liste2))
print(sozluk) #SONUÇ: {1: 'a', 2: 'b', 3: 'c'}
#Eğer her iki listenin eleman sayıları eşit değilse bu durumda elemanı az olanı baz alır ve elemanı çok olanın diğer elemanlarını dikkate almaz.
liste1=[1,2,3,4]
yeni_liste=list(zip(liste1,liste2))
print(yeni_liste)#liste1 toplam 4 elemanlı fakat ilk 3 elemanı baz aldı.
#ZIP kullanarak dilediğiniz kadar listesi yan yana ekleyebilirsiniz. Sadece 2 ile sınırlı kalmanız gerekmez.
#Özellikle döngüler oluşturulurken listeleri birlikte kullanmak isterseniz ZIP fonksiyonu işinize yarayacaktır.
isim_listesi=["Abdullah Kaya","Abdulselam Ozarslan","Ahmet Aras","Ahmet Demirkol","Ahmet Turunç","Ali Rıza Kıldeş","Asım Dursun","Atalay Gençel","Aydın Tarı","Cüneyt Güçün","Damla Fidan","Deniz Berkay Çiçek","Derya Arıkboğa","Elif Aslan","Emine Torun","Erkan Yüzgeç","Faruk Uzman","Fatih Erdem","Fırat Kaya","Gülşah Zaman","Haluk Kazanasmaz","İbrahim Esmer","İhsan Akkuş","İzzet Bozkurt","Mehmet Akif Çelik","Mehmet Esen","Mesut Burak Derge","Muhammed Vurulmaz","Murat Göğebakan","Mustafa Demirel","Mustafa Kalkan","Mustafa Utkun","Necat Aslan","Onur Utku Yüksel","Seyfettin Yanık","Tahsin Aytekin"]
departman_listesi=["Pazarlama","Bilgi İşlem","Yönetim","Finans","Yönetim","Muhasebe","Finans","Bilgi İşlem","Pazarlama","İnsan Kaynakları","Finans","Pazarlama","Bilgi İşlem","İnsan Kaynakları","Üretim","Yönetim","İnsan Kaynakları","Pazarlama","Pazarlama","İnsan Kaynakları","Pazarlama","İnsan Kaynakları","Yönetim","Muhasebe","Pazarlama","Muhasebe","Yönetim","Üretim","Pazarlama","Pazarlama","Finans","Pazarlama","Muhasebe","Pazarlama","Pazarlama","Üretim"]
maas_listesi=[9822,18930,15814,12620,16332,14845,12473,14407,18672,15733,10347,16122,10818,18061,14370,15879,14603,16023,11796,14045,9993,17752,11701,14080,17029,9392,15018,14665,10900,9592,17137,9321,10777,18382,11092,9781]
"""Burada görüldüğü gibi çeşitli departmanlarda yer alan çalışanların listesi var. Bunların isimleri, departmanları
ve maaşları ayrı listeler halinde tutulmuştur. Şimdi bu verileri kullanarak şu işlemleri yapalım:
1. Departman adlarını birer defa getirelim. Böylece hangi departmanlar olduğunu görelim.
2. "Muhasebe" departmanı çalışanlarına %30, "Üretim" departmanına %25 ve diğer departmanlara %20 zam yapılacaktır.
3. Bu üç listeyi birleştirip bir sözlük yapalım. Sözlüğün anahtarı isimlerden oluşsun ve değer ise departman ve maaşı içeren 2 elemanlı bir liste olsun.
"""
#Her bir departmanın adını birer defa getirmek için bunu kümeye çevirmemiz yeterlidir.
print(set(departman_listesi))
#Departmanların zam oranlarını belirlemek için üç listeyi birleştirmek gerekir.
yeni_maaslar=list()
zam_orani=list()
for adi, departman, maas in zip(isim_listesi,departman_listesi,maas_listesi):
if departman=="Muhasebe":
yeni_maaslar.append(round(maas*1.3,2))
zam_orani.append(0.3)
elif departman=="Üretim":
yeni_maaslar.append(round(maas*1.25,2))
zam_orani.append(0.25)
else:
yeni_maaslar.append(round(maas*1.2,2))
zam_orani.append(0.2)
print(
list(zip(isim_listesi,departman_listesi,maas_listesi,zam_orani,yeni_maaslar))
)
#Sonuçları bir döngü ile getirelim:
for isim, departman, eski_maas, zam, yeni_maas in zip(isim_listesi,departman_listesi,maas_listesi,zam_orani,yeni_maaslar):
print("{} adındaki çalışanın deparmanı {} olup eski maaşı {} TL, zam oranı {} ve yeni maaşı ise {} TL'dir.".format(isim,departman,eski_maas,zam,yeni_maas))
Python: Python Dersleri 25: For Döngüsü Deyimleri: Break, Continue, Range, Enumerate, Zip
Kodu Kopyala
TÜM PYTHON KODLARI
Youtube Kanalımız
Aşağıdaki makrolar işinize yarayabilir.
Aşağıdaki makrolar işinize yarayabilir.