Data Typelar

Aslında Data Type çok geniş bir kavram. datetime mesela, bir data type. Biz data type derken built-in typelardan, temel data typelardan bahsediyoruz. Integer gibi, String gibi, Float gibi... Bunlar bir şey ifade etmiyorsa 
 telaşlanmayın, hepsinin üzerinden geçeceğiz. Aşağıda bazı örnekler var, gelin bunları inceleyelim.

In [12]:
2 #Integer yani tam sayı


Out[12]:
2

In [7]:
2.0 #Float yani ondalıklı sayı


Out[7]:
2.0

In [8]:
1.67 #Yine bir float


Out[8]:
1.67

In [9]:
4 #Yine bir int(Integer)


Out[9]:
4

In [13]:
'Bu bir string'


Out[13]:
'Bu bir string'

In [11]:
"Bu da bir string"


Out[11]:
'Bu da bir string'

In [34]:
True #Boolean


Out[34]:
True

In [35]:
False #Boolean


Out[35]:
False

print Fonksiyonu, Özel Karakterler ve str Fonksiyonu

Debugging yaparken oldukça yoğun kullanacağımız için print fonksiyonuna biraz erken değinmek istiyorum. Print 
 fonksiyonu aldığı argümanı stdout(Standart Output)'a basar. Şimdilik stdout hakkında bilmeniz gereken tek şey 
 onun konsol olduğu ya da Windows'daki Command Line(Komut Satırı).

In [15]:
print('test')


test

In [17]:
print('test2')
print("deneme123")
print(1)
print(2.55)


test2
deneme123
1
2.55

In [22]:
print(1, 2, 'Hello World!')
print('\n')
print(1, '\n',2, '\nHelloWorld') #\n sonraki satırda bir boşluğa neden olacak.
print('\n')
print(1, '\n' + str(2)) #str fonksiyonu integeri stringe çevirecek. Toplama işlemi stringleri birleştirmeye de yarıyor.


1 2 Hello World!


1 
 2 
HelloWorld


1 
2

In [33]:
print('\ttest')
print('\t test')
print('\' <= bu işaretin adı neydi?')


	test
	 test
' <= bu işaretin adı neydi?

Mantıksal İşlemler

Python'da 13 mantıksal işlem yapabilirsiniz. Eşittir, eşit değildir, ve, veya, değil, büyüktür, büyük eşittir, 
 öyledir(is), içinde(in), içinde değil(not in), öyle değildir(is not), küçüktür ve küçük eşittir... Bu işlemlerin 
 sonuçları doğru ise True return edilecek yanlış ise False return edilecektir. 
Mantıksal işlemlerden ve, veya soldan sağa yapılır yapılır. Matematiksel ve mantıksal işlemlerde sırayı 
 değiştirmek için parantez kullanılır. Diğerlerinde önce sağdaki ve soldaki değerler hesaplanır.
Bunlardan bazılarını daha sonra göreceğiz.

In [36]:
True and False


Out[36]:
False

In [37]:
True or False


Out[37]:
True

In [55]:
2 or False


Out[55]:
2

In [39]:
0 or False


Out[39]:
False

In [56]:
3 < 4


Out[56]:
True

In [41]:
2.5 or False


Out[41]:
2.5

In [57]:
3 >= 4


Out[57]:
False

In [43]:
'string' or False


Out[43]:
'string'

In [44]:
2 == 2


Out[44]:
True

In [45]:
2 == 3


Out[45]:
False

In [46]:
2 != 2


Out[46]:
False

In [47]:
2 != 1034354435345


Out[47]:
True

In [48]:
False or True and False


Out[48]:
False

In [49]:
False and False or True


Out[49]:
True

In [58]:
2 <= 4


Out[58]:
True

In [65]:
not True


Out[65]:
False

In [2]:
3 is False


Out[2]:
False

Matematiksel İşlemler

Python'da pek çok matematiksel işlemi yapabiliriz. Pek çok derken risk almamak için söylüyorum. Temel matematiksel
 işlemlerden yapamadığım olmadı.
Peki matematiksel işlemler hangi sırayla yapılıyor. Bunu anlatmak için slayta döneceğiz ama önce matematiksel 
 işlemlerin nasıl yapıldığını karmaşık yapılara girmeden gösterelim.
Kendime not: Python 2'de float eşitliğinden bahset.

In [51]:
2 + 2 + 4 - 1


Out[51]:
7

In [52]:
2 * 3 / 2


Out[52]:
3.0

In [53]:
2 ** 4


Out[53]:
16

In [54]:
4 ** (1/2)


Out[54]:
2.0

In [63]:
5 // 2


Out[63]:
2

In [64]:
5 % 2


Out[64]:
1
Yönü Yok kavramını açacağız.
\begin{array}{|c|c|c|} \hline Yukaridan \space Asagi \space Islem \space Onceligi \space Sirasi \space & Ismi & Islem \space Yonu \\ \hline () & Parantez & Yonu \space Yok \\ ** & Ussu & Sagdan \space Sola \\ + \space - & Isaret & Yonu \space Yok \\ * \space / \space // \space \% \space & Carpi, \space Bolu, \space Mod & Soldan \space Saga \\ + \space - & Toplama, \space Cikarma & Soldan \space Saga \\ == \space != \space > \space >= \space < \space <= \space is \space (is \space not) \space in \space (not \space in) & Mantiksal \space Operasyonlar & Yonu \space Yok \\ not & Degil & Yonu \space Yok \\ and & Mantiksal \space Ve & Soldan \space Saga \\ or & Mantiksal \space Veya & Soldan \space Saga \\ \hline \end{array}

In [5]:
2.3 == 23 or 10


Out[5]:
10

In [4]:
0.1 == 1/10


Out[4]:
True

In [25]:
2 is not 3 is 4 #Hem 2 is not 3 hem 3 is 4 doğru olduğunda doğrudur. Arada and var gibi.


Out[25]:
False

In [26]:
2 is not 3 is 3


Out[26]:
True

In [27]:
3 is not 3 is 3


Out[27]:
False

In [28]:
1 == 1 == 2


Out[28]:
False

In [29]:
1 == 2 == 2


Out[29]:
False

In [31]:
2 ** 2 ** 3 #İşlem sağdan sola yapılıyor.


Out[31]:
256

In [33]:
2 * 2 ** 2 ** 3 / 3 #Önceliği yüksek işlemden başlanıyor.


Out[33]:
170.66666666666666

In [35]:
2 ** -3 * 4


Out[35]:
0.5

In [36]:
2 ** (-3 + 4)


Out[36]:
2
Bu konuda evde daha fazla pratik yapabilirsiniz. Konuyu geçiyorum.

Variablelar

Pythom'da diğer pek çok dilde olduğu gibi değişkenler tanımlayarak ve onların üzerinde işlemler yaparak kod 
 yazarız. Değişken tanımlamak için eşittir işaretini kullanıyoruz.
Değişken tanımlarken hem kodu daha sonra okumanızı hem de başkalarının okumasını kolaylaştırmak için anlamlı
 kelimeler seçmeniz gerekir.
Eşittir işareti stdout'u variablea atar. Bu nedenle Python variable atandığında değeri konsola basmaz.

In [43]:
a = 4

In [42]:
a = 5
b = 4
c = a != b
print(c)


True

In [39]:
variableda boşuk olmaz = 0


  File "<ipython-input-39-92f9babc81b1>", line 1
    variableda boşuk olmaz = 0
                   ^
SyntaxError: invalid syntax

In [41]:
alt_cizgi_kullanilir = 5
yadaBuSekildeTanimlanir = 4
print(alt_cizgi_kullanilir, yadaBuSekildeTanimlanir)


5 4

Listler ve Tuplelar

Sıralı dizileri saklamak için listler ve tupleları kullanırız. Tuplelar değiştirilemez yani immutable, listler ise
 değiştirilebilir yani mutable elementlerdir. İkisi üzerinde in ve not in argümanlarını kullanabilir ve listler 
 üzerinde çeşitli fonksiyonlar kullanabiliriz. Bunlara yakından bakalım.

In [44]:
myList = [] #Bu boş bir liste
myTuple = (1,) #Tuple en az bir element içermek zorundadır. Tek element olduğunda virgül eklemek zorundayız.
myTuple2 = 1, 2 #Parantez kullanmadan virgül ile de tuple oluşturabiliriz.
print(myList, myTuple, myTuple2)


[] (1,) (1, 2)

In [46]:
print(1 not in (2, 3, 4), 2 in [2, 3])


True True

In [51]:
a = [[1, 3, 4], (2, 3)] #Listler tuple ve list elementleri içerebilir.
b = (1, 2, 3, (3, 4), [1, 2])
print(a, b)
b[4].append(1) #List ve tuple indexi 0'dan başlar, erişmek için elementin ismi yanına köşeli parentezle indexini yazarız.
print(b) #Tuple içine list koymak tupleın immutable yapısını bozar.


[[1, 3, 4], (2, 3)] (1, 2, 3, (3, 4), [1, 2])
(1, 2, 3, (3, 4), [1, 2, 1])

In [55]:
a = [[1, 3, 4], (2, 3)]
a.pop() # pop fonksiyonu listin son elementini verir.


Out[55]:
(2, 3)

In [61]:
a = [[1, 3, 4], (2, 3)]
a.pop(0) #Indexi verirsek o elementi çıkarır. Sonra stdouta basar.


Out[61]:
[1, 3, 4]

In [60]:
a = [[1, 3, 4], (2, 3)]
a.insert(0, 1) #Insert ile indexi verilen lokasyondaki elementten önce yeni element eklenir. Büyük listelerde verimsizdir.
print(a)


[1, [1, 3, 4], (2, 3)]

In [64]:
a = [0, 1, 3, 2, 4, 5, 6, 7, 8, 9]
a.index(3) # index fonksiyonu listler ve tuplelar üzerinde çalışır. Verilen elementin indexini stdouta basar.


Out[64]:
2

In [65]:
a = (1, 2)
a.index(2)


Out[65]:
1

In [66]:
a = 1, #Bu da bir tuple, parantez koymak zorunda değiliz.
a.append(1) #Hata verecek çünkü tuple immutable


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-66-2aa2baff9569> in <module>()
      1 a = 1, #Bu da bir tuple, parantez koymak zorunda değiliz.
----> 2 a.append(1) #Hata verecek çünkü tuple immutable

AttributeError: 'tuple' object has no attribute 'append'

If - Elif - Else Statementlar

Belli değerlere göre hangi kodun çalıştırılacağını bulmak için if - elif -else statementları kullanırız.

In [67]:
a = True
if a is True: #İki nokta işaretine dikkat edelim.
    print("a Doğru") #Statementın içinde boşlukla çalışmamız gerekiyor.
else:
    print("a Yanlış") #Bu kod çalışmayacak.


a Doğru

In [68]:
a = [1, 2, 3, 4, 5]
if 6 in a:
    print("6 dahil")
elif 2 in a:
    print('2 dahil')


2 dahil

Kullanıcıdan Input Almak - input()

Kullanıcıdan input almak programların en önemli parçalarından biridir. Bunu yapmak için Python 3'te input()
 fonksiyonunu kullanıyoruz. 

In [69]:
input("Yaşın kaç: ")


Yaşın kaç: 1
Out[69]:
'1'

In [70]:
age = input('Yaşınızı girin: ')
if age >= 13:
    print('Siteye devam edebilirsiniz.')
else:
    print('Siteye giremezsiniz.')


Yaşınızı girin: 13
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-70-0e2f4991106a> in <module>()
      1 age = input('Yaşınızı girin: ')
----> 2 if age >= 13:
      3     print('Siteye devam edebilirsiniz.')
      4 else:
      5     print('Siteye giremezsiniz.')

TypeError: unorderable types: str() >= int()

In [71]:
age = input('Yaşınızı girin: ')
if int(age) >= 13:
    print('Siteye devam edebilirsiniz.')
else:
    print('Siteye giremezsiniz.')


Yaşınızı girin: 13
Siteye devam edebilirsiniz.

try - except - raise

Hataları kontrol altında tutabilmek için try ve except argümanlarına ihtiyacımız var. Bu argümanları kullanarak 
 hata oluştuğunda ne yapılması gerektiğine karar verebiliriz.
Programı durdurmak için raise fonksiyonu kullanabilirsiniz. Bu durumda raise argümanını stdouta basacak ve 
 programı durduracaktır.

In [76]:
try:
    a = input('Yaşınızı girin: ')
    age = int(a)
except ValueError:
    raise SystemExit('Hatalı Giriş')


Yaşınızı girin: onbeş
An exception has occurred, use %tb to see the full traceback.

SystemExit: Hatalı Giriş
/home/dost/.local/lib/python3.5/site-packages/IPython/core/interactiveshell.py:2918: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
  warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)
Pekiştirme yapmak amacıyla şimdi bir program yazalım. Bu program toplam 3 adet not alıyor.
 2 midterm, 1 final notu. Midtermler %30, final %40 etkiliyor. Öğrencinin ortalaması 55 ve üstü ise dersten 
 geçiyor değilse kalıyor.

In [77]:
mid1 = input('Midterm 1 Notunuz: ')
try:
    mid1 = int(mid1)
except ValueError:
    raise SystemExit('Hatalı Giriş')
mid2 = input('Midterm 2 Notunuz: ')
try:
    mid2 = int(mid2)
except ValueError:
    raise SystemExit('Hatalı Giriş')
final = int(input('Final Notunuz: '))
try:
    final = int(final)
except ValueError:
    raise SystemExit('Hatalı Giriş')
average = (mid1 * 30 + mid2 * 30 + final * 40) / 100
if average >= 55:
    print('Dersten geçtiniz. Tebrikler.')
else:
    print('Dersten kaldınız. Tekrar deneyiniz.')


Midterm 1 Notunuz: 25
Midterm 2 Notunuz: 35
Final Notunuz: 45
Dersten kaldınız. Tekrar deneyiniz.

In [ ]: