Veri Bilimi İçin Python Notları-1: Python’da Temel Kavramlar, Değişkenler ve Sayılar

V

1.  Python’da Temel Kavramlar

Bu bölümde Python’un temel yapısı üzerinde durulacaktır.

 1.1. Python’da Satırlar ve Girintiler (Lines and Indentations)

Python’da satır girintileri derleyici tarafından okunur. Bu yüzden kod satırlarında girintilere dikkat edilmelidir.

a=7
b=4
if a > b:
  print("a değeri b değerinden büyüktür.")

Yukarıdaki kod aşağıdaki şekilde yazılırsa “IndentationError: expected an indented block” şeklinde bir hata alınır. Çünkü if blokları yukarıda gösterildiği gibi içe doğru girinti verilerek yazılmalıdır.

a=7
b=4
if a > b:
print("a değeri b değerinden büyüktür.")

Girintilerin seviyesi önemli değildir. Tek boşluk şeklinde girinti verilebileceği gibi tek tab ya da çift tab şeklinde de girinti verilebilir.

a=7
b=4
if a > b:
        print("a değeri b değerinden büyüktür.")

Yukarıdaki örnekte çift tab şeklinde girinti kullanıldı. If bloğunu ilk satırda çift tab girinti ile tanımladığımız için takip eden satırlarda da çift tab girinti kullanılmalıdır. Örneğin tek tab girinti kullanılırsa “IndentationError: unindent does not match any outer indentation level” hatası meydana gelebilir.

a=7
b=4
if a > b:
        print("a değeri b değerinden büyüktür.")
    print("a değeri b değerinden büyüktür.")

If bloğunun dışında bir değer belirtilmek isteniyorsa, yeni satır aşağıdaki gibi sola yaslı bir şekilde ifade edilir.

a=7
b=4
if a > b:
        print("a değeri b değerinden büyüktür.")
print("if bloğunun dışındayım.") 

Özetle, Python’da girintiler derleyici tarafından okunur ve Python sentaksının bir parçasıdır.

1.2. Python’da Deklarasyon

Python’da değişkenler için ayrıca deklarasyon kullanılmaz. Örneğin a integer ve b string birer değişken olmak üzere, VBA programlama dilinde, a ve b değişkenlerine birer değer atanmadan önce “Dim a As Integer, b As String” şeklinde değişken tipleri deklare edilir. Ancak Python’da bir değişkene değer atandığında, o değişkenin deklarasyonu da yapılmış kabul edilir.

a = 20
b = "ishakkutlu.com"

print(a)
print(b)

Aslında değişkene değer atamakla o değişkeni deklare etmiş oluyoruz. Daha önce kullanılan bir değişkene, takip eden satırlarda farklı bir değer atanırsa, son atanan değer geçerli olur.

a = 20 #integer
print(a) #Sonuç: 20

a = "ishakkutlu.com" #string
print(a) #Sonuç:ishakkutlu.com

1.3. Python’da Yorum Satırları (Comments)

Python’da bir satır, açıklama satırı yapılmak istendiğinde o satırın en soluna “#” işareti eklenir. Python “#” işareti ile başlayan satırı kod olarak okumaz.

a=7
b=4
#Bu bir açıklama satırıdır. Derleyici tarafından kod olarak okunmaz. 
if a > b:
        print("a değeri b değerinden büyüktür.")

Açıklama satırı yapılmak istenen satır bir kod satırının sağında da olabilir.

a=7
b=4

if a > b: # Bu bir if koşuludur.
        print("a değeri b değerinden büyüktür.")

Birden fazla satırı yorum satırı haline dönüştürmek için kod bloğunun başında ve sonunda üç adet yan yana tek (ya da çift) denden işareti kullanılır. Aşağıdaki örneği inceleyebilirsiniz.

a=7
b=4
# """ işaretleri arasındaki kod bloğu yorum satırı haline dönüştürüldüğü için derleyici tarafından okunmaz.

print(a)
print(b)

"""
if a > b:
        print("a değeri b değerinden büyüktür.")
"""

1.4. Python’da Büyük/Küçük Harf Hassasiyeti (Case-Sensitive)

Python’da büyük/küçük harf duyarlılığı vardır. Diğer bir ifadeyle küçük harf kullanılarak ifade edilen a değişkeni ile büyük harf kullanılarak ifade edilen A değişkeni, x ve y değişkenleri gibi farklı birer değişkeni temsil eder.

a = 7
A = "ishakkutlu.com"

print(a) # Sonuç: 7
print(A) # Sonuç: ishakkutlu.com (Sonuç 7 değildir.)

Benzer şekilde “print()” metodunu “Print()” şeklinde büyük harfle yazarsanız, “NameError: name ‘Print’ is not defined” şeklinde bir hata alırsınız.

a = 7

Print(a) # Sonuç: 7 #Sonuç: NameError: name 'Print' is not defined

1.5. Python’da Tek ya da Çift Denden Kullanımı (Single or Double Quotes)

Python’da string değerler denden işareti arasında ifade edilir. Tek ya da çift denden kullanılabilir.

a = 'İshak Kutlu'
A = "ishakkutlu.com"

print(a) 
print(A)

Not: Bir kod bloğunu editörün (kodların yazıldığı IDE’nin) dışında bir kaynaktan kopyalıyorsanız, kodları IDE’ye yapıştırdıktan sonra tek/çift denden işaretiyle belirtilen ifadelerin denden işaretlerini klavyeden düzeltmeniz gerebilir.

1.6. Python’da Rezerv İfadeler (Keywords)

Python’da rezerv ifadelerin tümü küçük harflerden oluşur ve aşağıdaki tabloda gösterilmiştir. Aşağıdaki ifadeler Python’un keywordleri olduğu için kodların içinde değişken olarak kullanılamaz.

Örneğin “def” isminde bir değişken tanımlanırsa, “def” rezerv bir ifade olduğu için “SyntaxError: invalid syntax” şeklinde bir hata alınır.

def = "ishakkutlu.com"
print(def)

Aşağıdaki komut ile Python’un keywordlerini konsola yazdırabilirsiniz.

import keyword

x = keyword.kwlist
print(x) #List olarak yazdırır. 
Sonuç: ['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

for a in x: #Alt alta yazdırır.
    print(a)

1.7. Python’da Alt Alta Yazdırmak (Multilines)

Python’da verileri alt alta yazdırmak için “\n” ifadesinden yararlanılır. Farklı kullanımları aşağıdaki kod bloğunda gösterilmiştir.

x="Ankara\n"
y="İstanbul\n"
z="Eskişehir"

print(x, y, z) 
'''Sonuç: İlk satırdan sonra sağa doğru girinti var.
Ankara
 İstanbul
 Eskişehir
'''
print(x+y+z) 
'''Sonuç: Tüm satırlar sola hizalanmış.
Ankara
İstanbul
Eskişehir
'''

string = "Hoşgeldiniz!\nPython öğrenmek eğlencelidir."
print(string)
'''Sonuç: Tüm satırlar sola hizalanmış.
Hoşgeldiniz!
Python öğrenmek eğlencelidir.
'''

x="Ankara"
y="İstanbul"
z="Eskişehir"

print(x+"\n", y+"\n", z) 
'''Sonuç: İlk satırdan sonra sağa doğru girinti var.
Ankara
 İstanbul
 Eskişehir
'''

x="Ankara"
y="İstanbul"
z="Eskişehir"

print(x+"\n" + y+"\n" + z) 
'''Sonuç: Tüm satırlar sola hizalanmış.
Ankara
İstanbul
Eskişehir
'''

Üç denden işareti ile veriyi aşağıda gösterildiği gibi satırların girintileri farklı olacak şekilde alt alta yazdırabilirsiniz.

mystr = 'Bu tek denden ile belirtilen bir string ifadedir.'
print(mystr)
#Sonuç: Bu tek denden ile belirtilen bir string ifadedir.

mystr = "Bu da çift denden ile belirtilen başka bir string ifadedir."
print(mystr)
#Sonuç: Bu da çift denden ile belirtilen başka bir string ifadedir.

mystr = '''Üç denden kullanarak string
                ifadeleri farklı girinti seviyelerinde
        farklı satırlara yazdırabilirsiniz.'''
print(mystr)
#Sonuç:
#Üç denden kullanarak string
#                ifadeleri farklı girinti seviyelerinde
#       farklı satırlara yazdırabilirsiniz.

“\” escape karakteri kullanarak karakter dizilerini IDE’de alt alta yazabilirsiniz. Ancak sonuç konsola tek satırda yazdırılacaktır.

mystr = "Python veri biliminde \
        yaygın olarak \
        kullanılan bir programlama dilidir."

print(mystr)
#Sonuç: Python veri biliminde         yaygın olarak         kullanılan bir programlama dilidir.

print("____________________\n")

x = 10 + 10 + 10 + \
    10 + 10 + 10 + \
    10 + 10 + 10

print(x) #Sonuç: 90

1.8. Python’da Kullanıcıdan Veri Almak (user input)

Python’da kullanıcıdan veri almak için aşağıda gösterildiği gibi “input” metodu kullanılabilir.

myInput = input("İsim: ")
print("Merhaba:", myInput) 

Yukarıdaki kod çalıştırıldıktan sonra konsolda “İsim: ” yazan yere “İshak” yazılır ve klavyeden entera basılırsa, Python “Merhaba İshak” şeklinde string bir değer döndürecektir.

2.  Python’da Değişkenler (Python Variables)

2.1. Python’da Data Tipleri (Data Types)

Python’da, data tipleri ve onları taşıyan değişkenlerin sınıfı aşağıda gösterilmiştir.

Takip eden makalelerde/bölümlerde değişken sınıfları daha detaylı olarak açıklanacaktır. Şimdilik aşağıdaki tablo üzerinden Python’da data/değişken tiplerine hızlıca göz atabilirsiniz.

Yukarıdaki tabloda yer alan data tipleri/sınıflar için örnek Python kodları ve sonuçları aşağıdadır.

#string
x = "ishakkutlu.com"
print("Sonuç:", x, "/ Data Tipi:", type(x)) #ishakkutlu / Data Tipi: <class 'str'>

#%%

#integer
x = 37
print("Sonuç:", x, "/ Data Tipi:", type(x)) #37 / Data Tipi: <class 'int'>

#%%

#float
x = 3.5
print("Sonuç:", x, "/ Data Tipi:", type(x)) #3.5 / Data Tipi: <class 'float'>

#%%

#complex
x = 3j
print("Sonuç:", x, "/ Data Tipi:", type(x)) #Sonuç: 3j / Data Tipi: <class 'complex'>

#%%

#list
x = ["Ankara", "İstanbul", "Eskişehir"]
print("Sonuç:", x, "/ Data Tipi:", type(x)) #Sonuç: ['Ankara', 'İstanbul', 'Eskişehir'] / Data Tipi: <class 'list'>


#%%

#tuple
x = ("Ankara", "İstanbul", "Eskişehir")
print("Sonuç:", x, "/ Data Tipi:", type(x)) #Sonuç: ('Ankara', 'İstanbul', 'Eskişehir') / Data Tipi: <class 'tuple'>

#%%

#range
x = range(3,5)
print("Sonuç:", x, "/ Data Tipi:", type(x)) #Sonuç: range(3, 5) / Data Tipi: <class 'range'>

#%%

#dictionary/mapping
x = {"isim" : "İshak", "yas" : 37}
print("Sonuç:", x, "/ Data Tipi:", type(x)) #Sonuç: {'isim': 'İshak', 'yas': 37} / Data Tipi: <class 'dict'>

#%%

#set
x = {"Ankara", "İstanbul", "Eskişehir"}
print("Sonuç:", x, "/ Data Tipi:", type(x)) #Sonuç: {'Ankara', 'İstanbul', 'Eskişehir'} / Data Tipi: <class 'set'>

#%%

#frozenset
x = frozenset({"Ankara", "İstanbul", "Eskişehir" })
print("Sonuç:", x, "/ Data Tipi:", type(x)) #Sonuç: frozenset({'Ankara', 'İstanbul', 'Eskişehir'}) / Data Tipi: <class 'frozenset'>

#%%

#boolean
x = True
print("Sonuç:", x, "/ Data Tipi:", type(x)) #Sonuç: True / Data Tipi: <class 'bool'>

#%%

#bytes
x = b"ishakkutlu.com"
print("Sonuç:", x, "/ Data Tipi:", type(x)) #Sonuç: b'ishakkutlu.com' / Data Tipi: <class 'bytes'>

#%%

#bytearray
x = bytearray(3)
print("Sonuç:", x, "/ Data Tipi:", type(x)) #Sonuç: bytearray(b'\x00\x00\x00') / Data Tipi: <class 'bytearray'>

#%%

#memoryview
x = memoryview(bytes(4))
print("Sonuç:", x, "/ Data Tipi:", type(x)) #Sonuç: <memory at 0x000002793FACFDC0> / Data Tipi: <class 'memoryview'>

#%%

#None
x = None
print("Sonuç:", x, "/ Data Tipi:", type(x)) #Sonuç: None / Data Tipi: <class 'NoneType'> 

Yukarıdaki satırlarda yer alan print() çıktısı içindeki “x” ifadeleri sonucu, “type(x)” ifadeleri ise x değişkeninin sınıfını konsola yazdırır. Sınıflara ilişkin daha fazla bilgi için aşağıdaki bölümü inceleyebilirsiniz.

2.2. Python’da Değişken Tipini/Sınıfını Öğrenmek

Bir değişkenin tipini/sınıfını öğrenmek için aşağıda gösterildiği gibi “type” metodunu kullanabilirsiniz.

x = 7
y = "ishakkutlu.com"
z = 7.1
print(type(x)) #Sonuç: <class 'int'>
print(type(y)) #Sonuç: <class 'str'>
print(type(z)) #Sonuç: <class 'float'>

-50, -5, 0, 4, 25 vb. 0 dahil eksi sonsuzdan artı sonsuza kadar olan sayılar “int” (integer) tipinde verilere örnek verilebilir. Ondalıkla ifade edilebilen (-50.0, -5.2, 0.2, 4.8, 25.9 vb.) sayısal değerler ise “float” tipinde verilerdir. “Str” (string) tipte veriler ise metinsel (ve/veya numerik bir değeri olmayan) değişkenlerdir. Numerik bir değer denden işareti ile bir değişkene atandığında, o değişken artık numerik değil string bir değişkene dönüşür ve matematiksel özelliklerini kaybeder. Aşağıdaki örnekte Python x+y değerinin toplamını yapamayacak ve “TypeError: can only concatenate str (not “int”) to str” şeklinde bir hata verecektir.

x = "7"
y = 5
print(type(x)) #Sonuç: <class 'str'>
print(type(y)) #Sonuç: <class 'int'>
print(x+y)

Yukarıda x değişkenine atanan “7” değeri denden işareti içinde ifade edildiği için x değişkeni string bir değişken olmuştur. Python’da string değişkenler + veya & işareti ile birleştirilebilir. Yukarıda verilen hatanın söylediği şey ise sadece string tipinde değişkenlerin birleştirilebileceğidir. Ancak x değişkeni string olmasına rağmen y değişkeni integer (tam sayı) tipindedir. Aşağıdaki gibi y değişkenine atanan değeri de denden işareti ile ifade ederek onu da string yapabiliriz.

x = "7"
y = "5"
print(type(x)) #Sonuç: <class 'str'>
print(type(y)) #Sonuç: <class 'str'>
print(x+y) #Sonuç: 75

Sonuç 12 değil, 7 ve 5 değerlerinin yan yana getirilerek birleştirildiğini ifade eden 75’tir.

Not: Python’da sınıflar son derece önemlidir ve sonraki makalelerde detaylı bir şekilde işlenecektir.

2.3. Python’da Değişkenleri Dönüştürmek (Converting Variables)

Yukarıdaki örnekten devam edilirse, x ve y değişkenlerinin toplamını almak istediğimiz varsayımında, x ve y değişkenlerine atanan değerlerdeki denden işaretleri kaldırılabilir. Diğer bir alternatif ise son satırda yer alan x+y ifadesi yerine, x ve y değişkenleri aşağıda gösterildiği gibi integer tipine dönüştürüldükten sonra toplanabilir.

x = 7
y = 5
print(type(x)) #Sonuç: <class 'int'>
print(type(y)) #Sonuç: <class 'int'>
print(x + y) #Sonuç: 12


print("______________________\n")


x = "7"
y = "5"
print(type(x)) #Sonuç: <class 'str'>
print(type(y)) #Sonuç: <class 'str'>

print(int(x) + int(y)) #Sonuç: 12 #int(x) ifadesi, x nesnesinin sınıfını integera dönüştürür. Benzer şekilde int(y) ifadesi, y nesnesinin sınıfını integera dönüştürür.

Bir nesnenin sınıfını başka bir sınıfa dönüştürmek için hedef sınıf adı ile dönüştürülecek nesne adı “SınıfAdı(NesneAdı)” şeklinde kullanılır. Diğer bir ifadeyle bir değişken tipini başka bir değişken tipine dönüştürmek için hedef değişken tipi ile dönüştürülecek değişken adı “DeğişkenTipi(DeğişkenAdı)” şeklinde (yukarıdaki örnekte olduğu gibi) kullanılır.

Değişken, Nesne, Sınıf, Değişken Tipi, Data Tipi Kavramları Üzerine Kısa Bir Açıklama:

Nesne, değişken ve sınıf kavramları sonraki makalelerde detaylı bir şekilde açıklanacaktır. Kısaca bahsetmek gerekirse, örneğin “x = 7” gibi bir ifade tanımlandığında, 7 sayısının integer olduğunu bildiğimiz için x ifadesinin sınıfının integer olduğunu söyleyebiliriz. Diğer bir ifadeyle x ifadesi, 7 değerini taşıması sebebiyle integer sınıfına dahildir. Bu durum ise x ifadesini integer sınıfının bir nesnesi yapar. Artık x nesnesi denildiğinde “x=7” ifadesini işaret etmiş oluruz. Benzer şekilde x değişkeni denildiğinde de “x=7” ifadesini işaret etmiş oluruz. O halde değişken ve nesne kavramları birbirinin yerine kullanılabilmektedir.

“x” değişkeninin/nesnesinin tipi integer denildiğinde, aslında x nesnesinin sınıfının integer olduğuna işaret etmiş oluruz. Bu durumda ise değişken/nesne tipi ve sınıf kavramları birbirinin yerine kullanılabilmektedir.

Özetle değişken ve nesne kavramları ile değişken tipi ve sınıf kavramları birbirleri yerine kullanılabilir.

2.4. Python’da Değişkenleri Adlandırmak (Naming Variables)

Değişkenleri isimlendirirken bazı önemli detaylar vardır. Örneğin değişkenin ilk karakteri sayısal olamaz; karakterler arasında boşluk, tire (-) olamaz gibi. Python sürümlerine göre değişebilmekle birlikte ç, ü, ı, ş vb. Türkçe karakterler değişken adlandırmada kullanılabiliyor. Ancak değişkenleri adlandırırken ç, ü, ı, ş vb. Türkçe karakterlerin kullanımından kaçınmakta yarar var. Doğru değişken isimlendirmelerine örnek olarak aşağıdaki örnekleri inceleyebilirsiniz.

mydegisken = "ishakkutlu.com"
my_degisken = "ishakkutlu.com"
_my_degisken = "ishakkutlu.com"
myDegisken = "ishakkutlu.com"
MYDEGİSKEN = "ishakkutlu.com"
mydegisken2 = "ishakkutlu.com" 

Python’un kabul etmeyeceği hatalı değişken isimlerine örnek olarak ise aşağıdaki adlandırmaları inceleyebilirsiniz.

my degisken = "ishakkutlu.com"
my-degisken = "ishakkutlu.com"
2mydegisken = "ishakkutlu.com" 
mydeğişken = "ishakkutlu.com" 

2.5. Python’da Çoklu Değişkenler (Multiple Variables)

Aşağıda gösterildiği gibi tek satırda birden fazla değişkene değer atayabilirsiniz.

var1, var2, var3 = "Ankara", "İstanbul", "Eskişehir"

print(var1) #Sonuç: Ankara
print(var2) #Sonuç: İstanbul
print(var3) #Sonuç: Eskişehir

print("__________")
print()

#Yukarıdaki örnek ile aşağıdaki farklıdır.
#Aşağıda her bir değişkene ayrı ayrı değer atanıyor. Sadece noktalı virgül kullanılarak tek satırda ifade edilmiş.

var1 = "Ankara";  var2 = "İstanbul"; var3 = "Eskişehir"

print(var1) #Sonuç: Ankara
print(var2) #Sonuç: İstanbul
print(var3) #Sonuç: Eskişehir

var1, var2, var3 gibi değişkenlerin sayısı ile Ankara, İstanbul, Eskişehir gibi onlara atanacak değerlerin adedinin aynı olmasına dikkat ediniz.

Aynı satırda farklı tipte veriler de atanabilir.

a, b, c, d = 2, "Eskişehir", True, 3.5

print(a) #Sonuç: 2
print(b) #Sonuç: Eskişehir
print(c) #Sonuç: True
print(d) #Sonuç: 3.5

Birden fazla değişkene tek satırda aynı değeri de atayabilirsiniz.

var1=var2=var3 = "Eskişehir"

print(var1) #Sonuç: Eskişehir
print(var2) #Sonuç: Eskişehir
print(var3) #Sonuç: Eskişehir

Çoklu değişken atama yöntemiyle aşağıda gösterildiği gibi daha sonra açıklanacak olan list, tuple gibi veri koleksiyonlarının elemanlarına erişebilirsiniz.

Kentler= ["Ankara", "İstanbul", "Eskişehir"]
var1, var2, var3 =Kentler

print(var1) #Sonuç: Ankara
print(var2) #Sonuç: İstanbul
print(var3) #Sonuç: Eskişehir

2.6. Python’da Çıktı Değişkenler (Output Variables)

Python’da print() fonksiyonu bir çıktı değişkenidir.

x="Python'da print fonksiyonu bir çıktıdır."
print(x)

Python’da print() fonksiyonu içinde birden fazla değişkeni yazdırmak için virgül veya + işareti kullanılır.

Kentler= ["Ankara", "İstanbul", "Eskişehir"]
var1, var2, var3 =Kentler

print(var1, var2, var3) #Sonuç: Ankara İstanbul Eskişehir
print(var1 + var2 + var3) #Sonuç: AnkaraİstanbulEskişehir
print(var1 + " " + var2 + " " + var3) #Sonuç: Ankara İstanbul Eskişehir

Ancak “+” işareti kullanıldığında, “,” işaretinde olduğu gibi değişkenlerin print edilen değerleri arasında otomatik olarak boşluk bırakılmaz. Bunu son satırda gösterildiği gibi kendimiz eklememiz gerekir.

Daha önce belirtildiği gibi integer bir değişken ile string bir değişken toplanamaz. Aynı zamanda da “+” işareti ile birleştirilemez.

x="Eskişehir'in plaka kodudur."
y=26

print(y+x)

Yukarıdaki kod “TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’” şeklinde bir hata verecektir. Böyle bir senaryoda dataları birleştirmek için + işareti yerine virgül kullanırsanız sorunsuz bir şekilde sonucu konsola yazdırabilirsiniz.

x="Eskişehir'in plaka kodudur."
y=26

print(y, x) #26 Eskişehir'in plaka kodudur.

Aşağıda gösterildiği gibi print metodunu print() şeklinde kullanırsanız, konsolda araya boş bir satır ekler.

#Konsolda 1. ve 3. satır arasında boşluk olacaktır.
print("1. Satır")
print()
print("3. Satır")
#Sonuç:
#1. Satır
#
#3. Satır

Print metodu içinde “end” parametresini kullanarak aşağıda gösterildiği gibi farklı print metotlarının çıktısını birleştirebilirsiniz.

# İki çıktı arada boşluk ile birleştirilecektir.
print("Python", end = " ")
print("Harika!")
#Sonuç: Python Harika!

Print metodu içinde “sep” (seperator) parametresini kullanarak aşağıda gösterildiği gibi aynı print metodunun çıktılarını “sep” parametresinde belirtilen karakter ile birleştirebilirsiniz.

#Karakterler aralarında "-" işaretiyle birleştirilecektir.
print('P','Y','T', 'H', 'O', 'N', sep="-") #Sonuç: P-Y-T-H-O-N

print()

#Karakterler aralarında boşluk olmadan birleştirilecektir.
print('P','Y','T', 'H', 'O', 'N', sep="") #Sonuç: Python

Print metodu (daha sonra detaylı olarak açıklanacak olan) %s (string), %d (integer), %f (float) vb. yöntemlerle de aşağıda gösterildiği gibi kullanılabilir.

x = 1990 #integer %d
y = "Guido van Rossum" #string %s
print("Python ilk kez %d yılında %s tarafından geliştirildi." %(x,y))
#Sonuç: Python ilk kez 1990 yılında Guido van Rossum tarafından geliştirildi.

2.7. Python’da Global Değişkenler (Global Variables)

Python’da global bir değişken fonksiyonun dışında veya içinde belirtilebilir ve algoritmanın her yerinde kullanılabilir. Aşağıdaki örnekte y global değişkeni fonksiyonun dışında tanımlanmış ve fonksiyonun içinde kullanılmıştır.

Not: Fonksiyon konusu sonraki makalelerde detaylı olarak ele alınacaktır.

y=26

def myfunc():
    x="Eskişehir'in plaka kodudur." 
    print(y, x) #26 Eskişehir'in plaka kodudur.
myfunc()

Bir global değişken fonksiyon içinde tekrar tanımlanırsa global tanımı değil, fonksiyon içindeki lokal tanımı kullanılır.

y=26

def myfunc():
    y="06"
    x="Eskişehir'in plaka kodu değildir." 
    print(y, x) #06 Eskişehir'in plaka kodu değildir.
myfunc()

Bir fonksiyon içinde global bir değişken tanımlamak için aşağıda gösterildiği gibi o değişkenin başına (küçük harflerle) “global” ifadesi eklendikten sonra değişkene değer ataması yapılır.

def myfunc():
    global y
    y=26
myfunc()

x="Eskişehir'in plaka kodudur." 
print(y, x) #26 Eskişehir'in plaka kodudur.

3.  Python’da Sayılar (Python Numbers)

Python’da üç farklı sayı tipi vardır. Bunlar int, float ve complex tipte sayılardır.

a = 43
b = 23.12
c = 4j

print(type(a)) #Sonuç: <class 'int'>
print(type(b)) #Sonuç: <class 'float'>
print(type(c)) #Sonuç: <class 'complex'>

3.1. Python’da Integer Sınıfı

Integer tipte sayılar eksi sonsuzdan, sıfır dahil, artı sonsuza kadar olan tam sayı değerlerdir.

a = 0
b = -1256468
c = 546578568

print(type(a)) #Sonuç: <class 'int'>
print(type(b)) #Sonuç: <class 'int'>

3.2. Python’da Float Sınıfı

Float tipte sayılar eksi sonsuzdan, sıfır dahil, artı sonsuza kadar olan tam sayı ve ondalık içerebilen değerlerdir.

a = 0.0
b = -1256468.1545
c = 546578568.0

print(type(a)) #Sonuç: <class 'float'>
print(type(b)) #Sonuç: <class 'float'>
print(type(c)) #Sonuç: <class 'float'>

Matematiksel bakımdan 0 ve 0.0 ya da 3 ve 3.0 ifadelerinin her ikisi de tam sayı olmasına rağmen, Python’da 0 ve 3 int tipinde, 0.0 ve 3.0 gibi ondalıklar olarak ifade edilebilen tam sayılar ise float tipindedir. Python’da ondalık ayraç olarak virgül değil, nokta kullanılır.

3.3. Python’da Onluk Üssel Sayılar (Exponential)

Sayıları 10’un üsleri olarak ifade etmek için kullanılan “e” (exponential) operatörü float sınıfının bir özelliğidir.

a = 10000
b = 10e3
c = 0.001
d=1e-3

print(a) #Sonuç: 10000
print(b) #Sonuç: 10000.0
print(c) #Sonuç: 0.001
print(d) #Sonuç: 0.001

print(type(a)) #Sonuç: <class 'int'>
print(type(b)) #Sonuç: <class 'float'>
print(type(c)) #Sonuç: <class 'float'>
print(type(d)) #Sonuç: <class 'float'>

3.4. Python’da Karmaşık Sayılar (Complex) Sınıfı

Matematikte kompleks ya da karmaşık sayı olarak bilinen kompleks sayılar, reel olmayan (sanal olan) bölümlere sahip sayılardır. Örneğin karekök içinde -1 değeri kompleks bir sayıdır. Matematikte de genellikle j ya da i notasyonu ile sembolize edilir.

a = 12+5j
b = 3j
c = -7j

print(type(a)) #Sonuç: <class 'complex'>
print(type(b)) #Sonuç: <class 'complex'>
print(type(c)) #Sonuç: <class 'complex'>

3.5. Python’da Sayısal Değişkenlerin Sınıf Dönüşümü

Integer, float ve complex değişkenlerin her üçü de (kompleks sayılar için bir istisna hariç) birbirlerinin sınıfına dönüştürülebilir.

Not: Float bir değişken integer bir değişkene dönüştürüldüğünde ondalık bölümün yuvarlanmadığına, sadece kaldırıldığına dikkat edin.

a = 12    # int
b = 7.5  # float
c = 3j   # complex

#integeri floata dönüştür.
x = float(a)

#floatı integera dönüştür.
y = int(b)

#integeri complexe dönüştür.
z = complex(b)

print(x) #Sonuç: 12.0
print(y) #Sonuç: 7 
print(z) #Sonuç: (7.5+0j)

print(type(x)) #Sonuç: <class 'float'>
print(type(y)) #Sonuç: <class 'int'>
print(type(z)) #Sonuç: <class 'complex'>
print(type(c)) #Sonuç: <class 'complex'>

Ancak kompleks bir sayıyı integer ya da float tipine dönüştüremezsiniz. “TypeError: can’t convert complex to float “ şeklinde ya da “TypeError: can’t convert complex to int” şeklinde bir hata alırsınız. Konuyla ilgili aşağıdaki kod satırını çalıştırmayı deneyebilirsiniz.

a = 12    # int
b = 7.5  # float
c = 3j   # complex

#integeri floata dönüştür.
x = float(c)

#floatı integera dönüştür.
y = int(c)

print(x)
print(y) 

print(type(x)) 
print(type(y)) 

3.6. Python’da Rassal Sayılar (Random Numbers)

Python’da bazı karmaşık görevleri birkaç satırlık komutla yerine getiren çok sayıda modül vardır. Bu modüller yardımıyla daha az kodla daha fazla iş yapılabilir. Python’da yerleşik bir modül olan “random” modülünü import ettikten sonra aşağıda gösterildiği gibi farklı şekillerde rassal sayı üretebilirsiniz.

import random

#Integer tipinde 1 ile 49 arasındaki sayılardan sadece 1 adet üretir.
print(random.randrange(1, 49))

# Integer tipinde 1 ile 49 arasındaki sayılardan 10 adet üretir.
print(random.sample(range(1, 49), 10))

# 0 ile 1 arasında float tipinde sadece 1 adet üretir. 
print(random.random())

#Integer tipinde 1 ile 80 arasındaki sayılardan sadece 1 adet üretir.
print(random.randint(1,80))

 

 

İ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