Python Baş Ucu Rehberi

Python Baş Ucu Rehberi
Photo by Rubaitul Azad / Unsplash

BU BOLUMLER GUNCELLENIYOR...

* Tuples
* Sets
* Dictionaries
  • Fonksiyonlar
  • Nesne Tabanlı Programlama ve Python

1. GENEL

1.1 Python Nedir?

Python üst seviye (high-level), çoklu model (multi-paradigm) bir programlama dilidir. Çoklu model diyoruz çünkü hem fonksiyonel hem de nesne tabanlı programlamayı destekler. Bu bir ağız dolusu ifade size bir şey ifade etmiyorsa aldırmayın. İlerleyen bölümlerde sırası geldikçe bu konuları kavrayacağız.

Ayrıca Python dinamik yazımlı bir programlama dilidir. Ancak tip kontrolünde katı değildir. Yani Javave C#gibi diller daha siz yazarken kodunuzdaki nesnelerin tipini kontrol ederken Pythonbunu yapmaz ve sizin yazmanıza izin verir. Bunun yerine yazdığınız kod çalışma zamanında (run time) kontrol edilir. Bu bazen hatalı tip kullanımına neden olsa da esnekliği yüksek bir dil olduğu için çok hızlı geliştirmryr imkan verir.

Python 1980' lerin sonunda tasarlandı ve adını BBC televizyonunda gösterimde olan Monty Python’s Flying Circus (Monty Piton'un Uçan Sirki) isimli bir şovdan aldı. Hollandalı bir programcı olan Guido van Rossum ilk Python uygulamalarını ABC isimli başka bir programlama dilinden esinlenerek 1989 yılında oluşturdu.

Python 2.0 versiyonu 16 Ekim 2000 yılında ve Python 3.0 versiyonu ise 3 Aralık 2008 yılında piyasaya sürüldü. Python 3.0 büyük değişiklik ve yenilikler içerir ve bir önceki 2.0 versiyonu ile tam uyumlu değildir. Bu yazının yazıldığı tarih itibariyle Pyton 3.11 versiyonu yayımlanmıştır ve hala da güncellenmeye devam etmektedir. Bu rehber Python 3 versiyonu için hazırlanmıştır.

Bu sorunun en iyi cevabı Python' ın ana özelliklerinde gizli. Sıralayacak olursak;

  • Ücretsiz ve açık kaynak
  • Hemen her ortamda çalışabilir. (Linux, Windows, Mac, FreeBSD, Entegre Cihazlar ...)
  • İnanılmaz geniş ve kullanmaya hazır kütüphaneler
  • Çoklu model (Fonksiyonel veya Nesne Tabanlı)
  • İyi bir topluluk (community) desteği
  • Web geliştirme, otomasyon, data bilimi ve makine öğrenmesi, yazılım testi gibi çok geniş kullanım alanı
  • Diğer dillere göre kolay öğrenme eğrisi olması

Listeye bakınca Python 'ın StackOverFlow 2022 anketlerinde Javascript' ten sonra en çok kullanılan 2'nci dil seçilmesine şaşırmamak gerekir. Bu listeyi daha da uzatabiliriz.

Kısacası yaşayan, iyi bir topluluk desteğine sahip ve zengin bir dil olması ile Python öğrenmeye değen bir programlama dilidir.

1.3 Python Kurulumu

https://www.python.org adresine gidin ve Downloads menüsüne tıklayın. İşletim sisteminiz için uygun olan paketi indirin. Genelde en son kararlı sürümü size önerecektir. Paketi indirdikten sonra yönergeleri izleyerek kurun.

Eğer işletim sisteminiz macOS ise yukarıdaki kuruluma alternatif olarak homebrew ile (tavsiye edilen yöntem) kurulum yapabilirsiniz.

2. İLK PYTHON KODUNUZ (NASIL ÇALIŞTIRALIM?)

Python kurulumunu tamamladı iseniz, artık kodlarımızı çalıştırabiliriz. Python kodlarını çalıştırmanın iki temel yolu vardır.

  • İnteraktif komut satırı ile doğrdan çalıştırma
  • Kod Editör ile Python dosyalarını çalıştırma

2.1 İnteraktif Komut Satırı

İşletim sisteminize göre uygun terminali açın ve eğer Windows veya macOS kullanıyorsanız komut satırına python eğer Linux kullanıyorsanız python3 yazın. Bu rehberin kalan bölümlerinde bu komut python olarak kullanılacaktır. Siz işletim sisteminize uygu olanı kullanmalısınız. Aşağıdakine benzer bir ekran görüyorsanız Python bilgisayarınıza doğru kurulmuş ve sistem yolu (environmental variable) doğru ayarlanmış demektir.

~ python
Python 3.10.6 (main, Aug 30 2022, 05:12:36) [Clang 13.1.6 (clang-1316.0.21.2.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

Yukarıda yazdığınız python komutu ile python konsoluna giriş yaptınız. Buna REPL da denir. Yani Read-Evaluate-Print-Loop (Oku-Değerlendir-Ekranda göster-Tekrar komut satırına dön)

Ekran çıktısında kullandığınız Python sürümünü görebilirsiniz. Ekranda bulunan >>> bize Python konsolunu kullandığımızı ve onun içinde olduğumuzu gösterir.

Şimdi ilk Python kodumuzu deneyelim. Basit bir toplama yapalım.

~ python
Python 3.10.6 (main, Aug 30 2022, 05:12:36) [Clang 13.1.6 (clang-1316.0.21.2.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 1 + 1
2
>>>

Gördüğünüz gibi yazdığınız kod enter tuşuna basar basmaz uygulandı (execute) ve ekranda sonucu gösterdi.

Python' da en yaygın fonksiyonlardan biri print yani "ekrana yazdır" fonksiyonudur. Bu fonksiyon ile tek ya da çift tırnak kullanılabilir.

~ python
Python 3.10.6 (main, Aug 30 2022, 05:12:36) [Clang 13.1.6 (clang-1316.0.21.2.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print('Merhaba izleogrenkodla')
Merhaba izleogrenkodla
>>>

Tebrikler ilk Python kodlarınızı şimdiden yazdınız.

2.2 Kod Editörü (IDE)

REPL anlık sonuçları görmek için çok pratik bir yöntem olsa da, Python programlama için bir IDE (Integrated Development Environment) 'ye ihtiyaç duyarız. IDE, Entegre edilmiş geliştirme ortamı ya da kod editörü diye çevrilebilir. IDE'ler yazdığımız kodun yazım kontrolü, otomatik tamamlama, farklı bölümleri farklı renklendirme (code highlighting) gibi birçok kolaylık sağlarlar.

Ayrıca python kodlarımızı tek satırlık komutlar yerine sonu .py uzanlıtı Python dosyalarında tutar ve bu dosyaları çalıştırırız. REPL ile bunları yönetmek mümkün değildir. IDE' ler klasör ve dosya yönetimi açısından gereklidir.

Python ile geliştirme yapacağınız birçok IDE var. En çok bilinenleri VS Code ve Pycharm. Siz istediğiniz bir editörü seçebilirsiniz, izleogrenkodla olarak bizim tercihimiz VS Code.

VS Code editörünü bu adresten indirip kurabilirsiniz. Kurulum gerçekten çok basit, sadece yönergeleri izleyin. VS Code kurduktan sonra en sol menü çubuğundan eklentilere tıklayın ve arama çubuğuna Python yazın. Ekrana gelen eklentilerden Microsoft tarafından sunulan official Python eklentisini kurun. Bu VS Code editörünün Python kodlarını otomatik algılamasını, tamamlamasını ve renklendirmesini sağlayacak.

VS Code Editörü

Python kodlarınızı yazacağınız bir klasör oluşturun. Örneğin biz dosyalarım altında python_rehberi isimli bir klasör oluşturduk.

VS Code ile bu klasörü Open Folder tuşuna basarak açın ve program.py isminde bir dosya oluşturun. Dosyanın içine aşağıdaki kodu yazın. Kod basitçe ad isminde bir değişken oluşturuyor ve ona izleogrenkodla değerini atıyor. Sonrada bunu ekranda yazdırıyor. Bu konuyu ilerleyen bölümde açıklayacağız şimdilik sadece dosyanızı oluşturun.

Dosyanızdaki değişiklikleri kaydedin ve VS Code Terminal menüsünden New Terminal tuşuna basın. Bu VS Code içinde bir komut satırı açacaktır. Komut satırına python program.py yazın. Bu dosyamızdaki kodu okuyup çalıştıracaktır.

VS Code Editor

2.3 Online Editörler

Python öğrenirken işinize çok yarayacağını düşündüğümüz iki araçtan bahsedeceğiz. Bunlardan ilki siz kodunuzu yazdıkça görsel olarak kodun ne yaptığını gösteren Python Tutor, diğeri ise pythondahil onlarca değişik programlama dilini doğrudan yazabileceğiniz repl.it

Python Tutor

Python Tutor kod görselleştirme aracıdır. Kodunuzu çalıştırırken her adımda size ne olduğunu gösterir. Bu sayede yeni programlamaya başlayanların en çok zorlandığı bölümlerde çok işe yarayan bir araçtır.

Python Tutor Ekran Görüntüsü

Bu rehberde bulunan çoğu konuyu bilgisayarınıza hiçbir şey kurmadan Python Tutor ile yapabilirsiniz. ancak yine de hatırlatalım Python Tutor tam kapsamlı bir geliştirme editörü ya da ortamı değildir. Bu nedenle Python ve VS Code editörü bilgisayarınıza kurmanızı şiddetle tavsiye ederiz.

repl.it

repl.it Python da dahil olmak üzere birçok dilde geliştirme ortamınızı online oluşturup direkt kodlamaya başlayabileceğiniz bir uygulama. Python Tutor' dan farklı olarak rpel.it tam bir geliştirme ortamı sunar.

repl.it screenshot

Siteye kaydolun (ücretsiz) ve Create butonuna basıp ardından Python 'ı seçin. Daha sonra projenize bir isim verin ya da önerilen ismi kbul edin ve Create Repl butonuna basın.

create a repl screenshot

Online editor açılacak main.py dosyası oluşturulmuş olacaktır. burada istediğiniz klasör ve dosyaları oluşturarak projenizi geliştirebilirsiniz.Dosyanızda kodlarınızı yazdıktan Run tuşuna basın ve kodunuzu çalıştırın.

repl.it online editor

3. PYTHON YAZIM KURALLARI

Python ana prensiplerinden biri de insanoğlu tarafından kolay okunabilecek bir dil oluşturmaktır. Bu nedenle diğer dillerde olduğu gibi ilave sembol ve yapılara ihtiyaç duyman okunması kolay bir dildir. Elbette her dilde olduğu gibi Python da kendine özgü kurallara sahiptir.

3.1 Indentation (Girinti / Satırbaşı)

Aşağıdaki örnek kod parçasında scope yani blok konseptini açıklamaya çalışalım. Bu örnekte bir fonksiyon var. Bu sizin için bir anlam ifade etmiyorsa endişelenmeyin fonksiyonlar konusunu ileride öğreneceğiz.

def carp_yazdir(number1, number2):
    print(number1 * number2)

Yukarıda carp_yazdir isminde bir fonksiyon tanımlıyoruz. Bu fonksiyon number1 ve number2 iki adında iki değer alıyor. İlk satır fonksiyonu tanımlama satırı.

Farkettiğiniz gibi ikinci satır bir girinti ile başlıyor. Bu girinti bize ikinci satırın ilk satırın kapsama alanı içinde olduğunu gösterir. Ya da bunu şöyle ifade edebiliriz: İkinci satır carp_yazdir fonksiyon bloğuna (scope) aittir.

Javascript, C#, Java gibi birçok yaygın dil scope ya da blok belirlemek için süslü parantez kullanır. bu dillerde her satır sonunda da noktalı virgül vardır. Eğer yukarıdaki fonksiyonu Javascript ile yazmış olsaydık aşağıdaki gibi olurdu.

function carp_yazdir(number1, number2) {
    console.log(number1 * number2)
}

Fakat Python' da bu noktalı virgüller ve süslü parantezler yoktur. Sadece indentation (girinti) vardır. bu nedenle indentation önemlidir ve indentation' da hata yapılırsa kod ya hiç çalışmaz ya da doğru çalışmaz.

3.2 Yorum Satırı

Yorum satırları programlama dillerinin çalıştığı anda dikkate almadıkları ve es geçtikleri satırlardır. Programımıza bir not ya da bilgi eklemek istediğimizde yorum satırlarını kullanırız. Bu sayede kodumuzu dokumante ederiz. Komut satırları hem bizim hem de projede beraber çalıştığımız takım arkadaşları için önemlidir. Çünkü bir kodu yazdıktan bir süre sonra tekrar geri döndüğünüzde size rehberlik eder ve kod okumanızı hızlandırır.

Python programlama dilinde yorum satırı eklemek için hashtag karakteri # kullanılır. Aşağıdaki satırlar Python tarafından çalıştırılmaz ve es geçilir.

# İlk yorumumu yazıyorum.
# İkinci yorumumu yzıyorum

Maalesef Python' da çoklu yorum satırı eklemek mümkün değildir bu nedenle yorum olan her satırın başına # eklemek zorundayız.

3.3 İsimlendirme Kuralları

Python'da varsayılan olarak snake_case isimlendirme kuralı kullanılır. Bu kural genel olarak küçük harf kullanmayı ve her kelimenin arasına alt tire _ işareti koymayı kapsar.

Python'da yazılan bir ifade büyük ve küçük harf hassatır. Yani ilk_listem ile Ilk_Listem aynı gibi görünseler de iki ayrı şeydir. Belirttiğimiz gibi Python dilinde çoğu zaman küçük harfler kullanılır. Bazı yapıların tanımlamasında ise büyük harfle başlanır. Örneğin ileride göreceğimiz class (Sınıf) yapıları büyük harfle tanımlanır. Sırası geldikçe bu konulardan bahsedecğiz.

4. TEMEL ESASLAR

4.1 Değişkenler (Variables

Devam etmeden önce bir hususu hatırlatmakta yarar var. Bu rehber boyunca kodları gördüğünüz kod snippet sağ üstüne mouse ile gelirseniz, Copy butonunu görebilirsiniz. Bu sayede istediğiniz kodu kopyalayabilirsiniz.

a sample code snippet

Değişkenler (variables) boş kutulara benzetilebilir. Nasıl bir kutunun içinde bir şey saklarsınız, gerektiğinde kutudan çıkarır ve bazen içine başka bir şey koyarsınız, değişkenler de belirli değerleri saklamak için kullanılır. Bir değişken oluşturduğunuzda hafızada (memory) bir yer tutar. Birçok programlama dili bir değişkenin önceden tanımlanmasını gerektirir. Ancak Python' da buna ihtiyaç yoktur. Değişkeni yazıp ona bir değer atadığımız anda Python otomatik olarak önce onu oluşturur ve sonra değeri ona atar.

ad = "izleogrenkodla"
hedef = "IT konularını en basit haliyle anlatmak"
makale_sayisi = 11

Yukarıda değişkenlerimizi tanımladık. Şimdi onları ekrana yazdırabiliriz.

print(ad)
print(hedef)
print(makale_sayisi)

ve kodun çıktısı;

izleogrenkodla
IT konularını en basit haliyle anlatmak
11

Sayılar değişken isminde kullanılabilir ama bir değişken isimi sayı ile başlayamaz. Ya bir harfle başlamalıdır ya da alt tire ile başlayabilir. @, $ gibi özel karakterler kullanılamaz. Bunların yanında Python' a özel anahtar kelimeler (keywords) de değişken ismi olarak kullanılamaz. Örneğin print gibi. Tüm anahtar kelime listesine buradan erişebilirsiniz.

4.2 Basit Tipler (Primitive Types)

Basit tipler, temel data yapılarıdır. Bunları sıralayacak olursak;

  • Sayılar (Integers)
  • Ondalıklı Tipler (Floats)
  • Metinsel tipler (Strings)
  • Doğru-Yanlış (Boolean)

Integers

Bu tipler pozitif ve negatif tam sayılardır.

derecem = 84

Floats

Eğer ondalık kullanmak istersek tipimiz float olmalıdır.

tam_derecem = 84.30

Strings

Bu ifadenin tam Türkçe karşılığı yok gibi ama metinsel ifadeler diyebiliriz. Strings deyince aklımıza harfler, kelimeler, karakterler gelmeli. Tek satır bir string yazıyorsak tek ' ' ya da çift " " tırnak işareti kullanırız. Eğer çok satırlı bir string yazıyor isek üçlü tırnak kullanırız.

ad = "Ali"
konu = 'Python'
benim_fikrim = "Python 10 numara bir dil!"
alisveris_listem = """
Limon
Marul
Üzüm
"""

String ifade içinde tırnak işareti kullanmamız gerekiyor ise dışarıdaki tırnak işaretini tek kullandı isek içeridekini çift kullanabiliriz ya da tam tersi. Diğer bir yöntem ise programcılıkta kaçma karakteri escape character denen karakteri kullanmak. Python'da \ escape karakterdir. Bu karakter kendinden sonra gelen karakteri direkt string içinde yazdırır. Örneklerle daha iyi anlaşılacaktır.

# Dışarıda tek tırnak
gunun_sozu1 = 'En değerli "hazine" sağlığımızdır.'

# Dışarıda çift tırnak
gunun_sozu2 = "Akıl yaşta değil 'başta' dır."

# Escape karakter ile
gunun_sozu3 = "Sakla \"samanı\" gelir zamanı."

Yukarıda son değişkende escape karakter kullandık. Dolayısıyla samanı kelimesinden önceki ve sonraki çift tırnaklar bir string ifadenin başladığını ya da bittiğini belirtmiyor. Çünkü tırnak işaretinin Python' daki görevinden kaçtık ya da escape yaptık. Onun yerine bu işaretler sadece tırnak işareti belirtiyor.

Boolean

Boolean veritipi doğru (True) ve yanlış (False) olmak üzere iki değer alabilir.

ali_ayseden_buyuk = True
ali_ayseden_buyuk = False

Tip Kontrolü (Checking type)

Bu kısmı bitirmeden önce Python' da tip kontrolü nasıl yapılır bir gözatalım.

Python'da tip kontrolü için type() fonksiyonu kullanılır. Tipini kontrol etmek istediğiniz değişkeni (variable) bu fonksiyon içinde argüman olarak kullanmanız gerekir.

Parametre ve Argüman konusunu fonksiyonlar konusunda detaylı olarak göreceğiz. type fonksiyonu için yapmanız greken tipini öğrenmek istediğiniz değişkeni parantezler içine yazmanız.

name = Ali
type(name)

Yukarıdaki kod name değişkeninin tipini bize geri döndürür ancak biz onu göremeyiz. Onu ekranda görmek istersek bir de yazdırmamız gerekir. Bu nedenle kodu şu şekilde yazalım.

name = Ali
print(type(name))

ve çıktı;

<class 'str>'

Gördüğünüz gibi fonksiyonlar iç içe de kullanılabilir. Yukarıda önce name isminde değişken tanımladık. En içeriden başlarsak önce bu değişkenin tipini bulduk sonra da yazdırdık. Tahmin ettiğiniz gibi name değişkenin tipi bir string.

4.3 Metinsel Tipleri (Strings) Anlamak

Index

String tipi aslında birden fazla karakter dizisidir. Bu dizide her bir karakterin dizin içindeki işaret numarası yani index numarası vardır. Index mumarası soldan sağa 0' dan, sağdan sola ise -1' den başlar.

Hemen bir örnek verelim. Aşağıda `name` isminde bir değişken (variable) tanımlıyoruz ve "izle öğren kodla" değerini bu değişkene atıyoruz.

name = 'izle öğren kodla'

Şimdi soldan ikinci karakteri yazdırmak istediğimizi düşünelim. Bu z harfidir. Bunun için Python' a doğru index bilgisini söylememiz gerekir. Aşağıdaki tabloda index numaraları soldan ve sağdan gösterilmiştir.

-16-15-14-13-12-11-10-9-8-7-6-5-4-3-2-1sağdan
sola
soldan
sağa
0123456789101112131415
izleöğrenkodla

Gördüğünüz gibi z harfinin index numarası soldan 1 ve sağdan -15' tir. Her iki index numarası da bize aynı değeri verir. Index numaraları değişkenin adının yanında köşeli parantez içinde belirtilir. Aşağıdaki örneklere bakalım:

print(name[1])
print(name[-15])

bu iki satırın çıktısı;

z
z

Yani her ikisi de birbirine eşit. O zaman şöyle diyebiliriz:

name[1] == name[-15]

String Uzunluğu

Bir string' in uzunluğunu bulmak için len fonksiyonunu kullanırız.

print(len('Test Automation'))
15

Slicing (Dilimleme)

Index' lerin yardımıyla bir string' in istediğimiz bölümünü dilimleyip alabiliriz. Buna slicing denir.

my_film = 'Lord of The Rings'
print(my_film[0:4])
Lord

Yukarıda my_film[0:4] ifadesini kullandık. Bu 0 ile 4' üncü index arasındaki karakterleri alır. Burada sıfır dahildir 4 hariçtir. Yani sıfırdan başla 4'e kadar git 4 hariçdemektir.

Concatenation (Birleştirme)

İki veya daha fazla string ifadesini + operatörü ile birleştirerek tek bir string haline getirebiliriz.

name = 'Ahmet'
surname = 'Güçlü'
full_name = name + ' ' + surname
print(full_name)
Ahmet Güçlü

Case Conversion (Harf Dönüştürme)

upper() metodu tüm karakterleri büyük harfe, lower() metodu ise küçük harfe dönüştürür.

buyuk_harf = 'Izle Ogren Kodla'.upper()
kucuk_harf = 'Izle Ogren Kodla'.lower()
print(buyuk_harf)
print(kucuk_harf)
IZLE OGREN KODLA
izle ogren kodla

String' lerle daha birçok metod kullanabiliriz. Biz burada sadece en çok kullanılanlarını göstermeye çalıştık. String ifadesini incelemek isterseniz Python dokümanlarını inceleyebilirsiniz.

4.4 Operatörler (Operators

Assignment (Atama) Operatörü

= işareti birçok programlama dilinde olduğu gibi Python için de atama operatörü olarak kullanılır. Örneğin:

benim_yasim = 19

Bu bir atamadaır. benim_yasim değişkenine 19 değerini atar.

Arithmetic (Hesaplama) Operatörleri

Bunlar temel matematiksel işlemleri yapabileceğimiz operatörlerdir.

  • “+”: Toplam
  • “-“: Çıkarma
  • “/”: Bölme
  • “//”: Tam sayı bölme (virgülden sonrasını aşağıya yuvarlar)
  • “*”: Çarpma
  • “%”: Kalan (bu mod operatörü diye de bilinir.)
print(3 + 6)
print(8 - 1)
print(7 / 2)
print(7 // 2)
print(3 * 6)
print(7 % 2) # 7 ikiye bölünürse geriye 1 kalır. (2 * 3) + 1
9
7
3.5
3
18
1

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

Bu operatörler iki değeri karşılaştırmak için kullanılır.

  • “==” : Eşittir. (Bildiğimiz eşittir iki tane eşittir ile yapılır.)
  • “!=” : Eş değildir.
  • “<" : Küçüktür.
  • “<=": Küçük eşittir.
  • “>” : Büyüktür.
  • “>=” : Büyük eşittir.
print(6 > 3)
print(5 != 5)
print(2 <= 7)
print('aaa' == 'aaa')
True
False
True
True

Logic (Mantık) Operatörleri

Bu operatörler boolean logic(doğru-yanlış mantığı) işlemleri yapmak için kullanılır.

Boolean Logic:

  • "and" : İki ifade de doğru ise doğrudur aksi takdirde yanlıştır.
  • "or" : İki ifade de yanlışsa yanlıştır aksi takdirde doğrudur.
  • "not" : Doğru ise yanlış, yanlış ise doğrudur.
print(6 > 3 and 'a' == 'a')
print(3 > 6 and 'a' == 'a')
print(3 > 6 or 'a' == 'a')
print(3 > 6 or 'a' != 'a')
print(not(3 > 6))
True
False
True
False
True

Operatörlerin değişik öncelik sıraları vardır. Aşağıdaki tablo en çok kullanılan operatör ve sıralamalarını göstermektedir.

No Operatör Açıklama
1. () Paranteze alınmış ifadeler
2. *,/,//,% Sırasıyla çarpma, bölme, kalansız bölme, kalan
3. +, - Sırasıyla toplama ve çıkarma
4. in, not in, is, is not,
<, <=, >, >=, =!, ==
Karşılaştırma ve aidiyetlik
5. not x Boolean NOT
6. and Boolean AND
7. or Boolean OR

4.5 Kullanıcıdan Girdi Almak (User Inputs)

Kullanıcıdan bir girdi isteği yapmak için input() fonksiyonu kullanılır. Bu fonksiyon çalıştığında program komut satırında kullanıcının bir giriş yapması için bekler. Bu esnada input() fonksiyonu içinde kullandığımız string ifade kullanıcıya gösterilir.

sehir = input('Lütfen yaşadığınız şehri giriniz: ')
Lütfen yaşadığınız şehri giriniz: İstanbul
print(sehir)
İstanbul

Burada hatırlamanız gereken nokta kullanıcıdan alınan değer her zaman string tipindedir. Yani metinsel tip. Kullanıcı sayı bile girmiş olsa girdiği değerin tipi string' dir.

year = input('Lütfen doğum yılınızı giriniz: ') #Kullanıcı 2000 yazmış olsun.
print(year)
print(type(year))
2000
<class 'str'>

4.6 Tip Dönüşümleri (Type Conversion)

Bazen kullanıcı tarafından sunulan ya da başka kaynaklardan alınan verinin tipi yapacağımız işlemler için uygun olmayabilir. Bir önceki örnekte gördüğümüz gibi kullanıcı doğum yılını normalde yıl olarak girer ama input fonksiyonu bunu her zaman string data tipinde tutar. Örneğin kullanıcı 2001 girer ama bu input fonksiyonu nedeniyle "2001" şeklinde tutulur. Bu durumda string tipinden int tipine dönüştürme yapmamız gerekebilir.

Python' da iki ana tip dönüşüm çeşidi vardır.

  • Explicit Conversion (Açık Dönüşüm)
  • Implicit Conversion (Kapalı Dönüşüm)

Explicit Type Conversion

Bu dönüşümde bilerek ve isteyerek değişkenin tipini biz değiştiririz. Veriyi bir tipten diğerine dönüştürürüz. Bu tip dönüşümler için Python' da önceden tanımlanmış fonksiyonlar bulunur.

  • str()
  • int()
  • float()
  • ...

Bazı kaynaklarda bu tip dönüşüm terimini type casting olarak da görebilirsiniz. Bu tip dönüşüm sadece iki tip birbirine uyumlu ise yapılabilir.

Gelin bu dönüşümü bir örnekle inceleyelim. Aşağıda iki ayrı değişken (variable) oluşturup aynı sayıyı içinde tutalım. Ancak ilki integer olsun ikincisi string

benim_sayim1 = 11
benim_sayim2 = '11'

Bunları ekrana yazdırırsak aynı sonucu verir.

11
11

Görünüşte bu iki değerde aynı gibi görünüyor. Ama bunların tipini kontrol edersek:

print(type(benim_sayim1))
print(type(benim_sayim2)) 
<class 'int'>
<class 'str'>

Gördüğünüz gibi ilk değişken integer, ikincisi ise string tipinde. Tip dönüşümü yapmadan önce bir işlem daha yapalım ve neden tip dönüşümüne ihtiyacımız olduğunu daha iyi anlayalım. yukarıdaki iki değişkenle devam edelim ve tip dönüşümü yapmadan bunları toplamaya çalışalım.

toplam_sayim = benim_sayim1 + benim_sayim2

Bu işlemden sonra

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Python bizim bir string ile bir integer değişkeni toplamamıza izin vermedi ve tip hatası verdi. Bu hatayı engellemek için string olan değişkeni integer tipine Explicit Conversion kullanarak dönüştürüyoruz. Bu dönüşüm için ihtiyacımız olan fonksiyon int().

benim_sayim2 = int(benim_sayim2)
print(type(benim_sayim2))
<class 'int'>

Dönüşümden sonra artık toplama işlemini yapabiliriz.

toplam_sayim = benim_sayim1 + benim_sayim2
print(toplam_sayim)
22

Implicit Type Conversion

Bu dönüşüm otomatik bir süreçtir ve kullanıcı müdahalesi gerektirmez. Bu dönüşüm belirli tip grupları ile sınırlıdır. Örneğin sayısal (numeric) gruplar gibi. Örneklerle inceleyelim.

ilk_notum = 8
ikinci_notum = 7.5

toplam_notum = ilk_notum + ikinci_notum

print(toplam_notum)
print(type(toplam_notum))

İlk değişkenin tipi integer ve değeri 8. İkinci değişken ise ondalık sayı ve tipi float. Yukarıdaki kodu çalıştırdığımızda sonucun da ondalık sayı olduğunu ve tipinin float olduğunu görürüz.

15.5
<class 'float'>

Python otomatik olarak sonucun tipini float yaptı. Çünkü bu tip integer tipinden daha hassas ve data kaybını önlemek için bunu uyguladı. Biz Python'a tip dönüştürmesini söylemedik. İşte bu dönüşüme Implicit Conversion yani kapalı dönüşüm denir.

Data Kaybına Dikkat!

Bir önceki örneğe dönelim ve Python yerine dönüşümü biz Explicit Conversion ile yapalım. Aşağıda int+float işlemini int' e çeviriyoruz.

toplam_notum = int(ilk_notum + ikinci_notum)
print(toplam_notum)
print(type(toplam_notum))
15
<class 'int'>

Gördüğünüz gibi verinin ondalık kısmını kaybettik. Sonuç 15.5 olması gerekirken 15 oldu. Bu nedenle bu konu tip dönüşümü yaparken mutlaka göz önünde bulundurulmalıdır. Eğer gerçekten niyetiniz bu değilse her zaman daha hassas olan data tipini tercih edin. Örneğin yukarıda int yerine float() kullanmak gibi.

4.7 Python Dosyaları

Şu ana kadar bir iki satır kod örnekleri kullandık ve Python REPL (komut satırı) bunun için yeterli olmuştur. Ancak gerçek uygulamalarda bu pratik bir yöntem değil. Bu nedenle daha önce kod editörü bölümünde bahsettiğiömiz gibi .py uzantılı Python dosyalarını kullanacağız.

Tekrar edelim, kod editörü olarak istediğiniz bir editör kullanabilirsiniz. Bizim bu rehberdeki seçimimiz VS Code.

Daha önce python_rehberi isimli bir klasör oluşturmuş ve onu VS Code ile sçmıştık. Şimdi VS Code editörü tekrar açalım ve tam_ismi_yaz.py isimli bir dosya oluşturalım.

Ardından aşağıdaki kodu dosyamıza kopyalayıp yapıştıralım.

first_name = input("Lütfen adınızı giriniz: ")
last_name = input("Lütfen soyadınızı giriniz: ")
tam_isim = "Your ful name is: " + first_name + " " + last_name
print(tam_isim)
buyuk_harf_isim = tam_isim.upper()
print(buyuk_harf_isim)

Siz kodunuzu yazdıkça VS Code editörünün intelliSenseözelliği size otomatik tamamlama yapacaktır.

kod sample

Kodunuzu kaydedin ve ardından sağ üst köşede bulunan sağa yatık üçgen şeklindeki Run Python File tuşuna basın

Siz kodunuzu çalıştırır çalıştırmaz VS Code kodunuzu kaydedecek ve komut satırını açarak orada çalıştıracaktır.

5. KOŞULLAR

Koşul yapıları yazılım akış kontrolünün en önemli özelliğidir. Çünkü belirli kodlar ancak belirli koşullar altında çalıştırılmalıdır. Pek çok dilde olduğu gibi en sık kullanılan koşul yapıları Python'da if-else bloklarıdır.

5.1 if Statement (if İfadesi)

Önce tek bir if ifadesini inceleyelim. if eğer, ise gibi anlamlara gelmektedir. Biz uygulamamıza aksini söylemedikçe kodumuz soldan-sağa ve yukarıdan-aşağıya akar. Bu akış esnasında kodun belirli bir bölümünün sadece belirli bir koşul ya da koşullar altında çalışmasını if ile sağlarız. if yapısı aşağıda gösterilmiştir.

if koşul_ifadesi:
    çalıştırılacak kod

koşul ifadesinden sonra gelen : işareti bunun bir kod bloğu olduğunu gösterir ve takip eden satırlar indentation satır-başı ile başlar. Bu satır başı ile başlayan tüm satırlar if ifadesine aittir. if ifadesinin akış diagramı aşağıdaki gibidir.

if ifadesi akış diagramı

Hemen bir örnek yazalım. Düşünün ki bir sinemanın yaşa göre film gösterim politikası olsun. Bu politikaya göre yaşı 16 ve üstünde olanlar tüm filmlere girebilsin.

yasiniz = 14
if yasiniz >= 16:
    print("Tüm filmlere girebilirsiniz.")
print("Kodun geri kalanı")

Bu programı çalıştırdığınızda:

Kodun geri kalanı

Çünkü yasiniz değişkeni 14 ve bu değer 16 dan küçük. Yani if ifadesi bize False (yanlış) döndürür. Bu nedenle if ifadesi içindeki blok çalıştırılmaz. "Tüm filmlere girebilirsiniz" çıktısını görmeyiz. Şimdi kodu değiştirelim ve yaşı 18 yapalım.

yasiniz = 18
if yasiniz >= 16:
    print("Tüm filmlere girebilirsiniz.")
print("Kodun geri kalanı")

İşte şimdi if bloğu içindeki kod çalışır ve kod sonucu aşağıdaki gibi olur:

Tüm filmlere girebilirsiniz.
Kodun geri kalanı

5.2 if - else

Bir önceki if örneğimizde küçük sinema programımız sadece verilen koşul doğru olduğunda çalışıyordu. Fakat verilen koşul yanlış olduğu zaman da programımız bir şey yapması gerekiyorsa o zaman bunu nasıl yapacağız? Bunun için Python else (aksi takdirde, değilse) ifadesine sahiptir. if ifadesi yanlış olduğu zaman else ifadesi içindeki kod çalışır.if \- else yapısı aşağıda gösterilmiştir.

if koşul_ifadesi:
    if koşulu doğru ise çalışır.
else:
    if koşlu yanlış ise çalışır.

if - else ifadesinin akış diagramı aşağıdaki gibidir.

if - else akış diagramı
if - else akış diagramı

Şimdi sinema programımızı else ekleyerek biraz daha geliştirelim. Yine gösterim politikasına göre programımız, kullanıcının yaşı 16 ve üstü değilse, Üzgünüm PEGI 16+ filmlere girmezsiniz yazdırsın.

yasiniz = 14
if yasiniz >= 16:
    print("Tüm filmlere girebilirsiniz.")
else:
    print("Üzgünüm PEGI 16+ filmlere giremezsiniz")
print("Kodun geri kalanı")

Bu kodu çalıştırdığımızda aşağıdaki çıktıyı alırız:

Üzgünüm PEGI 16+ filmlere giremezsiniz
Kodun geri kalanı

yasiniz değişkeninin değerini 14' ten 16' ya alırsanız, ilk satırdaki çıktının Tüm filmlere girebilirsiniz şeklinde değiştiğini görürsünüz.

5.3 elif ifadesi

elif else if ifadesinin kısaltılmış şekilde yazılmış halidir. Programımızda birden fazla koşulu kontrol etmemizi sağlar.

Eğer ilk if ifadesindeki koşul yanlış ise bir sonraki elif ifadesine bakılır. Eğer o da yanlış ise bir sonrakine...

Eğer tüm koşullar yanlış ise else ifadesi iç,indeki koşul çalışır.

Yani tüm bu if, elif, else bloklarında koşulu sağlayan ilki ve yalnızca bir tanesi çalıştırılır.

Bir koşul bloğu birden fazla elif ifadesine sahip olabilir ancak kullanılırsa sadece bir tane else ifadesi olabilir. if \- elif \- else yapısı aşağıda gösterilmiştir.

if koşul_ifadesi:
    if koşulu doğru ise çalışır.
elif:
    if ifadesi doğru değil ise bu elif kontrol edilir.
elif:
    Bir önceki elif doğru değilse bu kontrol edilir.
else:
    Tüm önceki koşullar yanlış ise çalışır.

Şimdi sinema uygulamamıza geri dönelim ve daha da geliştirelim. Kullanıcıdan yaşını alalım, bunu bir değişkende tutalım. Yaşa göre programımız aşağıdaki esaslarda çalışsın.

  • Kullanıcı 6 yaşından küçük ise hiçbir filme giremesin.
  • 6 yaş ve üzeri ile 11 yaş dahil olanlar sadece PEGI 6+ filmlere girebilsin.
  • 12 yaş dahil üzeri ve 16 yaşından küçük olanlar PEGI12+ filmlere girebilsin.
  • 16 yaş ve üzeri olan kullanıcılar tüm filmlere girebilsin.
yasiniz = int(input("Lütfen yaşınızı giriniz: "))
if yasiniz < 6:
    print("Sinemaya giremezsiniz")
elif yasiniz < 12:
    print("PEGI 6+ filmlere girebilirsiniz.")
elif yasiniz < 16:
    print("PEGI 12+ filmlere girebilirsiniz")
else:
    print("Tüm filmlere girebilirsiniz")
print("Kodun geri kalanı")

6. DÖNGÜLER (LOOPS)

6.1 for Döngüsü

For döngüsü, Python'da kod bloklarını tekrarlamak için kullanılan yineleme yöntemlerinden biridir. Aşağıda for döngüsünün yapısı verilmiştir.

for gecerli_deger in degerler_listesi:
    for_icindeki_kod_blogu

Yukarıdaki gecerli_deger, bu döngü esnasında kullanılan geçici değişkendir. Döngü boyunca degerler_listesi içindeki her bir eleman bu geçici değişken içinde depolanır. string, tuple ve list gibi yapılar her bir elemanı için yinelenebilir (iterative) yapılardır. Bu gibi yapılarda for kullanılabilir. string yapısından bahsetmiştik. Diğer yapılardan da sırası geldikçe bahsedeceğiz.

string içinde for döngüsü

Bir string yapısının karakterleri içinde for yapısını kullanarak döngü yapabiliriz. Daha önce gördüğümüz gibi string index kullanan bir yapı idi. Bu nedenle string karakterleri iterative (yinelenebilir) yapıdadır. Aşağıdaki örneğe bakalım.

ulke = 'Türkiye'
for harf in ulke:
    print(harf)

Bu kodun çıktısı:

T
ü
r
k
i
y
e

range() Fonksiyonu

Eğer belirli bir aralıkta döngü yapmak istiyorsanız range() fonksiyonu bu amaç için kullanılabilir. Belirli bir aralıkta sayıları listeleyebilirsiniz. Örneğin 1' den 10' a kadar sayıları listelemek istiyorsanız aşağıdaki kodu kullanabilirsiniz:

for sayi in range (1,11):
    print ('gecerli_sayi', sayi)

Bu kodu çalıştırdığınızda aşağıdaki çıktıyı görürsünüz.

gecerli_sayi 1
gecerli_sayi 2
gecerli_sayi 3
gecerli_sayi 4
gecerli_sayi 5
gecerli_sayi 6
gecerli_sayi 7
gecerli_sayi 8
gecerli_sayi 9
gecerli_sayi 10

Gördüğübüz gibi range() fonksiyonu iki değer alıyor 1 ve 11. Birinci değeri başla, ikinci değeri dur gibi düşünebilirsiniz. Yani Python 1 den başlar ve 11'e gelince durur. 11 dahil olmaz.

break İfadesi

break kırmak, ara vermek gibi anlamlara gelir. Bu ifade ile döngüyü tamamlanmadan sonlandırabiliriz. Aşağıda bir örnek verelim:

for i in range (1,11):
    if i == 7:
        break
    print ('number', i)

Bu kodu çalıştırdığınızda çıktı aşağıdaki gibi olur:

number 1
number 2
number 3
number 4
number 5
number 6

Yukarıdaki kod bloğunda normal for ile başlıyoruz. i değişkeni 1' den başlayarak 10 dahil 10'a kadar artarak gidecek şekilde range() fonksiyonu kullanılmış. Her döngğüde i +1 artar. for içinde bir if koşulu var ve i'nin değerinin 7'e eşit olup olmadığını kontrol ediyor. eğer i' nin değeri 7' ye eşit ise döngü break ile bitiriliyor. dolayısıyla 7 ve üstü rakamlar hiçbir zaman yazdırılmıyor.

Aşağıda break için bir örnek daha verelim.

country = 'Belçika'
for h in country:
    if h == 'ç':
        break
    print('Geçerli harf :', h)

Yukarıdaki örnekte, yine for içinde bir if var. Bu if koşulu sağlandığında yani h değişkeni ç harfine eşit olduğunda döngü kırılıyor. Bu nedenle ç harfi ve sonraki harfler yazdırılmıyor.

Bu kodun çıktısı:

Geçerli harf: B
Geçerli harf: e
Geçerli harf: l

continue ifadesi

Döngüler içinde kullanılan bir diğer ifade de continue ifadesidir. Bu ifade tüm döngüyü kırmaz ancak o anda yinelenen değeri es geçmek için kullanılabilir. Aşağıda bir örneği inceleyelim:

ulke = ‘Hollanda’
for harf in ulke:
    if harf == 'a':
        continue
    print('Geçerli harf:', harf )

Bu kodu çalıştırdığımızda çıktısı aşağıdaki gibi olur.

Geçerli harf: H
Geçerli harf: o
Geçerli harf: l
Geçerli harf: l
Geçerli harf: n
Geçerli harf: d

'a' harfleri yazdırılmaz. Çünkü yinelenen harf değişkeni 'a' harfine eşit olduğunda continue ifadesi ile döngünün o anki değeri es geçilir ve bir sonraki değere devam edilir. Bu nedenle print('Geçerli harf:', harf ) kod satırı harf değişkeni 'a' ya eşit olduğunda çalışmaz.

6.1 while Döngüsü

Python da kullaılan bir başka yineleme yapısı while döngüsüdür. while döngüsü doğru bir koşul ile başlar ve verilen koşul yanlış olana kadar kod bloğunu yineler.

while expression:
  statement(s)

Buradaki ifade bloğu (statement) tek bir ifade olabileceği gibi, ifadeler bloğu da olabilir. while ifadesinin hemen yanındaki expression ifadesi doğru olduğu sürece döngü çalışır. Yanlış olduğu anda döngüden çıkılır.

while döngü şeması

Bir örnek vermek gerekirse:

i=1
while i<=5: print("merhaba izleogrenkodla") i="i+1" < code>

Yukarıdaki kod bloğunda koşulumuz i değişkeninin 5 ten küçük ya da 5'e eşit olması. Bu koşul doğru olduğu sürece ekrana Merhaba izleogrenkodla yazdırılacaktır. Ancak kod bloğu içinde her bir tekrarda i nin değerini +1 artırıyoruz. Bu nedenle i nin değeri 6'ya ulaşınca döngüden çıkılacaktır.

Yukarıdaki kodun çıktısı:

Merhaba izleogrenkodla
Merhaba izleogrenkodla
Merhaba izleogrenkodla
Merhaba izleogrenkodla
Merhaba izleogrenkodla

Sonsuz döngü

Sonsuz döngü, koşul ifadesinin her zaman doğru olması, hiçbir zaman yanlış olmaması durumunda oluşur. Bu durumda kod döngüden asla çıkamaz.
Aşağıda bir örnek verilmiştir ama bu şekildeki sonsuz döngüleri bilgisayarıınızda çlalıştırmanız tavsiye edilmez.

while true:
  print("Durdur beni, durdurabilirsen!")

Bu kod çalıştığında ekrana sürekli print edilen ifadeyi yazdırır ta ki siz onu durdurana kadar. Eğer kodu python da çalıştırdı iseniz CTRL+C ile çalışmayı durdurabilirsiniz.

else ifadesi

while döngüsü içinde else ifadesi kullanılırsa, bu ifade koşul yanlış olduğunda çalışır.

Örneğin:

i = 1
while i<=5: print("python harika!") i+="1" else: print("bye, python!") < code>

Bu kodu çalıştırdığımızda sonuç:

Python harika!
Python harika!
Python harika!
Python harika!
Python harika!
Bye, Python!

break ifadesi

Bu ifade ile döngüyü istediğimiz anda sonlandırabiliriz. Aşağıdaki örneği inceleyelim:

i = 1
while i<=5: print("python harika!") if i="=" 3: break i+="1" < code>

Kodumuz i değişkeni 3'e ulaştığında döngüden çıkarve aşağıdaki sonucu verir. Yani ekrana 5 kere Python harika! yazmaz.

Python harika!
Python harika!
Python harika!

continue ifadesi

Bu ifade ile döngü içindeki o anki tekrarı es geçebiliriz ve bir sonraki ile devam ederiz.

i = 0
while i<=5: i+="1" if i="=" 3: continue print(i, "hey python!") < code>

Ve çıktı:

1 Hey Python!
2 Hey Python!
4 Hey Python!
5 Hey Python!
6 Hey Python!

Görüldüğü gibi sayılar 3 hariç 1'den 6'ya kadar yazdırıldı. Çünkü döngü esnasında i değişkeninin değeri 3 olduğunda continue ifadesi ile o anki tekrarı es geçtik.

7. DATA YAPILARI

Python data yapılarına Python Collections (Kolleksiyon) da diyebiliriz. Python da temel olarak 4 adet collections bulunur.

  • Diziler (Lists): Nesnelerin index no ile erişilebildiği, mutable yani değiştirilebilen sıralı nesneler topluluğudur. Diğer bazı programlama dillerindeki Arrays lere benzerler.
  • Tuples (Demetler): Aynı Diziler gibidirler anca demetler immutable yani değiştirilemezdir.
  • Sets: Diziler ve Demetlerden farklı olarak sıralı olmaları (ordered) garanti eidlmez ya da mümkün değildir. Setler mutable yani değiştirilebilirdir ancak inex yoktur.
  • Sözlükler (Dictionaries): Sıralı olmayan/olamayan, mutable ve index bulunmayan data yapısıdır.

7.1 Diziler (Lists)

Diziler bir veya birden fazla nesne içerebilir ve nesneler aynı ya da farklı veri tipinde olabilir. Diziler köşeli parantez ile gösterilir ve nesneler birbirinden virgül ile ayrılır.

Örnekler inceleyelim:

Sadece string içeren bir dizi
countries= ['Belgium', 'Indonesia', 'Turkey', 'Netherland', 'Japan']
print(countries)

Bu kodun çıktısı:

['Belgium', 'Indonesia', 'Turkey', 'Netherland', 'Japan']
Sadece sayısal değerler içeren bir dizi
dogum_yillari= [1985,1986,1988,1989,1999]
print(dogum_yillari)

ve çıktısı:

[1985, 1986, 1988, 1989, 1999]
Karışık veri tipleri içeren bir dizi
aday = [28, 'tall', 1.75, 'programmer', True]
print(aday)
[28, 'tall', 1.75, 'programmer', True]

Yukarıdaki dizide 4 farklı veri tipini görüyoruz: integer (28), string (‘tall’ & ‘programmer’), float (1.75) and True (Boolean)

Dizi içindeki nesnelere index ile erişim

Daha önce string veri tipinde gördüğümüz gibi dizilerin her bir nesnesine index değeri ile ulaşılabilir. Index değeri soldan sağa 0 dan, sağdan sola ise -1 den başlar.

Yukarıda vermiş olduğumuz ülkeler dizisini ele alalım.

index

Index kullanımına bir örnek verecek olursak:

countries= ['Belgium', 'Indonesia', 'Turkey', 'Netherland', 'Japan']
print('I am from', countries[2], 'and I live in', countries[0])

Index'ler köşeli parantez ile kullanılır. Burada countries dizisinin önce 3. nesnesine (index [2]) daha sonra ise 1. nesnesine (index [0]) ulaşıyoruz.

Yukarıdaki kodu çalıştırdığımızda çıktı:

I am from Turkey and I live in Belgium

Negatif index

Dizi içindeki nesnelere negatif index ile de ulaşabiliriz. Dizinin son nesnesinin index no'su -1 dir. Sağdan sola doğru -1, -2, ... şeklinde devam eder.

negative index

Örneğin yukarıdaki ilk örneğimizi negatif index ile verecek olursak:

countries= ['Belgium', 'Indonesia', 'Turkey', 'Netherland', 'Japan']
print('I am from', countries[-3], 'and I live in', countries[-5])

bu kodun çıktısı yine aynı olacaktır.

I am from Turkey and I live in Belgium

Slice lists

slice dilimleme anlamına gelir. Bu method ile lists 'lerin istediğimiz kadar aralıkta nesnesine ulaşabiliriz. slice sonucu da yine bir list' dir. Bu konu en iyi örneklerle anlaşılacağı için hemen birkaçını inceleyelim.

  • Belirli bir aralıkta slice yaparak başlangıç ve bitiş index'lerini belirtebiliriz.
countries= ['Belgium', 'Indonesia', 'Turkey', 'Netherland', 'Japan']
print(countries[1:3])

Burada [1:3] index [1] den başla ve index [3] de dur (3 dahil değil) demektir. Bu kodun çıktısı:

['Indonesia', 'Turkey']
  • Belirli bir index'ten başlayıp son elemana kadar (son eleman dahil) slice işlemi.
countries= ['Belgium', 'Indonesia', 'Turkey', 'Netherland', 'Japan']
print(countries[3:])

Bu slice fonksiyonu ile [3] nolu index den başlayıp (Netherland) son nesne dahil seçmiş oluyoruz. Kodun çıktısı:

['Netherland', 'Japan']
  • İlk nesneden başlayıp belirli bir index no' ya kadar slice.
countries= ['Belgium', 'Indonesia', 'Turkey', 'Netherland', 'Japan']
print(countries[:3])

ve sonuç:

['Belgium', 'Indonesia', 'Turkey']

slice method' u içinde negatif index de kullanabiliriz.

countries= ['Belgium', 'Indonesia', 'Turkey', 'Netherland', 'Japan']
print(countries[-4:-1])

Bu işlemin sonucu:

['Indonesia', 'Turkey', 'Netherland']

Yukarıdaki örnekte [-4] nolu index'ten başladık ve [-1] nolu index' e kadar ([-1] dahil değil) slice etmiş olduk.

Sadece tek çift nokta : kullanmak default (varsayılan) aralık demektir. Ya da başka bir deyişle ilk ve son eleman dahil tüm aralık demektir. Yani tüm list' i seçmiş oluruz ve slice yapmamış oluruz.

countries= ['Belgium', 'Indonesia', 'Turkey', 'Netherland', 'Japan']
print(countries[:])
['Belgium', 'Indonesia', 'Turkey', 'Netherland', 'Japan']
  • Slice işlemine step eklemek

slice method' una ikinci bir çift nokta :: eklemek step(adım) anlamına gelir. Yani;

  • [1:4:1] 1 nolu index' ten 4 nolu index' e kadar her bir adım (1 step) giderek nesne seç
  • [1:4:2] 1 nolu index' ten 4 nolu index' e kadar her ikinci nesneyi (2 steps) seç
  • [1:4:] 1 nolu index' ten 4 nolu index' e kadar default (yine 1 step) giderek nesne seç gibi. Aşağıdaki örnekleri inceleyelim.
countries= ['Belgium', 'Indonesia', 'Turkey', 'Netherland', 'Japan']
index1Basla_Index4Dur_1Step = countries[1:4:1]
index1Basla_Index4Dur_DafaultStep = countries[1:4:]
index1Basla_Index4Dur_2Steps = countries[1:4:2]

print(index1Basla_Index4Dur_1Step)
print(index1Basla_Index4Dur_DafaultStep)
print(index1Basla_Index4Dur_2Steps)

ve bu kodun çıktısı:

['Indonesia', 'Turkey', 'Netherland']
['Indonesia', 'Turkey', 'Netherland']
['Indonesia', 'Netherland']

gördüğünüz gibi step 2 kullandığımız zaman Python 1' inci indexdeki değer olan Indonesia yı aldı, 2 adım gittiö Turkeyi es geçti ve 3' üncü index olan Nederland ı aldı.

Eğer bir list' in elemanlarını tersine çevirebiliriz. Aşağıdaki örneği inceleyelim:

countries= ['Belgium', 'Indonesia', 'Turkey', 'Netherland', 'Japan']
print(countries[::-1])

Buradaki [::-1] ifadesine bakalım. İlk çift nokta artık noktabildiğiniz gibi range (aralık). Yani ilk elemandan başla, son elemana kadar al demek ki bu da tüm list demek. İkinci çift nokta ise belirttiğimiz gibi step (adım). -1 demek sondan başlayarak bir adım gel demek.

bu kodun çıktısı ise:

['Japan', 'Netherland', 'Turkey', 'Indonesia', 'Belgium']