İPUCU

Python Artificial Intelligence’da en çok kullanılan dildir ve gerekli dökümanların paylaşım alanlar burada paylaşılmaktadır.

Seçenekler

Veri Yapıları ve Koşullu Durumlar // PALA

PALA - ait Kullanıcı Resmi (Avatar)
Süper Moderatör
Üyelik tarihi:
03/2018
Mesajlar:
12.463
Konular:
190
Teşekkür (Etti):
436
Teşekkür (Aldı):
2564
Ticaret:
(0) %
02-09-2018 02:41
#1
Veri Yapıları ve Koşullu Durumlar // PALA
Merhabalar,

Bugün sizlere "Veri yapıları" ve "Koşullu Durumlar" hakkında bilgi vericeğim ve ufak bir demo yapacağız.

Öncelikle Veri yapıları içerisinde neyi barındırır ?

Aslında birçok kavram var. Lakin bu konumda sizlere demet ve liste veri tipleri hakkında bilgilendirmek yapacağım.

İsterseniz demet veri tipinden başlayalım.

DEMETLER

Değiştirilemez oluşuyla tanınır. Tuple diye de geçer. Mesela Python ile bir program geliştirdiğiniz zaman verilerin değiştirilmemesini istiyorsanız, demetler tam da size göre. Bir nevi sadece "okuma izni"ne sahip diyebiliriz.

Şimdi demet oluşturalım.

Kod:
In [1]: demet = (1,2,3,4,5,6,7,8)
type(demet)

Out[1]: tuple
Type ile kontrol ediyorum ve tuple çıktısını alıyorum, evet bu bir demet veri tipi.

Oluşturduğum demette 6.index'e erişmek istiyorum. Bunun için şöyle bir şey yazıyorum.

Kod:
In [1]: demet[6]

Out[1]: 7
Ve "7" değerini çıktı olarak görüyorum.

Mesela ben bu demeti ters çevirmek istiyorum, nasıl yaparım ?

Kod:
In [1]: demet[::-1]

Out[1]: (8, 7, 6, 5, 4, 3, 2, 1)
Gördüğünüz üzere demeti ters çevirdi. Mesela bunu tekrardan eski haline bir metot kullanarak getiremiyoruz. İşte demetlerin gıcıklıkğı ufaktan başlıyor. Listede böyle bir durum söz konusu değil ama Ama tekrardan "demet [::1]" ile eski haline getirebiliriz.

Evet şimdi demetin metotlarını kullanalım. Metotlar aslında bir objeyi değiştirmeye yarayan, obje üzerinde işlemle yapan fonksiyonlardır. Ve metotlar objeye göre değişir. Bunu diğer veri tiplerini anlattığım zaman göstereceğim. Fonksiyon mevzusuna diğer konumda giriş yapacağım.

Bir objeye ait metotları objeyi yazıp nokta koyduktan sonra "tab" tuşu ile görebiliriz.

Mesela "demet." yazıp tab'a bastım ve metotlar karşıma geldi.

Ben burada count ve index metotlarını kullanacağım. Ayrıca kısa bir bilgi daha;

"help(demet.count)" yazarsam bana count metodunun ne işe yaradığını söyler. (Metoda ve objeye göre değişiklik gösterir.)

"return number of occurrences of value" Birbirini takip eden sayıların kaç tane olduğunu bana söylüyormuş bu metot.

Yeni bir demet oluşturdum;

Kod:
In [1]: demet2 = (2,2,2,2,2,2,2,2,3,4,5,6)
demet2.count(2)

Out[1]: 8
Ve 8 çıktısını aldım. Peki bu ne ? Gördüğünüz üzere birbirini takip eden 8 tane "2" interger'ı var. Bu yüzden 8 çıktısı aldım.

Son metot;

İndex metodu ise belirttiğimiz elemanın kaçıncı index'te olduğunu söyler.

Kod:
In [1]: demet = (1,2,4,"Python")
demet.index("Python")

Out[1]: 3
Eveet, Python string'i 3.index'te bulunuyor çıktısını bastı.

Şimdi demetlerle alakalı son bir hususu daha anlatağım.

Başta da dediğim gibi değiştirilemiyorlar. Liste veri tipinde olsa çat diye değiştirebilirdik. Ama demetler öyle değil.

Hemen bir demo yapalım;

Kod:
In [1]: demet = (1, 2, 4, 'Python')
demet[1] = 3

Evet böyle bir demette dedim ki;

1. index'te bulunan değeri "3" elemanıyla değiştir dedim ve sonuç;

Out[1]: TypeError: 'tuple' object does not support item assignment
"Demet objesi böyle bir atamayı, görevlendirmeyi desteklemiyor.."

LİSTELER

Listeler değiştirilebilir, üzerinde değişiklikle yapılabilir metotlara sahip bir veri tipi.

Uzatmadan bir liste oluşturalım.

liste = [1,2,3,4,5,6,7]

Listem hazır. Şimdi listemdeki eleman sayısını "len" ile kontrol edeyim.

Kod:
In [1]: len(liste)

Out[1]: 7
Evet, listemde 7 tane eleman olduğu söyleniyor, elle kontrol etmek yerine len ile kontrol etmek daha uygun. Mesela range fonksiyonu ile bir liste oluşturduğum zaman nasıl oluyor diye bakalım (range fonksiyonu anlatıma dahil değil, sadece "len"in kullanışlı olduğuna dair bir örnek göstermek için kullanıldı.)

liste2 = list(range(0,100)) ile 0'dan 100'e kadar sayı bulunduran bir liste oluşturdum. Bu listedeki eleman sayısını tek tek saymaya kalksam uğraştırır. Onun için len burada hayat kurtarıyor. Bakalım.

Kod:
In [1]: len(liste2)

Out[1]: 100
Tabi bu basit bir liste. Farklı şartlarda len olmasa eleman sayısını hesaplamak uğraştırıcı bir işlem olacaktır.

Şimdi demet veri tipinde belirttiğimiz index'teki elemanı değiştirmeye çalışmıştık ve olumsuz bir sonuçla karşılaşmıştık. Şimdi listede denemeye çalışalım.

Varolan listemdeki 3. index'i 10 değeriyle değiştirmek istiyorum.

Kod:
In [1]: liste[3] = 10
print(liste)

Out[1]: [1, 2, 3, 10, 5, 6, 7]
Eveet, listemdeki 3. index pat diye 10 elemanıyla değişti. İşlem başarılı. Böylece listelerin değiştirilebilir olduğunun kanısına varıyoruz.

Peki listede istediğimiz index'e nasıl ulaşırız ?

"liste[index değeri]" köşeli parentezin içine gitmek istediğiniz index değerini giriyoruz, ve sonuç;

Kod:
In [1]: liste[3]

Out[1]: 10
Kardeş iyi güzel de ben sadece 1 tane index'i almak istemiyorum diyorsanız, buyrun şöyle alalım sizleri;

Aynı şekilde liste[] yazıyoruz, bu sefer köşeli parantezin içerisine yazdığımız değer şöyle oluyor;

"Yazdığım index değerine kadar olan tüm elemanları ekrana bastır."

Kod:
In [1]: liste[:2]

Out[1]: [1, 2]
Ve 0. index'ten 2'ye kadar gitti ve elemanları ekrana bastı.

print(liste) yazmadan listedeki elemanları ekrana nasıl bastırırım sorusunun cevabı;

Kod:
In [1]: liste[:-1]

Out[1]: [1, 2, 3, 10, 5, 6]
Artık liste metotlarına bakalım. Magic kısmı burada başlıyor

İlk metodumuz append. Adından da anlaşıldığı üzere son index'e eleman ekliyor.

Kod:
In [1]: liste.append("Python")
print(liste)

Out[1]: [1, 2, 3, 10, 5, 6, 7, 2, 'Python']
Evet, eleman eklendi.

Sıradaki eleman "pop". Bu metot ise belirttiğimiz index'teki elemanı çıkartıyor ve ekran basıyor. Bakalım;

Kod:
In [1]: liste.pop(2)

Out[1]: 3
Evet, "3" elemanını çıkarttığını ekrana bastı.

Şimdiki metodumuz ise "sort". Bu metot ile listenin elemanlarını sıralayabiliriz. Bakalım;

liste = [2,5,7,1,6,8] şöyle bir listem var. Bu listeyi sıralayalım.

Kod:
In [1]: liste.sort()

yazdım ve sonuç;

Out[1]: [1, 2, 5, 6, 7, 8]
Peki bu listeyi tam tersine nasıl getiririm ?

Kod:
In [1]: liste.sort(reverse = True)

Out[1]: [8, 7, 6, 5, 2, 1]
Evet, demetler ve listeler bu kadar.

Şimdi ise koşullu durumlara gelelim. Mantıksal bağlaçlar ve karşılaştırma operatörlerini anlatacağım.


KARŞILAŞTIRMA OPERATÖRLERİ

Karşılaştırma operatörleri nedir ?

Bu operatörler bir nevi koşuldur. Durumları karşılaştırmaya yarar. Bunlar ne imiş bakalım.

== (İki durum birbirine eşit ise True, değilse False değeri ekrana basılır.)

!= (İki durum birbirine eşit değilse True, değilse False değeri ekrana basılır.)

> (Bir durum diğerinden büyükse True, değilse False değeri ekrana basılır.)

>= (Bir durum diğer durumdan eşit veya ondan büyükse True, değilse False değeri ekrana basılır.)

<= (Bir durum diğer durumdan eşit veya ondan küçükse True, değilse False değeri ekrana basılır.)

Birazcık demo yapalım.

Kod:
"Python" == "PALA"

"Python" != "PALA"

3 >= 3

2 <= 1
Karşılaştırmaların çıktıları;

Kod:
"False"

"True"

"True"

"False"

MANTIKSAL BAĞLAÇLAR

Mantıksal bağlaçlar iki veya daha fazla karşılaştırmayı kontrol edeceğimiz zaman kullanılır.

"and" ve "or" operatörlerine bakalım.

and operatörü:


Tüm karşılaştırmalar True olması lazım ki True çıktısını alalım. Evet, karışık bir cümle oldu. Demo yapınca anlayacaksınız merak etmeyin

Kod:
In [1]: 4 > 3 and "Pala" == "Python"

Out[1]: False
Şimdi neden "False" çıktısı aldık diye soracak olursanız cevabı basit. (4 > 3) durumu True lakin ("Pala" == "Python") karşılaştırması yanlış olduğu için False çıktısını aldık.

Eğer şöyle olsaydı True çıktısını alacaktık.

Kod:
In [1]: 4 > 3 and "Pala" != "Python"

Out[1]: False
Çünkü ("Pala" != "Python") buradaki karşılaştırma doğru.

Özet;

Tüm karşılaştırmalar True değilse, False çıktısını alıyoruz.

or operatörü:


Bu operatördeki karşılaştırmalardan biri bile True ise, True çıktısını alıyoruz. Bu operatörden False çıktısını almamız için tüm karşılaştırmaların False olması gerek.

Demo yapalım;

Kod:
In [1]: 1 <= 2 or "THT" == "Python"

Out[1]: True
gibi.

False çıktısı alalım;

Kod:
In [1]: 2 > 3 or "Deneme" == "Pala"

Out[1]: False
İki karşılaştırmam False olduğu için False çıktısını aldım.

PYTHON'DA BLOK MANTIĞI


Artık blok kavramıyla karşılaştık. Python'ın magic kısmına ufaktan giriş yapıyoruz dostlar

Şimdi bir kod yazacağım ve durumu anlayacaksınız.

Kod:
a = 2

if (a == 2):
    print("Deneme", a)
Ve "Deneme 2" çıktısını aldım.

Farkettiniz mi ? If'den sonra print'i bir tab boşluğu kadar girintili bir şekilde yazdık. İşte bunlar Python'da blok oluşturmak için kullanılıyor.

İsterseniz print kısmını çalıştırmayalım.

Kod:
a = 2

if (a == 3):
    print("Deneme", a)
Çıktı yok.

Neden böyle oldu ? Çünkü a değerimizi 2 olarak belirlemiştik ve if komutunda 3 değerini girdik. Böylece print çalışmadı ve çıktı alamadık.


if-else Bloğu

Bu koşul programımızda herhangi bir koşulu kontrol edeceksek kullanılır. Eğer koşul sağlanırsa(True) çıktı alırız eğer koşul sağlanmazsa(False) çıktı alamayız.

Hemen bir demo yapalım.

Kod:
çikolata = 3

para = int(input("Kaç liranız var ?"))

if (para < 3):
    print("Maalesef çikolata alamazsınız.")
Şimdi burada bir kod yazdık ve kullanıcıdan çıktı alacağız. Para 3'den az ise print çalışacak. Eğer fazla ise kod çalışmasını durduracak. İşte burada Else bize yardım oluyor.

Kod:
çikolata = 3

para = int(input("Kaç liranız var ?"))

if (para < 3):
    print("Maalesef çikolata alamazsınız.")
    
else:
    print("Çikolata alabilirsiniz.")
Kodu şu şekilde derledim ve artık para 3'den fazla ise else bloğundaki print çalışacak.

If-Else bloğu bu kadardı.


If-Elif Bloğu


Bu blokta bir durumda birçok koşulu kontrol edebileceğiz.

Mesela Hesap makinesi gibi.

Şimdi bir demo yapalım ve pekiştirelim;

Kod:
yön = input("Hangi yöne gitmek istersiniz ?")

if (yön == "Kuzey"):
    print("Kuzeye gidebilirsiniz.")
elif (yön == "Güney"):
    print("Güneye gidebilirsiniz.")
elif (yön == "Batı"):
    print("Batıya gidebilirsiniz.")
elif (yön == "Doğu"):
    print("Doğuya gidebilirsiniz.")
    
else:
    print("Geçersiz yön girdiniz, tekrar deneyiniz.")
Eveet, böyle bir kod yazdım. Şimdi burada bir durumda birçok koşul var. Kullanıcıya bir yön girmesini talep ettik ve girdiği vakit print çalıştı. Eğer geçersiz yön girerse else bloğu devreye giriyor ve print çalışıyor.

Bu konumun sonuna geldik. Eğer hatam var ise lütfen belirtiniz. Ayrıyeten eklemek istediğiniz bir şey olursa da belirtebilirsiniz.



// Kodlardaki In ve Out kısımları "girdi" ve "çıktı"yı temsil etmektedir ve kodlar Jupyter Notebook üzerinde çalıştırılmıştır.

Basit Bir Örnek Yapalım

Kod:
print("""
****************************
ARAÇ SATIN ALMA PROGRAMI
****************************
ARAÇLAR;

1.Doblo

2.Volvo

3.Ferrari

4.Şahin
****************************
""")


bakiye = 100000

doblo = 30000

volvo = 50000

ferrari = 500000

şahin = 10000

while True:
    arac = input("Araç seçiniz:")

    if (arac == "Doblo"):
        bakiye = bakiye - doblo
        print("Artık Doblo aracına sahipsiniz ve bakiyeniz {} TL'dir.".format(bakiye))
    elif (arac == "Volvo"):
        bakiye = bakiye - volvo
        print("Artık Volvo aracına sahipsiniz ve bakiyeniz {} TL'dir.".format(bakiye))
    elif (arac == "Ferrari"):
        bakiye = bakiye- ferrari
        print("Maalesef ferrari alamazsınız, alırsanız bankaya {} TL borcunuzu olacaktır.".format(bakiye))
        bakiye = 100000
    elif (arac == "Şahin"):
        bakiye = bakiye - şahin
        print("Artık Şahin aracına sahipsiniz ve bakiyeniz {} TL'dir.".format(bakiye))
    else:
         print("Yanlış veya eksik tuşlama yaptınız, tekrar deneyiniz.")
         break
Konu PALA tarafından (04-10-2019 23:22 Saat 23:22 ) değiştirilmiştir.
RageUnseen Teşekkür etti.
4UR0R4 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
01/2018
Nereden:
T.C
Mesajlar:
666
Konular:
72
Teşekkür (Etti):
125
Teşekkür (Aldı):
148
Ticaret:
(0) %
02-09-2018 02:42
#2
Ellerine Sağlik
---------------------
Tarihini bilmeyen millet yok olmaya mahkumdur….
Mustafa Kemal AtaTÜRK


Sayilmayiz Parmakla Ölmeyiz Vurulmakla...
RooTGHoST - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
08/2018
Nereden:
38
Mesajlar:
1.446
Konular:
38
Teşekkür (Etti):
446
Teşekkür (Aldı):
265
Ticaret:
(0) %
02-09-2018 02:57
#3
Elinize Sağlık hocam...
theokeleS - ait Kullanıcı Resmi (Avatar)
E-Mail onayı yapılmamış üye
Üyelik tarihi:
05/2018
Mesajlar:
1.358
Konular:
31
Teşekkür (Etti):
68
Teşekkür (Aldı):
357
Ticaret:
(0) %
02-09-2018 03:04
#4
Elinize sağlık hocam
Slyfer - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2016
Nereden:
Unknown
Mesajlar:
1.597
Konular:
33
Teşekkür (Etti):
18
Teşekkür (Aldı):
169
Ticaret:
(0) %
02-09-2018 08:25
#5
Elinize sağlık
---------------------

i want to sleep f o r e v e r
PALA - ait Kullanıcı Resmi (Avatar)
Süper Moderatör
Üyelik tarihi:
03/2018
Mesajlar:
12.463
Konular:
190
Teşekkür (Etti):
436
Teşekkür (Aldı):
2564
Ticaret:
(0) %
02-09-2018 14:02
#6
Alıntı:
4UR0R4´isimli üyeden Alıntı Mesajı göster
Ellerine Sağlik
Alıntı:
RooTGHoST´isimli üyeden Alıntı Mesajı göster
Elinize Sağlık hocam...
Alıntı:
theokeleS´isimli üyeden Alıntı Mesajı göster
Elinize sağlık hocam
Alıntı:
Slyfer´isimli üyeden Alıntı Mesajı göster
Elinize sağlık
Teşekkür ederim
oldnco - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
09/2017
Yaş:
29
Mesajlar:
1.520
Konular:
43
Teşekkür (Etti):
636
Teşekkür (Aldı):
372
Ticaret:
(0) %
02-09-2018 15:58
#7
Eline emeğine sağlık

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı