27 Temmuz 2014 Pazar

Python'da for loop, append, len ve range

Herkese Merhabalar


Geçen pazar yazdığım yazımda birlikte Python' a giriş yapmıştık. Kendi açımdan önemli gördüğüm şeyleri size anlatmaya çalıştım ve bu hafta da benim için önemli olan şeyleri anlatmaya devam edeceğim. Öncelikle şunu söylemeliyim burada ki amacım yeni başlayan birine nelere ağırlık vermesi gerektiğini göstermek. Buraya oluşturmaya başladığım blog tek başına bir kaynak olamaz. O yüzden daha önceki yazılarımda sıkça bahsettiğim Scratch, Codecademy ve istihza.com ' a hiç bakmamışsanız bu yazı sizin için çok faydalı olmayacaktır. Sonuçta bilgi emek verilerek öğreniyor ve öğrenmek isteyen herkesin emek vermesi gerekir. 

Bu hafta bahsedeceğim konulardan sonra artık bazı kodları yazabilir hale geleceğiz ve eminim çok zevkli olduğunu göreceksiniz. Size bu gün bahsedeceğim konular for döngüsü (loop), listeye ekleme yapma, range ve len fonksiyonları. Bunların hepsi çok önemli ve kod yazarken sıkça başvurduğumuz kodlar. Eminim herkesin işine çok yarayacaktır.

  • for döngüsü bir işlemin kaç kez yapılacağını belirtmek için kullanılır. Basit bir örnek ile daha kolay anlayabiliriz.
 dizi = "ATGTGCAAAGTGATGCCAGATA"
for baz in dizi:
    print "O",
Bu kodu yazdığınızda çıktısı şu şekilde olacaktır:
>>>
O O O O O O O O O O O O O O O O O O O O O O
for döngüsünün burada yaptığı iş dizi' nin eleman sayısı kadar O yazdırmak oldu. Daha doğru bir ifadeyle her bir baz için O yazdırdı. for...in...: bir  kalıptır. Son boşluğa içinde işlem yapmasını istediğimiz liste, string ismi getirilebilir. Yada range fonksiyonu getirilebilir. İlk boşluğa ise istediğiniz her şeyi yazabilirsiniz. Ne yazarsanız yazın anlamı yazdığınız string yada listenin elemanı anlamına gelecektir. Yani örnekte kullandığımız "baz" yerine "i", "adınız" yada herhangi bir şeyi yazsanız da size aynı sonucu verecektir. for döngüsü belkide Python' da en çok kullanacağınız şey olabilir.  for döngüsü ile bilmeniz gereken çok önemli bir şey de for dögüsünğ yazdıktan sonra " : " koymak. Bunu unutursanız kesinlikle hata alırsınız. Python' da unutmamamız gereken bir şey de " : " koyduktan sonra alttaki satıra bir tab boşluk içeriden başlamak. Yine başlangıçta oldukça unutulan ve hata almaya sebep olan bir şey de budur. "print "O"," komutunda en sonda bulunan virgül sadece çıktının alt alta değil de yan yana olmasını sağlıyor. Yani önemli bir fonksiyonu yok sadece çıktının görüntüsünü değiştiriyor. 
  • Bir listeye ekleme yapmak yine oldukça kullanılan bir fonksiyondur. Bu fonksiyonla olan bir liste' nin üzerine yada boş bir listeye yeni elemanlar ekleyebiliriz. Bir örnek ile kolayca anlaşılacaktır.

liste = ["ACT", "GTC", "GAT", "TGC""TTT"]
liste.append("AAA")
print liste
Bu kodu yazdığınızda çıktısı şu şekilde olacaktır:
>>>
['ACT', 'GTC', 'GAT', 'TGC', 'TTT', 'AAA']
kodon = []
kodon.append("AAA")
print kodon
Bu kodu yazdığınızda çıktısı şu şekilde olacaktır:
>>>
['AAA']
append fonksiyonunda dikkat edin liste tanımlarken köşeli parantez kullanıyoruz fakat listelere ekleme yaparken normal parantez kullanıyoruz. Bu sadece ekleme için geçerli değil, liste üzerinde oynama yaptığımız tüm fonksiyonlar için geçerlidir. append fonksiyonunun nasıl kullanıldığını örneklerde görebilirsiniz.
  • range fonksiyonu Python’da sayı aralıklarını belirtmemizi sağlar. Zaten İngilizce' de de bu kelime “aralık” anlamına gelir. 
range(200) fonksiyonu 0 ile 200 arasındaki sayıları içerir. Bu aynı zamanda range(0, 200) olarak da yazdırılabilir. range(100, 200) ise 100 ile 200 arasındaki sayıları içerir. range (100, 200, 5) ise 100 ile 200 arasındaki sayıları 5 er atlayarak içerir.
print range (0,20,4)
Bu kodu yazdığınızda çıktısı şu şekilde olacaktır:
>>>
[0, 4, 8, 12, 16]
range fonksiyonunu for döngüsü içinde de kullanabilirsiniz.
for i in range(0,20,4):
    print i
Bu kodu yazdığınızda çıktısı şu şekilde olacaktır:
>>>
0
4
8
12
16 
Gördüğünüz gibi ikisinin çıktıları farklı oldu. Birincisinde bize sonuçları liste halinde verdi. İkincisinde ise işlem sırası hangi sayıya gelmişse onu yazdırdı. for döngüsü genellikle her döngüde bir işlem yaptırmak için kullanılır.
  • Ve bu hafta size anlatacağım son konu olan len fonksiyonu. Yine diğerleri gibi oldukça çok kullanılan ve çok işe yarar bir fonksiyondur. Bu fonksiyon, karakter dizilerinin uzunluğunu gösterir. Örnek verecek olursak:
isim  = "osman turkyilmaz"
print len(isim)
Bu kodu yazdığınızda çıktısı şu şekilde olacaktır:
>>>
16
Aslında 15 har var fakat boşluk da bir karakter olduğu için fonksiyonumuz onuda sayarak 16 dedi.
isim  = "osmanturkyilmaz"
print len(isim)
Bu kodu yazdığınızda çıktısı şu şekilde olacaktır:
>>>
15
isim  = "osmanturkyilmaz"
for i in range(0,len(isim)):

    print i,

Bu kodu yazdığınızda çıktısı şu şekilde olacaktır:
>>>
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Bu haftalık bahsetmek istediklerim bu kadar. Bu konularda anlamadığınız yerleri istihza.com' da ayrıntılı olarak inceleyebilirsiniz.

Meraklı olan arkadaşlar şu kodları yazmaya çalışabilirler artık.
"ACGATTTGAGCGTCGCGGTGTGAGTCCGCGTGACGCGTGACGCGTGATGGTGAGCGAGCGCCCTGAGTGTGCGACTAGCGATTGGGTCCCATTAGCATCGTAGCATCGATCGAGCTAGAACGTACGATCGATCGACTGACTACGATCGGATCGATCGATCGATCGATCCGATCGATCGATCAGATCGATCGTAGCATGCTAGCATGCTACGATGCGATCGATGCATGCTAGGCTAGCTAGCATCGATCGATGATCGGATGCATCGATGCATCGGATCGATCGATGCTACGATCGTAGCTAGACTAGGATCGATCGATCGACTAGATGCAATCGTAGATCGATCGATCGTAA"

  • İlk olarak bu dizi içerisinde kaç "A", "T", "G" ve "C" olduğunu veren bir kod yazınız.Bu yazdığınız kodun çıktısı şu şekilde olacaktır;
A sayısı : X
T sayısı : X
G sayısı : X
C sayısı : X
  • İkinci kod ise bize çıktı olarak GC oranını verecek. Yani tüm bazların yüzde kaçı G veya C' dir.
  • Yazdığınız üçüncü kod ise bu dizideki bazları 3' erli bölerek listeye atacak. Yani çıktısı bir liste olacak ve içerisinde de dizinin kodonlara ayrılmış hali olacak.
  • Son olarak şimdiye kadar yazarken en çok eğlendiğim kodu yazmanızı istiyorum. Bu yazdığınız kod aslında bir matematik problemi. abcd 4 basamaklı bir sayıdır ve 4 basamaklı dcba sayısının 4 katıdır. 4 basamaklı abcd sayısı nedir? Ne kadar karışık görünse de oldukça kısa bir kod benden söylemesi.
Bu haftalık bu kadar soruların cevaplarını haftaya pazar yazacağım yazımda sizlerle paylaşacağım. Şimdiden herkese iyi bayramlar.

Bilgi paylaştıkça güzelleşir. Paylaşarak öğrenmek dileğiyle.

Osman

2 yorum:

  1. Kodlarını python2 ile yazmışsın. Özel bir sebebi yoksa python3 yazmanızı ve paylaşmanızı öneririm.

    range(x,y,z) statement python3 de range nesnesi döner. print methoduna parametre olarak range statement verseniz bile range nesnesini elde edersiniz.

    Sizin gösterdiğiniz çıktıyı almak içinn list(range(x,y,c)) yazmak gerekir.

    Ayrıca append fonksionunda [] kullanmamamızın sebebi listeye item olarak str eklememiz. append([str]) olarak str içeren bir list i item olarak ekleyebilirdik.

    YanıtlaSil
  2. Merhabalar,
    Tavsiyeleriniz için teşekkür ederim. Şuan içinde bulunduğum projede bütün grup python2 kullanıyoruz. Bu yüzden kodları python2 ile yazdım. Verdiğiniz bilgiler için de çok teşekkürler.

    YanıtlaSil