Python ile Programlamaya Giris Bool Veri Tipi

Python ile Programlamaya Giris
Ders 3
Bool Veri Tipi
Karsilastirma Operatörleri
Su ana kadar gördügümüz operatörler aritmetik islem yapmak ve string'leri
birlestirmek için kullanilan operatörlerdi. Simdi yeni bir veri tipi, bool, ve bu veri
tipi ile kullanilan karsilastirma operatörlerini görecegiz.
Sorgulama
Sembol
Örnek
Küçüktür
<
2<4
Büyüktür
>
2>4
Esittir
==
2 == 4
Büyük esittir
>=
2 >= 4
Küçük esittir
<=
2 <= 4
Esit degildir
!=
2 != 4
Yukaridaki operatörler sorgulamak için kullanilir ve sonucu bool tipindendir.
>>> 2 < 4
True
bool tipinin sadece iki degeri vardir, True ve False
>>> 2 > 4
False
Alistirma: Yukaridaki örnekleri Python ile deneyin. Hangi sonuçlari verecek?
Karsilastirma operatörlerinin sol ve sag tarafindaki degerler birbiriyle
karsilastirilabilir olmali.
>>> 7 == 7
True
>>> 7 == 7.0
True
Yukaridaki örnekte iki tamsayi ile tamsayi ve reel sayi karsilastirmasi
yapilmistir. Ikisinin de sonucu True , yani olumlu, olmustur.
Dikkat: Esitligi sorgulaya operatör == ile gösterilir. = ile degil. Bunun
sebebi = operatörünün zaten Python'da baska bir manasinin olmasidir.
Hangi manasi var? = Python'da degiskene deger atamak için kullaniliyor.
Degiskenler de karsilastirilabilir.
>>> x = 4
>>> y = 3
>>> x > y
True
Mantiksal Operatörler
Mantiksal operatörler bool veri tipleri ile, yani True ve False ile kullanilir.
Açiklama
Operatör
Örnek
ve
and
2 < 4 and 2 == 3
veya
or
2 < 4 or 2 == 3
degil
not
not 2 == 3
and Operatörü
a
b
a and b
True
False
False
False
True
False
True
True
True
False
False
False
or Operatörü
a
b
a or b
True
False
True
False
True
True
True
True
True
False
False
False
not Operatörü
a
not a
True
False
False
True
Mantiksal Operatörlerin Birlestirilmesi
Mantiksal operatörler soldan saga ve parantez öncelikli olarak islem görür.
>>> 3 > 4
False
>>> not 3 > 4
True
>>> not not 3 > 4
False
Yukaridaki örnekte oldugu gibi, bir ifadede birden fazla mantiksal operatör
kullanilabilir.
>>> (5 > 4 or 5 < 4) and 3 == 4
False
Yukaridaki örnekteki karsilastirmalari indirgeyelim.
Karsilastirma
Sonuç
5>4
True
5<4
False
3 == 4
False
Simdi sonuçlari kullanilan mantiksal operatörlerle birlestirelim.
(True or False) and False
True ile False degerlerini or operatörü ile kullanirsak, yani
True or False , bize True verir. Çünkü "dogru veya yanlis" ifadesi
mantiksal olarak dogruyu verir. Mesela "Sinifta kaldim veya geçtim" ifadesi her
zaman dogrudur, degil mi?
Soldan saga dogru isleme devam edersek siradaki mantiksal ifade ve ifadesi.
Buldugumuz sonucu, yani True , en sondaki False ifadesiyle
birlestirecegiz.
True and False
Dogru ve yanlis ifadeleri ve ile baglarsak her zaman yanlis olur. Mesela "Sinifi
geçtim ve kaldim" ifadesi her zaman yanlis olur degil mi? Ya geçmistir yada
kalmistir. Dolayisiyla yukaridaki ifadenin sonucu False olur.
Simdi ayni örnegi parantezlerin yerini degistirerek görelim.
>>> 5 > 4 or (5 < 4 and 3 == 4)
True
Bu durumda yine parantez içindeki, yani sagdaki ifade, önce islem görür.
True or (False and False)
False and False ifadesi her zaman False sonucunu verir. Daha
sonra bu sonuc bastaki ile birlestirilir. True or False ise bize True
sonucunu verir.
Bool Veri Tipinin Degisken ve
Fonksiyonlarda Kullanimi
bool veri tipi, ayni int, float ve str gibi, bazi degerler alabilir. int tamsayi
degerleri ve str string degerleri, yani "Merhaba" gibi, alabildigi gibi, bool
veri tipi True ve False degerlerini alabilir.
Asagidaki geçerli bir Python programidir. x degiskenine True degeri
ataniyor.
>>> x = True
Indirgeme ile sag taraf bir bool degerine gelinceye kadar islem yapilir.
>>> x = 3 < 4
>>> x
True
Indirgeme islemi ile bir ifadenin sonucunun dogru olup olmadigi bir degiskende
tutulabilir. Mesela dersi geçme kriteri vizenin %40'i ile finalin %60'nin
toplaminin 50 veya 50'den fazla olmasi olsun.
>>> vize = 50
>>> final = 60
>>> gecti = vize*0.4 + final*0.6 >= 50
>>> gecti
True
Yukarida gecti degiskeninin degeri True olur. Yani vize 50 ve final 60
olursa ders gecilebiliyormus.
Simdi ayni kriteri sorgulayan sorgula fonksiyonunu yazalim.
def sorgula(vize, final):
return vize*0.4 + final*0.6 >= 50
sorgula fonksiyonu iki parametre aliyor, vize ve final . Bu
degiskenler ile kritere uygun sorgulama yapip sonucunu geriye veriyor.
>>> sorgula(40,50)
False
>>> sorgula(50,60)
True
Python bir de bir sayinin deger araliginda olup olmadigini asagidaki gibi
bulabilir.
>>> n = 3.5
>>> 4 > n > 3
True
Yukaridaki ifade asagidakinin kisaltilmisidir.
>>> 4 > n and n > 3
True
if Statement ile Sartli Program Akisi
Su ana kadar gördügümüz Python programlari yukaridan asagiya dogru her
satiri çalistirarak akiyordu. Programlamada programin akisini degistirebilmek
çok önemlidir. Bu akisi if anahtar kelimesi ile yönlendirebiliriz.
Mesela bir ögrencinin aldigi vize ve final ortalamasi 75 olsun. Eger ortalamasi
60'tan büyükse dersi geçmis olsun.
if 75 > 60:
print("Geçtin")
Dikkat: if anahtar kelimesinden sonraki satirin daha içerden basladigini
farkettiniz mi?
Yukaridaki örnek ekrana "Geçtin" yazar çünkü 75 > 60 karsilastirmasi
True sonucunu verir.
Eger geçemeseydi programin ekrana "Geçemedin" yazmasini istiyoruz. Bu
durumda sadece if ile beraber kullanilan else ifadesini kullanmaliyiz.
if 75 > 60:
print("Geçtin")
else:
print("Geçemedin")
Bu sorgulamayi genellestirmek için ögrencinin notunu ortalama
degiskeninde tutalim.
if ortalama > 60:
print("Geçtin")
else:
print("Geçemedin")
Bir de eger ögrenci 60 aldiysa ekrana "Hadi yine iyisin" yazmasini isteyelim.
Bu durumda elif anahtar kelimesini kullanacagiz. ( elif )
if ortalama > 60:
print("Geçtin")
elif ortalama == 60:
print("Hadi yine iyisin")
else:
print("Geçemedin")
Programi daha kullanilabilir kilmak için yazdiklarimizi bir fonksiyon içinde
yapalim ve ekrana yazmak yerine ekrana yazacagi metni fonksiyon geriye
versin.
def sonuc(ortalama):
if ortalama > 60:
return "Geçtin"
elif ortalama == 60:
return "Hadi yine iyisin"
else:
return "Geçemedin"
Böylece sonuc fonksiyonunu istedigimiz her not için kolayca çagirabiliriz.
>>> print(sonuc(70))
Geçtin
>>> print(sonuc(60))
Hadi yine iyisin
>>> print(sonuc(40))
Geçemedin
if ve Özellikleri
if <kosul1>:
<kosul1> saglanirsa burasi çalisir
elif <kosul2>:
<kosul2> saglanirsa burasi çalisir
elif <kosul3>:
<kosul3> saglanirsa burasi çalisir
else:
Hiçbir kosul saglanmazsa burasi çalisir
if hakkinda bilinmesi gerekenler asagidaki gibidir.
if ve elif sorgulamalari ve else ifadesi herzaman : ile biter.
Kosullarin saglandiginda çalistirilacak satirlarin hepsi herzaman daha
içerden ve ayni sütundan baslar.
Bir if sorgulamasinda elif 0 veya daha fazla kez kullanilabilir.
else ifadesi 0 veya bir kez kullanilabilir.
else herzaman en sonda olur.
Kosullar yukaridan asagiya dogru sorgulanir ve ilk dogru sonuc veren
kosulun icindeki (yani daha içerden baslaya satirlari) satirlar çalistirilir ve
daha sonraki kosullar ne sorgulanir ne de çalistirlir.
Hiçbir kosul saglanmazsa ve else ifadesi verilmisse, else için
verilen satirlar çalistirilir.
Harici Fonksiyonlarin Kullanimi
Python komut penderesini açtigimizda kullanmaya hazir min , max ve
abs gibi bazi fonksiyonlarin oldugunu görmüstük. Bunlar Python ile gelen
dahili fonksiyonlardi.
Python birçok fonksiyona sahip. Bu fonksiyonlari kullanmak için önce Python'a
bunlari kullanmak istedigimizi belirtmemiz lazim. Bu fonksiyonlara harici
fonksiyonlar diyecegiz.
Harici fonksiyonlar .py ile ile biten dosyalara kaydedilir. Her .py uzantili dosya
bir Modül olusturur. Mesela Python ile beraber gelen math.py isimli dosyada
matematiksel islemler için gerekli birçok fonksiyon vardir.
Bir modülü Pythona yüklemek için, yani Python'a o modüldeki fonksiyonlari
kullanmak istedigimizi belirtmek için, import <modül> anahtar kelimesi
kullanilir.
import math
Yukaridaki ifade math.py isimli dosyadaki fonksiyonlari ve degiskenleri
kullanmak istedigimizi belirtir. math.py Python'un aradigi bir dizinin içinde
olmasi gerekiyor. Bu dizinler PYTHONPATH sistem degiskeninde tutuluyor.
import hakkinda daha detayli bilgiyi asagidaki linklerde bulabilirsiniz.
http://docs.python.org/2/tutorial/modules.html
http://www.bdnyc.org/2012/09/17/editing-pythonpath-to-import-modules/
Simdi math modülünde hangi fonksiyonlarin ve degiskenlerin tanimlandigina
bakalim. Bunun için hangi fonksiyonu kullaniriz? Tabiki dir fonksiyonunu.
>>> dir(math)
['__doc__', '__file__', '__loader__', '__name__', '__package__',
'acos', 'acosh',
'asin', 'asinh', 'atan', 'atan2', 'atanh',
'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc',
'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp',
'fsum', 'gamma', 'hypot', 'isfinite', 'isinf', 'isnan', 'ldexp',
'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'pi', 'pow',
'radians', 'sin',
'sinh', 'sqrt', 'tan', 'tanh', 'trunc']
Bu fonksiyonlara erismek için modül ismini basinda kullanarak fonksiyon ismini
veririz. Mesela karekök alan sqrt fonksiyonunu asagidaki gibi kullanabiliriz.
>>> math.sqrt(9)
3.0
Sadece sqrt yazmak yetmiyor. Eger Python'a asagidaki gibi from
anahtar kelimesiyle math modülündeki sqrt fonksiyonunu kullanmak
istedigimizi belirtseydik fonsiyonun basina modülün ismini koymak zorunda
kalmazdik.
>>> from math import sqrt
>>> sqrt(9)
3.0
Ayni sekilde math modülündeki bütün fonksiyonlari masina modül ismini
koymadan yazmak isteseydik * ifadesini kullanabilirdik.
>> from math import *
>>> sqrt(4)
2.0
>>> pi
3.141592653589793
pi 'nin bir degisken oldugunu farkettiniz mi?