Aralık 22, 2018

Python’a Giriş 2

Serinin 2. yazısından merhabalar, aslında yazıyı birkaç gün önce paylaşmayı planlıyordum ancak yeni başladığım Python İle Makine Öğrenmesi serisinin halen bitiremediğim Binary Logistic Regression yazısıyla uğraşıyordum. Bahanemizi de sunduğumuza göre hatırlatmamızı yapalım ve ardından bu yazıda neler göreceğimizden bahsedeyim.

Hatırlatma: Haftalık olarak yayınlayacağım sorulara, duyurulara erişmek ve yazılarımdan haberdar olmak için bu linke tıklayarak formu doldurabilirsiniz.

Bu yazıda neler göreceğiz?

  • Yorum satırları
    • Tek satırlı yorumlar
    • Çok satırlı yorumlar
  • Booelans
  • Comparison (Karşılaştırma) Operatörleri
  • Logical (Mantıksal) Operatörler
  • Stringler
    • String nedir?
    • String nasıl tanımlanır?
    • String operatörleri
    • String metotları

Yorum satırları

Sadece Python için değil, bütün programlama dillerinde yorum satırları önemli bir yer tutuyor, peki bu yorumlar ne işimize yarıyor?

Örneğin bir program yazdınız ve 2 ay sonra yazdığınız kodlara dönüp baktığınızda eğer yorum satırı kullanmadıysanız büyük ihtimalle ne işe yaradıklarını hatırlamayacaksınız. Bu sebeple yaptığınız işlemlerin başında yorum satırı kullanarak kodların ne işe yaradığını açıklamanız kodu anlamanıza yardımcı olacaktır.

Hadi tek satırlı bir yorum örneği yapalım.

#sayi1 ve sayi2 değişkenleri oluşturuyorum.
sayi1 = 3
sayi2 = 4
#sayi1 ve sayi2 değişkenlerini topluyorum ve bunları sayi3 degiskenine atıyorum.
sayi3 = sayi1+sayi2
print(sayi3)
>>> 7

Peki çok satırlı yorumu nasıl yapacağız?

"""
İki tane değişken oluşturdum.
Bu iki değişkeni toplayıp, üçüncü değişkenin içine atadım.
"""

sayi1 = 3
sayi2 = 4
sayi3 = sayi1 + sayi2
print(sayi3)
>>> 7

Gayet basit değil mi? Python yazdıklarınızın yorum satırı olduğunu anladı ve programa dahil etmedi.

Böylelikle # ifadesini kullanarak tek satırlı, “”” ifadesini kullanarak da çok satırlı yorum yazabildik.


Booleans

Booleanlar tam sayıların (integer) bir alt türüdür. Bu sebepten bir ifadenin True (doğru) olması tam sayı olarak 1 değerine karşılık gelirken, False (yanlış) olması 0 değerine karşılık gelir.

Python’ın yüksek seviyeli bir dil olduğunu yani insan diline benzer olduğunu söylemiştik. Boolenları ifade ederken bunu çok daha iyi anlayabiliyoruz. Örneğin bir ifadenin doğru olmasına True derken, yanlış olmasına False yerine not True diyebiliyoruz.

Booleanlar hakkında örnek göstermeden önce comparison (karşılaştırma) operatörlerini anlatmak istiyorum.


Comparison (Karşılaştırma) Operatörleri

Comparison yani karşılaştırma operatörleri iki operatörün birbirlerine göre durumlarını karşılaştırmak için kullanılır. Örneğin bir sayının diğerinden büyük olup olmama durumu veya kullanıcıdan aldığımız bir değişkenin, önceden belirlediğimiz bir değişkene eşit olup olmama durumu (aklınızda bir şeyler canlandırdı mı?) .


Operatör

Anlamı
>Büyüktür
(x > y ifadesinde eğer x değeri y’den büyükse True
cevabını dönecektir.)
<Küçüktür
(x < y ifadesinde eğer x değeri y’den küçükse True
cevabını dönecektir.)
==Eşittir
( x == y ifadesinde eğer x değeri y değerine eşitse True
cevabını dönecektir.)
!=Eşit değildir
( x != y ifadesinde eğer x değeri y değerine eşit değilse
True cevabını dönecektir.)
>=Büyük eşittir
( x >= y ifadesinde eğer x değeri y’den büyükse veya eşitse
True cevabını dönecektir.)
<=Küçük Eşittir
( x <= y ifadesinde eğer x değeri y’den küçükse veya eşitse True cevabını dönecektir.)

Hadi biraz örnek yapalım.

x = 3
y = 4

print(y > x)  # y değeri x değerinden büyük olduğu için True
>>> True
print(x > y)  # x değeri y değerinden büyük olmadığı için False
>>> False
print(x == y) # x değeri y değerine eşit olmadığı için False
>>> False
print(x != y) # x değeri y değerine eşit olmadığı için True
>>> True
print(x >= y) # x değeri y değerinden büyük veya eşit olmadığı için False
>>> False
print(y >= x) # y değeri x değerinden büyük veya eşit (bu durumda büyük) olduğundan True
>>> True

print(True == 1)  #Birbirlerine eşit olduklarını söylemiştik değil mi?
>>>True
print(False == 0) #Birbirilerine eşit olduklarını söylemiştik değil mi?
>>>True
print(not True) #Doğru olmayan yani False.
>>>False
print(not False) #Yanlış olmayan yani True.
>>>True

Soru 1) Aşağıdakilerin çıktıları ne olacak? (Yorumlarda cevaplarınızı bekliyorum.)

print(2 * 3 == 5)
>>> ????

print(1 < 10)
>>> ????

print(1 < 2 < 3)
>>> ????

print(0 * True)
>>> ????

print(4*True != False)
>>> ????

Logical (Mantıksal) Operatörler

OperatörAnlamıÖrnek
andEğer operatörün iki tarafıda doğru ise True döndür.x and y
orEğer operatörlerin en az biri doğru ise True döndür.x or y
notOperatör doğruysa False; yanlışsa True döndür.not x

Örneklerle çok daha iyi anlayacağımız için direkt örneklere geçiyorum.

x = 1
y = 2

print(x == 1 and y == 2) # Operatörün iki tarafıda doğru olduğu için True dönecek.
>>> True
print(x == 1 or y == 3) # Operatörlerden en az biri doğru olduğu için True dönecek.
>>> True
print(not x) # x değer olarak 1 yani True ifade ediyor, not x bize False verecektir.
>>> False

Soru 2) Aşağıdakilerin çıktıları ne olacak? (Yorumlarda cevaplarınızı bekliyorum.)

print(True and False)
>>> ????

print(True or False)
>>> ????

print(not True or False)
>>> ????

print(not False and True)
>>> ????

Stringler

İyi güzel tam sayıları, ondalıklı sayıları kullandık ama programlarımızda bol bol yazı kullanmamız gerekecek değil mi?

Evet dediğinizi duyar gibiyim, işte bu anda yardımımıza stringler koşuyor. String veri tipi Python’da metin olarak yazdığınız her şeyi kapsıyor, bu tek bir karakterde olabilir bir cümle veya bir paragrafta olabilir.

Bu noktada farklı programlama dillerine hakim olan arkadaşlar için bir açıklama yapmak istiyorum, yukarıda stringlerin tek bir karakter olabildiğinden bahsettim fakat bazı arkadaşların kafasında neden char kullanmadık diye bir soru oluşabilir. Cevabı basit, Python’da char diye bir şey yok arkadaşlar, her şey stringler üzerinden ilerliyor.


Stringler nasıl tanımlanır?

Python’da stringler 3 şekilde tanımlanabiliyor, bunları örnek kod üzerinden anlatacağım.

string1 = "Bu bir string örneğidir."

string2 = 'Bu bir string örneğidir.'

string3 = """Bu bir string örneğidir."""

Aslında string1 ve string2 birbirinden çok da farklı değil ancak string3 diğerlerinden farklı bir özelliğe sahip bu da multiline (çok satırlı) olması.

string3 = """Böyle tanımlayabildiğimiz gibi"""

string3 = """Böyle
tanımlama
    şansımız da
          var."""

Fakat şöyle spesifik bir örnek vereyim ve neden string1 ve string2 tanımlama yöntemlerine tihtiyaç duyabiliyoruz anlamaya çalışayım.

string1 = "Can'ın blog yazıları çok geç geliyor."

string2 = 'Can'ın blog yazıları çok geç geliyor.'

Problemi anladınız değil mi? Cümlede bulunan kesme işareti string1’de problem çıkarmazken string2’de problem çıkarttı. Bu problemi string1 şeklinde tanımlayarak çözebileceğimiz gibi kendisinden sonraki karakteri yok saymamızı sağlayan (\) kaçış dizisini de kullanabiliriz.

#Sorun çözüldü :)
yazi = 'Can\'ın blog yazıları çok geliyor.'

String operatörleri

Stringleri tanımlamayı öğrendiğimize göre stringlerde yapabileceğimiz bazı işlemleri görebiliriz.

Stringleri birbirileriyle toplayabiliriz.

yazi1 = "Stringler "
yazi2 = "toplanabilir."
print(yazi1+yazi2)
>>> Stringler toplanabilir.

Stringleri tam sayılarla çarpabiliriz.

x = 3
y = "4"
print(x*y) # 3 tane y stringini yan yana bastır anlamına geliyor.
>>> 444

yazi = "Test"
rakam = 2
print(yazi*rakam)
>>> Test Test

Stringlerde membership (üyelik) operatörünü (in) kullanılabiliriz.

yazi = "Can"
print("a" in yazi) #Eğer yazi stringi içinde "a" karakteri varsa True, yoksa False dön.
>>> True
print("b" in yazi)
>>> False
print("Ca" in yazi) #Birden fazla karakter destekleniyor...
>>> True
print("b" not in yazi) # not mantıksal operatörü kullanılabilir.
>>> True

Stringlerde indexing işlemi gerçekleştirilebiliriz, iyi ama nedir bu indexing işlemi?

Kaynak: CS41

s adında bir değişken oluşturduk ve bu değişkenin içine Arthur stringini atadık. Arthur kelimesinin her harfi bir indexi ifade etmektedir. Bu indexler ilk karakter için 0’dan başlayıp karakter sayısının bir eksiğine kadar gitmektedir.

Örneğin Arthur örneğinde 6 karakter olduğu için index 0’dan başlayıp 5’e kadar gidecektir.
Eğer bu karakterle erişmek istersek köşeli parantez degisken_adi[index_numarası] kullanarak erişebiliriz.

s = "Arthur"
print(s[0]) #İlk karakter
print(s[1]) #İkinci karakter
print(s[2]) #Üçüncü karakter
print(s[3]) #Dördüncü karakter
print(s[4]) #Beşinci Karakter
print(s[5]) #Altıncı karakter
>>> A
>>> r
>>> t
>>> h
>>> u
>>> r

Ayrıca bu index numaraları tersten de oluşturulmuştur. Örneğin sonuncu karaktere ulaşabilmek için -1, ilk karaktere ulaşabilmek için -6 index numarasını kullanabiliriz.

s = "Arthur"
print(s[-1]) #Son karakter
print(s[-2]) #Beşinci karakter
print(s[-3]) #Dördüncü karakter
print(s[-4]) #Üçüncü karakter
print(s[-5]) #İkinci karakter
print(s[-6]) #İlk karakter
>>> r
>>> u
>>> h
>>> t
>>> r
>>> A

Peki birden fazla karaktere ulaşmak istersek ne yapıyoruz? İşte o zaman slicing (dilimleme) işlemi uyguluyoruz.

degisken_adi[baslangic:bitis]

s = "Arthur"
print(s[0:6]) #0'dan 6 numaralı indexe yani 7. karaktere kadar al.
>>> Arthur
print(s[0:2]) #0'dan 2 numaralı indexe yani 3. karaktere kadar al.
>>> Ar
print(s[-6:-3]) #-6 numaralı indexten -3 numaralı indexe yani 4. karaktere kadar al.
>>> Art

Ayrıca atlama işlemleri de gerçekleştirebiliyoruz.

degisken_adi[baslangic:bitis:atlama_degeri]

s = "Arthur"

print(s[0:6:2]) # 0'dan 6 numaralı indexe 2 atlayarak git.
>>> Atu

String Metotları

Stringler için kullanabileceğimiz çok fazla yararlı metot var ama ben en çok kullanılan ve işinize yarayacak olanları göstereceğim.

"""
format() metotu değişkenleri ekrana bastırırken çok işimize yaramaktadır.

Örnek kullanım:
test = "abcd123"
print("yazi1234 {}".format(test))
"""



yazi = "python çok güzel dil"

print("Yazı:", yazi) # böyle bastırabileceğimiz gibi
>>> Yazı: python çok güzel dil

print("Yazı: {}".format(yazi)) # böyle de bastırabiliriz.
>>> Yazı: python çok güzel dil

print("Yazı: {degisken}".format(degisken=yazi)) # böyle de.
>>> Yazı: python çok güzel dil
"""
capitalize() metotu ile stringin ilk karakterini büyük harfe çevirebilirsiniz.
"""


test = "merhaba"
print(test)
>>> merhaba
print(test.capitalize())
>>> Merhaba
"""
upper() metotu ile stringin tamamını büyük harfe çevirebilirsiniz.
"""


test = "merhaba"
print(test)
>>> merhaba
print(test.upper())
>>> MERHABA
"""
len() metotu ile değişkenin stringin boyutunu ölçebilirsiniz.
"""


x = "abcde"
print(len(x))
>>> 5
"""
replace() metotu ile string içindeki karakteri farklı bir karakter ile değiştirebilirsiniz.
"""

test = "sucuk"
print(test)
>>> sucuk
print(test.replace("s", "m")
>>> mucuk

Bu dersten bu kadar, umarım işinize yaramıştır, bir sonraki yazıda görüşmek üzere.

Share

Can Umay

Can UMAY, 19 yaşında. Ankara Yıldırım Beyazıt Üniversitesinde Bilgisayar Mühendisliği öğrencisi ve Gais Siber Güvenlik Teknolojileri şirketinde Yapay Zeka geliştiricisi olarak çalışmakta. Deep Learning Türkiye tarafından kurulan Yapay Zeka ve İnsansız Sistemler Öğrenci Birliğinin ilk üyesi olan Biltek Yapay Zeka ekibinin kuruculuğunu ve başkanlığını üstlenen UMAY şuanda şirket bünyesinde Peyk projesinin ekip yöneticiliğini yürütmektedir.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir