0% found this document useful (0 votes)
258 views180 pages

Python Programlama

Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
258 views180 pages

Python Programlama

Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

9.10.

2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

İstanbul Üniversitesi
Açık ve Uzaktan Eğitim Fakültesi

PYTHON PROGRAMLAMA
DOÇ. DR. ELİF KARTAL

about:blank 1/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

İÇİNDEKİLER

1. PYTHON İLE PROGRAMLAMAYA GİRİŞ


2. DEĞİŞKENLER VE VERİ TİPLERİ
3. VERİ YAPILARI: LİSTE, DEMET, KÜME, SÖZLÜK
4. KOŞUL İFADELERİ
5. DÖNGÜLER
6. FONKSİYONLAR
7. NESNEYE YÖNELİMLİ PROGRAMLAMA
8. NUMPY VE PANDAS KÜTÜPHANELERİ İLE ÇALIŞMA

about:blank 2/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

1. PYTHON İLE PROGRAMLAMAYA GİRİŞ


Bölümle İlgili Özlü Söz
Python, en başından beri Google'ın önemli bir parçası olmuştur ve sistem büyüyüp geliştikçe de öyle kalacaktır.
Bugün düzinelerce Google mühendisi Python kullanıyor ve bu dilde beceri sahibi daha fazla kişi arıyoruz.

Peter Norvig, Google, Inc. Arama Kalitesi Yöneticisi

Kazanımlar
1. Python programlama dili genel yapı ve sözdizimi hakkındaki temel kavramları bilir.

2. Python kurulumunu gerçekleştirebilir, çalıştırabilir, yeni bir Python betik dosyası oluşturabilir ve kaydedebilir.

3. Python dilinin tümleşik geliştirme ortamlarını bilir.

4. Spyder IDE kurulumunu ve yapılandırılmasını gerçekleştirebilir, Spyder IDE’yi çalıştırabilir, Spyder IDE’yi
kullanarak yeni bir Python betik dosyası oluşturabilir ve kaydedebilir.

5. Spyder IDE’nin arayüzünde bulunan panelleri ve bu panellerin görevlerini bilir.

6. Kaynak kod ve çalıştırılabilir kod dosyaları arasındaki farkı açıklayabilir.

7. Derleyici ve yorumlayıcı arasındaki farkı ifade edebilir.

8. Python dilinin betik dosyasını çalıştırma sürecini anlatabilir.

9. Python modül, paket, kütüphane ve çerçeve hakkında bilgi sahibidir.

10. Python sanal ortamların ne olduğunu, neden ve nasıl kullanıldığını bilir.

11. Spyder IDE içinde farklı Python sanal ortamlarını tanımlayıp değiştirebilir.

12. Python içindeki yardım kaynaklarını kullanarak Python ile ilgili fonksiyonlar hakkında daha fazla bilgi edinebilir.

Birlikte Düşünelim
1. Python programlama dilinin temel özellikleri nedir?

2. Python dilinin farklı sektörlerde nasıl kullanılabileceği hakkında kısaca bilgi veriniz.

3. Python kurulumu nasıl yapılır? Kurulum sırasında dikkat edilmesi gereken önemli adımlar nelerdir?

4. Spyder IDE kurulumu nasıl yapılır?

5. Bir Python betik dosyası nasıl oluşturulur?

6. Python betik dosyaları nasıl çalıştırılır?

7. Python dağıtımları nelerdir?

8. Python için geliştirilen “Tümleşik Geliştirme Ortam”ları (IDE’ler) nelerdir?

9. Kaynak kod dosyası ile çalıştırılabilir dosya arasındaki fark nedir?

10. Python betik dosyasını nasıl çalıştırır?

11. Python çalıştırılabilir kod dosyası oluşturmak mümkün müdür?

about:blank 3/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

12. Python dilindeki modül, paket, kütüphane ve çerçeve kavramlarını kısaca açıklayınız?

13. Python sanal ortam kullanımı ne gibi faydalar sağlar?

14. Farklı projeler için farklı Python sanal ortamları oluşturmak neden önemlidir? Bir proje için sanal ortam
oluşturmanın avantajları nelerdir?

15. Python içinde yardım kaynaklarını kullanmanın yolları nelerdir?

Başlamadan Önce
Python, sektörde ve akademide araştırmacıların çoğunlukla tercih ettiği popüler bir programlama dilidir. Kolay
kullanımı, ücretsiz erişilebilmesi ve dünya çapındaki kullanıcı desteği Python dilinin popüler hale gelmesindeki
etkenlerden bazılarıdır. Son yıllarda özellikle makine öğrenmesi, derin öğrenme, yapay zekâ çalışma alanlarında
gerçekleştirilen analizlerdeki performansı ile ön plana çıkmıştır. Akademi ve sektörde yer alan birçok araştırmacı
tarafından kullanılmaktadır. İşte kitabın bu bölümü, Python programlama dilinin temel özelliklerini ve pratik
kullanımını ele alan bir başlangıç noktası olacaktır.

Bu bölümünde, Python kurulumundan temel sözdizimine, tümleşik geliştirme ortamlarından (Integrated


Development Environment-IDE) sanal ortam (virtual environment) oluşturmaya kadar önemli konular ele alınmıştır.
Bu bölüm ilk adımdan itibaren, Python dilinin temel özelliklerini anlamak ve Python dilinin kullanım alanlarını
keşfetmek için bir rehber niteliğinde olacaktır. Ayrıca, Spyder gibi popüler bir tümleşik geliştirme ortamının nasıl
yükleneceği, Python kodlarının nasıl etkili bir şekilde düzenleneceği kavranacaktır. Modül, paket, kütüphane ve
çerçeve kavramları ile Python kodlarının nasıl daha verimli hale getirilebileceği açıklanmıştır. Python sanal
ortamların önemi vurgulanmıştır. Son olarak, Python dilindeki yardım kaynakları kullanımına yönelik açıklamalar
verilmiştir.

Bu bölümdeki konular, sade bir dille anlatılmış, ekran görüntüleri ve örneklerle desteklenerek okuyucuya
sunulmuştur Bu sayede, Python dünyasına adım atmak okuyucu açısından keyifli olacaktır. Bu ilk bölüm ile
Python’a ilişkin sağlam bir temel oluşturulması hedeflenmiştir.

1.1. Python Programlama Dilinin Genel Özellikleri


Python programlama dili Guido Van Rossum tarafından geliştirilmiş ve ilk sürümü 1990 tarihinde yayınlanmıştır.
Python adını, Guido’nun hayranı olduğu “The Monty Python's Flying Circus” adlı ünlü komedi dizisinden almıştır
(Lutz, 2011). Statista (2022) tarafından 2022 yılında dünya genelinde geliştiriciler arasında en çok kullanılan
programlama dili Javascript (%65.36), HTML/CSS (%55.08) ve SQL (49.43)’den sonra Python (%48.07) olmuştur.
Dolayısıyla Python için en popüler programlama dillerinden biridir demek yanlış olmaz.

Python Nesneye YönelimliProgramlama (Object Oriented Programming - OOP) dilidir. Nesneye yönelimli
programlama dili olması Python dilinin nesnelere (objects), sınıflara (classes) ve bu nesneler üzerinde
gerçekleştirilen işlemlere konsantre olduğunu ifade eder. Python dilinde her şey bir nesnedir, yani her varlık (entity)
bazı meta verilere (özelliklere, niteliklere, attributes) ve ilişkili metotlara (fonksiyonlara, methods) sahiptir anlamına
gelir (VanderPlas, 2016a). Bu özellik ve fonksiyonlara nokta (.) sözdizimi aracılığıyla erişilir. Miras alma (kalıtım,
inheritance), çok biçimlilik (polimorfizm, polymorphisms), kapsülleme (encapsulation) gibi gerçek dünya
varlıklarını programlamada temsil etmeyi, uygulamayı amaçlar. Nesneye yönelimli programlamanın ana fikri, veri ve
üzerinde çalışan fonksiyonları tek bir birim olarak birbirine bağlamaktır. Bu sayede, kodun başka hiçbir bölümü bu
veriye erişemeyecektir. Python dilinin nesneye yönelimli programlamaya yönelik özelliklerine Bölüm 7’de yer
verilmiştir.

Günümüze kadar pek çok programlama dili geliştirilmiştir ve halihazırda programcılar ihtiyaçları doğrultusunda
farklı programlama dillerini tercih edebilmektedir. C, C++, C# gibi diller birer derleyici (compiler) kullanır.
Derleyici, günlük İngilizce konuşma diline daha yakın olarak bilinen yüksek seviyeli (high-level) programlama
dillerini bilgisayarın anlayabileceği makine diline çevirir (Deitel & Deitel, 2010). Bu tür dillerde yazılan programın
çalıştırılabilmesi için kod dosyası yukarıdan aşağı derleyici tarafından okunur, eğer program kodunda hata varsa hata
mesajı tüm program tarandıktan sonra döndürülmektedir. Bir derleyicinin kaynak kodunu analiz etmesi çok zaman
alır; ancak, işlemi yürütmek için harcanan toplam süre çok daha hızlıdır (Bureau, 2019). Oysa, C, C++ gibi dillerin
aksine Python bir yorumlayıcı (interpreter) kullanır. Yorumlayıcılar, yüksek seviyeli diller ile yazılan kodların
makine diline çevrilmeden satır satır çalıştırılmasını sağlar (Deitel & Deitel, 2010). İlk hata ile karşılaşılıncaya kadar
program çevrilmeye devam eder. Herhangi bir hata tespit edilirse çalışma durdurulur ve dolayısıyla hatanın tespit
edilmesi ve giderilmesi (hata ayıklama) kolaylaşır (Bureau, 2019).
about:blank 4/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Python programlama dilinin öne çıkan özellikleri şöyle sıralanmıştır ([Link], 2023a):

• Çeşitli temel veri tipleri ve yapıları mevcuttur: sayılar (kayan noktalı (floating), karmaşık ve sınırsız uzunluklu uzun
tamsayılar), metinsel ifadeler (strings) (hem ASCII hem de Unicode), listeler (lists) ve sözlükler (dictionaries).

• Python, sınıf ve çoklu kalıtım ile nesneye yönelimli programlamayı destekler.

• Kod, modüller (modules) ve paketler (packages) halinde gruplandırılabilir.

• Dil, istisna durumların (exceptions) oluşturulmasını ve yakalanmasını destekleyerek daha temiz hata işleme sağlar.

• Veri tipleri güçlü ve dinamik olarak yazılır. Uyumsuz tipleri karıştırılması (örneğin metinsel bir ifadeye bir sayı
eklemeye çalışmak gibi) bir istisna durumun ortaya çıkmasına neden olur, bu nedenle hatalar daha erken yakalanır.

• Python, generators (Python’a özgü fonksiyonlar) ve list comprehensions (liste elemanları ile gerçekleştirilen
işlemlerin birden fazla satır kullanmak yerine tek satırda daha pratik biçimde gerçekleştirilmesi) gibi gelişmiş
programlama özellikleri içerir.

• Python dilinin otomatik bellek yönetimi, kodlamada belleği manuel olarak ayırma ve boşaltma zorunluluğunu
ortadan kaldırmaktadır.

Python özgür bir yazılım olarak adlandırılmaktadır, çünkü Python'ı indirmenin, kullanmanın veya bir uygulamaya
dâhil etmenin herhangi bir maliyeti yoktur. Python kodları dünyanın dört bir yanındaki programcılar tarafından
farklı görevler ve amaçlarda kullanılması için Kaggle, GitHub gibi platformlardan paylaşılmaktadır. Ayrıca Python
serbestçe değiştirilebilir ve yeniden dağıtılabilir, çünkü Python dili telif hakkıyla korunsa da açık kaynak (open-
source) lisanslıdır.

1.2. Python Dilinin Kullanım Alanları


Python kurulumu sırasında, Python ile hem kod yorumlayıcısı hem de işlemlerin yürütülmesini sağlayan birtakım
yerleşik standart kütüphaneler/paketler de yüklenmektedir. Ayrıca, Python üçüncü parti uygulama kütüphaneleri ile
genişletilebilir. Bu sayede, web sitesi yapımı, sayısal programlama, seri bağlantı noktası erişimi, oyun geliştirme ve
daha pek çok amaç için kullanılabilmektedir (Lutz, 2009).

Python programlama dili makine öğrenmesi, derin öğrenme, veri madenciliği ve yapay zekâ gibi veri bilimi
temelinde gerçekleştirilen veri ön-işleme, modelleme, model performans değerlendirme gibi analizlerde (ki bu alanda
R programlama dili ile çokça kıyaslanmaktadır) kullanılmaktadır (bknz. keras, scikit-learn, tensorflow, opencv
kütüphaneleri). Bu analizlere temel matematiksel ve istatistiksel hesaplamalar da dâhil edilebilir. Ayrıca birbirinden
kullanışlı grafiklerin hazırlanmasında araştırmacılara imkân tanır (bknz. matplotlib ve seaborn kütüphaneleri).

Python, yazılım geliştirme ve web programlama amacıyla kullanılabilmektedir. Web geliştirme, komut dosyası ve
araç oluşturma gibi pek çok uygulama için tercih edilmektedir ([Link], 2023a). Programlanabilir bir arayüz
sağlamak için bir uygulamaya da gömülebilir. Web sunucularına bağlanma, metin arama, dosya okuma ve değiştirme
gibi birçok yaygın programlama görevini destekleyen standart kütüphanelerle birlikte gelir. Web sitelerinden
sistematik biçimde veri çekme için de kullanılmaktadır (web scrapping/web crawling). Oyun endüstrisinde oyun
geliştirme için de Python tercih edilmektedir (bknz. pygame, panda3D, cocos2D kütüphaneleri). Sims 4, World of
Tanks, Civilization IV, Eve Online, Pirates of the Caribbean, Bridge Commander ve Battlefield 2 gibi popüler
oyunlar, çok çeşitli fonksiyon ve eklentiler için Python programlamayı kullanmaktadır (Costa, 2020;
[Link], 2021). Ses ve video uygulamaları da Python dilinin en şaşırtıcı uygulama alanları arasında
görülmektedir (bknz. dejavu, pyo, mingus, scipy, opencv kütüphaneleri) ([Link], 2021). Python ile
kodlanan uygulamalar arasında Netflix, Spotify ve YouTube gibi popüler uygulamalar yer alır.

Günümüzde Python programlama dilinden faydalanan bazı firmalar ve kullanım alanları şöyle sıralanabilir (Lutz,
2009): Google, web arama sistemlerinde, YouTube video paylaşım hizmetinin yazılmasında Python dilini
kullanmıştır. BitTorrent dosya paylaşım sistemi bir Python programıdır. Intel, Cisco, Hewlett-Packard, Seagate,
Qualcomm ve IBM, donanım testi için, Industrial Light & Magic, Pixar ve diğerleri, animasyon filmlerinin
üretiminde Python’ı kullanmaktadır. JPMorgan Chase, UBS, Getco ve Citadel, finansal piyasa tahmininde, NASA,
Los Alamos, Fermilab, JPL ve diğerleri bilimsel hesaplamalarda Python dilinden faydalanmaktadır. iRobot, ticari
robotik cihazlar geliştirmek için Python dilini kullanır. ESRI, popüler coğrafi bilgi sistemleri haritalama ürünleri için
bir son kullanıcı özelleştirme aracı olarak Python'u kullanmaktadır. NSA, kriptografi ve istihbarat analizi için
Python’ı kullanmaktadır. IronPort e-posta sunucusu ürününde Python kodları kullanılmıştır.

about:blank 5/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

1.3. Python Kurulumu


Python programlama dili Mac OS X, Windows, Linux ve Unix dâhil olmak üzere her ortamda çalışabilir, Rasberry Pi
ve Ardunio gibi uygulama geliştirme platformlarında da kullanılabilmektedir (Uğuz, 2021). Bu kitapta Windows
üzerindeki kurulum ve kullanımı dikkate alınmıştır. Python ile çalışmak için [Link] (2023b) adresinden işletim
sistemine uygun Python sürümü bilgisayara indirilebilir, yüklenebilir ve Python ile çalışmaya başlanabilir (bu kitap
hazırlanırken Python dilinin en güncel versiyonu 3.11.4 idi).

Kurulumun ilk adımında “Add [Link] to PATH” seçeneğinin seçili olmasına dikkat edilmelidir. Bu sayede,
kurulum tamamlandıktan sonra Python dilinin bir komut penceresinden çalıştırılması ve kullanılması mümkün
olacaktır. Bunun için Windows’ta Başlat menüsüne “cmd” yazarak bir komut dosyası açılması, ardından gelen siyah
ekrana “python” yazılması yeterli olacaktır.

Python kurulum aşamalarına ait ekran görüntüleri aşağıda sıralanmaktadır.

about:blank 6/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Kurulum tamamlandıktan sonra hem Python hem de IDLE (Windows’ta) Başlat Menüsü’nde listelenen programlar
arasında görülecektir. IDLE, Python kurulumu ile gelen basit ve temel bir geliştirme ortamıdır.

CPython, Python dilinin resmî web sitesinde yer alan dağıtımıdır (distribution). CPython, C programlama dilinde
yazılmış Python dilinin yorumlayıcısıdır. En sık kullanılan programlama dili uygulamasıdır ve fiili referans
uygulaması olarak kabul edilir. Bunun dışında CPython’a dayalı dağıtımlar da vardır (Python Software Foundation,
2023b): Jython, Python kodunun Java platformlarında yürütülmesini sağlayan Python programlama dilinin bir Java
uygulamasıdır. Ayrıca, tüm Java kütüphaneleri içe aktarılabilir ve dinamik olarak kullanılabilir. IronPython, dilden
bağımsız ve platformdan bağımsız uygulama geliştirme ve yürütme için bir standart olan (Ortak Dil Altyapısı
(Common Language Infrastructure- CLI) ile uyumlu bir Python uygulamasıdır. IronPython, C# ile yazılmıştır ve
Python kodunun .NET ve Mono gibi CLI uyumlu çalışma zamanı ortamlarında yürütülmesine izin verir. PyPy,
çeviriciler tarafından ilgili hedef dile (C, Java, C#) taşınan Python dilinin bir alt kümesi olan RPython'daki bir Python
uygulamasıdır. Sık kullanılan kodu çevirmek için çalışma zamanında bir JIT derleyicisi eklenebilir.

Farklı amaçlar için özelleştirilmiş, daha fazla Python kütüphanesi içeren ActiveState ActivePython, Anaconda,
Portable Python, Tiny Python, WinPython gibi dağıtımlar da mevcuttur. Ayrıca Python, iPhone, Android, Windows
Mobile, Nokia S60 ve diğerleri gibi bir dizi cep telefonu platformuna taşınmıştır.

1.4. Python ile “Merhaba Dünya!”


Temel Python yüklemesi çalışma ortamı olarak kodun yazılması ve çalıştırılmasını içeren bilgisayarın DOS ekranına
benzeyen siyah arka planlı temel bir konsol (console) arayüzü sunmaktadır.
about:blank 7/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Bu ekran karşınıza geldikten sonra, bir programlama dili yeni öğrenilmeye başlarken bir klasik haline gelen
“Merhaba Dünya!” yazısını yazdırabilirsiniz. Bunun için basitçe aşağıdaki print() fonksiyonunun yer aldığı kod satırı
kullanılabilir. Kod satırını yazdıktan sonra ardından klavyedeki “Enter” tuşuna basmak yeterli olacaktır.

Temel seviyede farklı örnekler için temel matematiksel işlemler de Python konsolda gerçekleştirilebilir.

Temel Python yorumlayıcısını açmak için Windows’ta CMD ekranına python yazılabilir. Arkadaki Python tarafından
sağlanan kod penceresi iken, ön tarafta yer alan Windows CMD ekranıdır. Bu ekranda da bir öncekine benzer şekilde
“Enter” tuşuna basılarak kod satırları çalıştırılabilir.

1.5. Python için Tümleşik Geliştirme Ortamları


Tümleşik Geliştirme Ortamı (Integrated Development Environment- IDE), program kodu yazarken birtakım
avantajlar sunan, grafik arayüzlü metin editörleridir. IDE kullanımı ile programcıların program kodlarını verimli
biçimde yazabilmeleri sağlanır. Farklı programlama dilleri için farklı IDE’ler bulunur. Python için 2023’ün en
popüler IDE’ler arasında IDLE, PyCharm, Visual Studio Code, Sublime Text 3, Atom, Jupyter, Spyder, PyDev,
Thonny ve Wing yer almaktadır (Gupta, 2023). Bunlar içinde basit ve temel geliştirme ortamı olan IDLE (Integrated
Development and Learning Environment) Python kurulumu ile halihazırda bilgisayara yüklenmektedir (Python
Software Foundation, 2023a). Bilgi düzeyi, kullanım amacı, eldeki donanım gibi faktörler seçenekler arasından en iyi
IDE tercihinde bulunulmasına yardımcı olacaktır. Bu kitapta Python için Spyder IDE kullanımı tercih edilmiştir.

1.6. Spyder’ın Yüklenmesi

about:blank 8/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Spyder (Scientific PYthon Development EnviRonment), Python için Python ile yazılmış ücretsiz ve açık kaynak bir
tümleşik geliştirme ortamıdır. Spyder’ı bağımsız yükleyici yardımı ile bilgisayara indirebilmek için
[Link] adresine gidilerek “Download” menü başlığına tıklanır ve işletim sistemine uygun
Spyder bilgisayara indirilir. Bu noktada, en son sürüm otomatik olarak bilgisayara indirilecektir. Spyder IDE
indirilirken kendi Python kurulumunu da yapmaktadır. Bu nedenle Bölüm 1.3’de verilen Python kurulumunun
gerçekleştirilmesi bir zorunluluk değildir. Bu ders kitabının yazıldığı süreçte Spyder’ın en güncel versiyon 5.4.2,
Spyder ile indirilen Python dilinin en güncel versiyonu ise 3.8.10’dur.

Kurulum aşamalarına ait ekran görüntüleri şöyle sıralanmaktadır.

about:blank 9/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Spyder yüklendikten sonra çalıştırdığınızda karşınıza gelecek ekran aşağıdaki gibidir.

Spyder Editörü yeni bir kaynak dosyasının oluşturulması, açılması ya da düzenlenmesini ve kodun çalıştırılmasını
sağlar. Kod yazarken, kodların renklendirilmesi, otomatik tamamlama gibi çeşitli faydalı özelliklerin desteklendiği
görülecektir.

IPython, Fernando Perez tarafından 2001’de geliştirilen, standart Python yorumlayıcısına göre zenginleştirilmiş bir
Python yorumlayıcısıdır (Pérez & Granger, 2007). IPython (Interactive Python) Console Python komutlarını
çalıştırabildiğiniz ve IPython yorumlayıcıları içindeki verilerle etkileşime geçebildiğiniz bir alandır. İster harici
yüklenmiş isterse de Spyder tarafından başlatılmış bir IPython konsolu; otomatik kod tamamlama, fonksiyonlar için
gerçek zamanlı ipucu sağlama, gelişmiş Spyder hata ayıklayıcı ile tam görsel kullanıcı arayüzü (Graphical User
Interface – GUI) entegrasyonu, birçok yerleşik ve üçüncü taraf Python nesnesi için GUI tabanlı düzenleyicilere sahip
değişken gezgini (variable explorer), Matplotlib grafiklerinin seçime bağlı olarak Spyder’ın Grafikler bölmesinde ya
da konsolda görüntülenmesi gibi özellikleri destekler. Ayrıca IPython, Python kodu için bir çekirdek (kernel) içerir.
Kernel, kullanıcının kodunu çalıştırmaya ve incelemeye yarar ([Link], 2023). IPython, Windows’ta CMD
ekranı kullanılarak da çalıştırılabilir. Bunun için CMD’ye ipython yazılması yeterlidir.

about:blank 10/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Değişken Gezgini (variable explorer) çalışırken oluşturduğunuz değişken, dizi, liste, fonksiyon gibi Python
nesnelerini görüp yönetmenize izin verir.

Grafikler (plots) alanı özellikle veri bilimi çalışmalarında sıklıkla kullanılan bir bölümdür. Oluşturulan grafiklerin
gösterildiği bölmedir.

Hata ayıklama mekanizması (debugging) bulunmaktadır. Böylelikle yazdığınız koda kesme noktaları
(breakpoint’ler) ekleyerek kodun yürütme akışının incelenmesi mümkün kılınır, olası hatalar okunabilir.

Ayrıca herhangi bir modül, sınıf, fonksiyon ya da metoda ilişkin merak edilenler yardım (help) bölümü kullanılarak
öğrenilebilir. Örneğin; bir fonksiyonun ne işe yaradığı, hangi veri tipinde parametreler aldığı ve nasıl bir çıktı ürettiği
gibi.

Spyder IDE hakkında daha detaylı bilgi için bknz. ([Link], 2022).

Bölüm 1.4’te verilen, ekrana “Merhaba Dünya!” yazdırma alıştırması, Spyder’daki Console kullanılarak da
yapılabilir. Bu sırada yazının renklendirilmesi, otomatik tamamlama, fonksiyonun kullanımı hakkında ipucu verme
gibi avantajlar da deneyimlenmiş olacaktır.

Spyder editöründeki Python Console’da da “Enter” tuşu ile kod satırları çalıştırılabilir.

1.7. Kaynak Kod ve Çalıştırılabilir Dosya


Herhangi bir programlama dili ile yazılan, program kodlarının yer aldığı derlenmemiş programa kaynak kod (source
code) denmektedir (Çobanoğlu, 2021). Bölüm 1.4 ve Bölüm 1.6’te verilen örnekler yalnızca Python konsolu
kullanılarak gerçekleştirilmiştir. Oysa Python için de kaynak kod dosyası oluşturulabilir. Bunun için Spyder’ın sol
bölmesi kullanılacaktır. Spyder açıldıktan sonra, varsayılan olarak bilgisayarda henüz herhangi bir dosya yoluna
kaydedilmemiş .py uzantılı bir dosyanın görüntülenmesini sağlar. Tahmin edileceği gibi Python betik (script)
dosyaları .py uzantılıdır. Şimdiye kadar Python ya da IPython yorumlayıcısı kullanılarak kodların nasıl
çalıştırılabileceği gösterilmişti; ancak daha karmaşık programlarda bu tür bir ortam yeterli gelmeyebilir. Program
kodlarının bir Python betik dosyasına yazarak daha sonra yeniden çalıştırılması ve kullanılması için bilgisayarda
istenilen bir konumda saklanabilir. Normalde bir metin dosyasına Python kodlarının yazmak ve ardından .py uzantısı
ile saklamak da benzer işi görecektir. Farklı bir Python dosyası oluşturmak için üst menüde File à New File
seçenekleri ya da yine üst menüde dosya simgesi (New File: Ctrl+N) tıklanabilir.

Açılan .py uzantılı dosyaya basitçe aşağıdaki Python kodu yazılsın ve dosya masaüstüne kaydedilsin. Kaydetmek
için yine üst menüde yer alan File à Save (Ctrl+S) ya da Save as başlıkları kullanılabilir. Save (kaydet), o anki
çalışma klasörüne, Save as (farklı kaydet) ise bir kayıt penceresi açarak bilgisayarda istenilen dosya konumuna
dosyanın kaydedilmesini sağlayacaktır. Daha sonra kaydedilen bu dosyayı açmak için üst menüden File à Open
seçeneği ya da yine üst menüdeki klasör simgesi seçilerek istenen .py uzantılı dosya açılabilecektir.

about:blank 11/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Python Console’dan farklı olarak .py uzantılı betik dosyasına yazılan kodlar klavyedeki “F9 tuşu” ile çalıştırılır.
İlgili kod satırına imlecin getirilmesi ya da ilgili kod satırı veya kod bloğunun seçilmesiyle F9 tuşlanır ve çalıştırılır.
Tools à Preferences à Keyboard shortcuts kullanılarak açılan ekranda “run selection” için belirlenmiş olan klavye
kısayolu değiştirilebilir. Örneğin aşağıdaki ekran görüntüsünde “run selection” için F9 yerine “Ctrl+Enter” tuşları
kullanılmıştır. Benzer işlem için üst menüde bulunan “seçimi ya da mevcut satırı çalıştır” (run selection or current
line) düğmesi de kullanılabilir .

Özellikle birden fazla kod satırının seçilmesi söz konusu olduğunda, iki ya da daha fazla satıra taşan kod satırı olduğu
zaman tüm kod bloğunun seçildikten sonra çalıştırıldığına emin olunması gereklidir, aksi halde uyarı mesajı ile
karşılaşılacaktır.

Yalnızca Python ile değil, tüm programlama dilleri ile çalışılırken geliştirilen program kodları ve bu kodlarla
bağlantılı tüm diğer dosyaların (örneğin; görseller, veri setleri vb.) tek bir klasörde olması tercih edilmelidir. Bunun
için bir çalışma klasörünün (working directory) belirlenmesi önerilir. Spyder’da varsayılan çalışma klasörü üst
menüde sağ tarafta “C:\Users\elif” olarak verilmiştir. Bu çalışma klasörü yolu istenildiği gibi ayarlanabilir.

Örneğin; Bölüm 1.6’daki alıştırma [Link] olarak Masaüstüne (Desktop) kaydedilsin. Daha sonra kaydedilen bu
Python dosyası üst menüde yer alan Oynat (Play) düğmesi ile baştan sona kadar çalıştırılabilir. Tüm dosyada
çalıştırılabilir yalnızca tek satır yazdırma komutu olduğundan, konsolda, dosyadaki kodların çalıştırılmasını sağlayan
Python kodu ve program çıktısı belirecektir.

Benzer işlemler CMD ekranından ise aşağıdaki gibi yapılabilir:

about:blank 12/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Python, betik dosyasını çalıştırırken öncelikle kaynak kod “byte code” olarak derlenir, ardından da Python Sanal
Makinesine (Python Virtual Machine - PVM) yönlendirilir (Lutz, 2009). Derleme yalnızca bir çeviri adımıdır ve byte
kodu, kaynak kodun daha düşük düzeyde, platformdan bağımsız bir temsilidir. Python Sanal Makinesi, Python dilinin
çalışma zamanı (runtime) motorudur, her zaman Python sisteminin bir parçası olarak bulunur (ayrıca yüklenmesi
gerekmez) ve betikleri gerçekten çalıştıran bileşendir. Teknik olarak, "Python yorumlayıcısı" denen şeyin son
adımıdır.

Bir programlama dili ile yazılmış olan kaynak kodun derlenmesi sonucu, makine diline çevrilmiş, çalışmaya hazır
programa çalıştırılabilir dosya (executable file) denir (Çobanoğlu, 2021). Bu tür dosyaların uzantısı .exe’dir. Python
ile yazılmış programların herhangi bir Python yorumlayıcısı veya herhangi bir modül yüklemeden çalıştırılması
PyInstaller gibi programlar ile sağlanabilir ([Link], 2023).

1.8. Modül, Paket, Kütüphane ve Çerçeve


Python betik dosyaları dışında, Python kodlarının ve bu kodların yazıldığı betik dosyalarının bir araya gelme
biçimlerine göre birbirinden farklı adlandırılan yeni yapılar meydana gelmiştir. Python programlamada literatürde
sıklıkla karşılaşılabilecek bu yapılar şu şekilde açıklanabilir (Koidan, 2021):

.py uzantılı dosyalara kaydedilen birbiriyle ilişkili bir grup Python kodu modül (module) diye adlandırılmaktadır
(örneğin; random, math, html, datetime, re modülleri). Bir modülün içine, fonksiyonlar, sınıflar ya da değişkenler
yerleştirilebilmektedir. Örneğin; Python ile math modülünü çağırmak için aşağıdaki kod satırını kullanmak yeterlidir
(Hjelle, 2020).

Modül çağrıldıktan sonra artık içinde yer alan tüm fonksiyon, değişken vb. unsurlar kullanılabilir hale gelmiştir
demektir. Genellikle bir betik dosyasının en başında gerekli modül çağırma işlemleri yapılır. Örneğin; math
modülünde tanımlı pi sayısını kullanabilmek için modül çağırıldıktan sonra aşağıdaki kod satırı yazılabilir.

Eğer yalnızca math modülünün içinden pi sayısını tutan değişkenin getirilmesi isteniyorsa, aşağıdaki gibi o değişkene
özel bir çağırma işlemi yapılır.

Bir modül çağırılırken yeniden adlandırılabilmektedir. math modülü aşağıda m olarak yeniden adlandırılmıştır.
Dolayısıyla içinden bir unsura erişilmek istendiğinde artık math. değil m. ifadesi kullanılacaktır.

Çalışma klasörü ile ilgili işlemlerinin aşağıdaki kod satırları yardımı ile yönetilmesi mümkündür. import ile os
modülü çağrılır. Ardından os modülündeki getcwd() fonksiyonu yardımı ile mevcut çalışma klasörü yolu
(“C:\Users\elif”) alınır ve bu bilgi calismaKlasoru değişkeninde tutulur. Çalışma klasörünün dosya yolu print()
fonksiyonu ile ekrana yazdırılır. Eğer, çalışma klasörünün “G:\My Drive\MYYBS\2023\auzefKitaplar\python\kodlar”
olarak belirlenmesi isteniyorsa, aşağıdaki gibi yeni çalışma klasörü yolu os modülünün chdir() fonksiyonuna verilir.
Bu noktada, editörün sağ üst köşesine bakılacak olursa, çalışma klasörünün değiştiği görülebilir. Aşağıdaki kod
bloğunda değişiklikler sonrası çalışma klasörünün yolu tekrar ekrana yazdırılmıştır. İlgili değişiklik buradan da belli
olacaktır.

about:blank 13/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Python paketleri (packages), temel olarak bir modül koleksiyonunun bir dizinidir (örneğin; NumPy, pandas, pytest
paketleri). Paketler, modül ad alanının (namespace) hiyerarşik yapısına olanak sağlar. Bir sabit sürücüdeki dosyalar
nasıl klasörler ve alt klasörler halinde organize ediliyorsa, modüller de paketler ve alt paketler halinde organize
edilebilir.

Kütüpane (library), yeniden kullanılabilir bir kod parçasına atıfta bulunan geniş anlamlı bir terimdir (örneğin;
matplotlib, pytorch, pygame kütüphaneleri). Genellikle bir Python kütüphanesi, ilgili modüller ve paketlerden oluşan
bir koleksiyon içerir. Python dilinde “paket” ve "kütüphane" terimleri birbirinin yerine kullanılabilmektedir, çünkü
paketler ayrıca modüller ve diğer paketleri (alt paketler) içerebilir. Bununla birlikte, genellikle bir paket bir modüller
koleksiyonu, bir kütüphane de bir paketler koleksiyonu olarak görülmektedir.

Python çerçeveleri (frameworks), kütüphanelere benzer şekilde programcıların geliştirme sürecini hızlı bir şekilde
izlemesine yardımcı olan bir modüller ve paketler koleksiyonudur. Ayrıca kütüphaneler belirli işlemleri
gerçekleştiren paketleri içerirken, çerçeveler uygulamanın temel akışını ve mimarisini içerir (örneğin; django, flask
ve bottle çatıları).

Python programlama dilinde özellikle standart kütüphane dışında farklı bir kütüphane kurulmak istenirse bunu
gerçekleştirmenin en kolay yollarından biri pip kullanımıdır. Elbette öncelikle pip’in Windows’a yüklenmesi
gerekmektedir. Bunun için (GeeksforGeeks, 2020):

(1) [Link] ([Link] dosyası indirilir ve Python dilinin kurulu olduğu dizine
kopyalanır.

(2) Komut satırındaki dizinin geçerli yolu, ilk adımda kaydedilen dosyanın bulunduğu dizinin yoluyla değiştirilir.

(3) [Link], kullanıcıların Python ortamlarına pip yüklemesine olanak tanıyan bir önyükleme betiğidir ve aşağıda
verilen komut satırı çalıştırılır:

(4) Bir önceki adımdaki komut satırı çalıştırıldığında bilgisayara pip yüklenene kadar beklenir.

1.9. Python Sanal Ortamı


Python sanal ortamı (virtual environment), bir Python kodunu çalıştırmak için yalıtılmış bir ortamda ihtiyaç duyulan
her şeyi sunan bir klasör yapısıdır (Breuss, 2017). Bir Python sanal ortamı; bir yorumlayıcı, bir kütüphane (tipik
olarak Python Standart Kütüphanesi) ve bir dizi kurulu paketten oluşur (Microsoft, 2022). Python sanal ortamı
kullanma nedenleri şu şekilde sıralanabilir (Breuss, 2017):

1) Python kullanılarak önceki bölümlerde bahsedildiği üzere çok farklı amaçlar için programlar yazabilir ve projeler
oluşturulabilir. Bu süreçte programlama amacına yönelik farklı kütüphane ve paketlere ihtiyaç duyulabilir. Hatta aynı
paketin farklı versiyonları bile üzerinde çalışılan projeler için değişiklik gösterebilir. Örneğin; Python dilinde özel
olarak belirtilmediği sürece paket yüklemek için gereken pip kurulan tüm harici paketleri temel Python

about:blank 14/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

kurulumundaki site-packages/ adlı bir klasöre yerleştirecektir. Python sanal ortamı, projeye göre farklı paketlerle,
aynı kütüphanenin iki farklı sürümü ile çalışılmasına imkân tanır.

2) Proje paket bağımlılıklarının kolaylıkla keşfedilebilmesini sağlar ve olası bir paylaşım durumunu kolay hale
getirir.

3) Çoklu çalışma ortamlarında klasör bazında kullanıcı yetkilendirmeleri ile karşılaşılabilir. Bu tür durumlarda yeni
bir paket yüklerken Python sanal ortamı yetki probleminin ortadan kalkmasını sağlar.

4) Linux ve macOS işletim sisteminin kendi iç işlemlerinde kullandığı bir Python versiyonu ile gelmektedir. Eğer
yeni yüklenecek paketler bu Python global ortamına yüklenirse, işletim sistemi tarafından kullanılan diğer paketler
ile karışır. Bu karışıklık, işletim sistemi için önem arz eden işlemler için beklenmedik yan etkilere yol açabilir.
Ayrıca, işletim sistemindeki bir güncelleme Python çalışmalarında kullanılan paketlere etki edebilecektir.

Spyder’da bir Python sanal ortamı oluşturmak için Terminal ekranı kullanılabilir. Ekran görüntüsünde çalışma
klasörü C:\Users\elif\Desktop\projem olarak belirlenmiştir. Terminal penceresinin sağ üst köşesinde yer alan +
sembolüne tıklanırsa, Terminal dizini ilgili çalışma klasöründe açılacaktır.

Python sanal ortamı oluşturmak için aşağıdaki kod bloğunda yer alan ilk satır kullanılır. Böylelikle my_virt_env adlı
Python sanal ortamı projem adlı bu klasörün içinde oluşturulacaktır. İlgili sanal ortam içinde çalışmak için sanal
ortam ikinci satırdaki kod ile aktive edilir. Sanal ortam aktive edildiğinde Terminalde yeni satır başında parantez
içinde sanal ortamın adı (my_virt_env) yazacaktır. Örneğin; Matplotlib gibi ek bir paket yüklenmek istenirse üçüncü
satırdaki kod satırı çalıştırılır. İlgili sanal ortamda çalışma bitirildiğinde dördüncü satırda yer alan deactivate
komutunun çalıştırılması yeterlidir. Sanal ortamın silinmesi için ilgili dizine gidilerek sanal ortam için oluşturulan
klasör silinebilir.

about:blank 15/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

1.10. Spyder’da Python Ortamını Değiştirme


Önceki bölümlerde bahsedildiği üzere, Spyder’ın varsayılan yüklemesi ile beraberinde Python 3.8.10
yüklenmektedir. Dolayısıyla Spyder açıldığında Console’da varsayılan olarak Spyder ile gelen Python yorumlayıcısı
(Default seçeneği) kullanılmaktadır; ancak farklı Python kurulumları ya da farklı Python sanal ortamlarına ihtiyaç
duyulabilir. Dolayısıyla da farklı Python yorumlayıcıları ile çalışılmak istenebilir.

Örneğin; Bölüm 1.3’te yüklenen Python 3.11.4 ile gelen farklı bir Python yorumlayıcısı ile çalışmak için sırasıyla şu
adımlar izlenir (Panwar, 2022):

1) Spyder'ın PYTHONPATH yöneticisine Spyder’da kullanılmak istenen Python kurulumunun (3.11.4) dosya yolu
eklenmelidir. Bunun için Başlat’ta Python dilinin dosya konumu açılarak Python 3.11 (64-bit) dosyasına sağ tıklanır
ve özellikleri açılır. Açılan ekranda Shortcut sekmesinde dosya yolu
(C:\Users\elif\AppData\Local\Programs\Python\Python311) kopyalanır (Bu dosya yolu sizde kurulan klasöre göre
farklılık gösterebilir). Sonrasında Spyder’daki üst menüde Tools à PYTHONPATH MANAGER açılarak dosya
yolu eklenir.

2) Spyder’daki varsayılan Python yorumlayıcısı değiştirilir. Bunun için Spyder üst menüdeki Tools à Preferences à
Python Interpreter à Use the following Python interpreter alanında ilk adımda bulunan Python dosya yolu
(C:\Users\elif\AppData\Local\Programs\Python\Python311) seçilir.

about:blank 16/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

3) Bu işlem gerçekleştirildikten sonra Python kernelinin (çekirdeği) yeniden başlatılması gerekmektedir. Bunun için
Spyder üst menüsündeki Consoles à Restart kernel seçeneği kullanılabilir. Spyder konsolunuzu çalıştırmak
istediğiniz çalışma ortamında spyder-kernels paketinin desteklenen bir sürümünün bulunmasını gerektirir. Bu paket
kurulu değilse, aşağıdaki hata mesajı görüntülenecektir.

about:blank 17/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Hata mesajına istinaden Spyder kernellerinin yüklenebilmesi için bilgisayardan komut istemi penceresi (CMD) açılır
ve aşağıdaki kod satırı çalıştırılır.

Bu örnekte, kullanmak istenilen Python sürümü C:\Users\elif dosya yolunda olduğundan, CMD’de doğrudan spyder-
kernel yükleme işlemi gerçekleştirilmiştir; ancak Python yorumlayıcısı, bilgisayarda masaüstünde çalışılan proje için
oluşturulan bir sanal ortam içinde de bulunabilirdi (C:\Users\elif\Desktop\projem\my_virt_env\Scripts). Böyle bir
durumda, CMD penceresinde ilgili dizine (C:\Users\elif\Desktop\projem) inilerek (cd …) sanal ortam aktif hale
getirilmeli (my_virt_env\Scripts\activate), ardından spyder-kernel yükleme adımı gerçekleştirilmelidir.

Yükleme tamamlandıktan sonra değişikliklerin yansıtılabilmesi için Spyder yeniden başlatılır. Spyder açıldığında
Console-un Python dilinin 3.8.10 sürümü yerine 3.11.4 sürümünü kullanıldığı görülecektir.

about:blank 18/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

1.11. Python Dilinde Yardım


Python dilinde kullanılan nesneler, fonksiyonlar vb. hakkında yardım almak için help() fonksiyonu
kullanılabilmektedir. Örneğin; toplama için kullanılan sum() fonksiyonu hakkında yardım alınması istenirse
help(sum) yazılabilir. Sum?? ifadesi de aynı sonucu verecektir. Yardım alınması istenilen komut seçilip Ctrl+I
tıklanırsa editörün sağ üst tarafında yer alan Yardım penceresi açılacaktır.

Ayrıca, daha önce de belirtildiği gibi Python dilinin geniş bir kullanıcı/geliştirici topluluğu bulunmaktadır.
Dolayısıyla, internette birçok web sitesi ve forumda Python’a ilişkin kod örnekleri, kod dosyaları paylaşılmakta,
araştırmacıların sorduğu sorulara ilişkin dünyanın birçok yerinden araştırmacıların verdiği cevaplar yer almaktadır.

Bölüm Özeti
Bu bölümde Python programlama dilinin temelleri okuyucuya sunulmuştur. Python dilinin hangi işletim sistemleri ve
platformlarda çalıştığı, Python dağıtımları ve tümleşik geliştirme ortamları konusunda bilgiler verilmiştir. Python
dilinin ve Spyder IDE’nin kurulumu adım adım açıklanmıştır. Spyder IDE’nin arayüzünde yer alan paneller ve bu
panellerin görevleri tanıtılmıştır. Okuyucular, bölümdeki talimatları izleyerek ilk Python kodlarını yazmış, bir Python
betik dosyası oluşturmuş, kaydetmiş ve çalıştırmıştır. Derleyici ve yorumlayıcı arasındaki farklara değinilmiş ve son
about:blank 19/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

olarak Python dilinin bir betik dosyasını çalıştırma süreci anlatılmıştır. Ayrıca, modül, paket, kütüphane ve çerçeve
kavramları ve Python sanal ortamı bölümde ele alınan önemli konulardan bazılarıdır. Bölüm, Python dilinde yardım
kaynaklarının nasıl kullanılacağının anlatımıyla sonlandırılmıştır.

Kaynakça
Amos, D. (2018). Object-Oriented Programming (OOP) in Python 3. [Link]
oriented-programming/

Breuss, M. (2017). Python Virtual Environments: A Primer. RealPython. [Link]


environments-a-primer/

Brownlee, J. (2016, May 10). How To Load Machine Learning Data in Python. [Link].
[Link]

Bureau, I. (2019). Difference between Compiler and Interpreter. Business Insider.


[Link]

Çobanoğlu, B. (2021). Herkes İçin Python (3rd ed.). Pusula 20 Teknoloji ve Yayıncılık A.Ş.

Costa, C. D. (2020, November 23). Top 16 Python Applications in Real-World. Medium.


[Link]

Deitel, H. M., & Deitel, P. J. (2010). C ve C++ (M. Zavrak, E. Aksoy, & H. N. Karaca, Trans.; 3rd ed.). Sistem
Yayıncılık.

GeeksforGeeks. (2016, May 16). Python OOPs Concepts. GeeksforGeeks. [Link]


oops-concepts/

GeeksforGeeks. (2020, January 18). How to Install PIP on Windows ? GeeksforGeeks.


[Link]

[Link]. (2020). Memory Management in Python. [Link]


in-python/

[Link]. (2021, October 22). Top 10 Python Applications in Real World. GeeksforGeeks.
[Link]

Gupta, A. (2023). Top 10 Python IDEs in 2023: Choosing The Best One. [Link].
[Link]

Harris, C. R., Millman, K. J., Walt, S. J. van der, Gommers, R., Virtanen, P., Cournapeau, D., Wieser, E., Taylor, J.,
Berg, S., Smith, N. J., Kern, R., Picus, M., Hoyer, S., Kerkwijk, M. H. van, Brett, M., Haldane, A., Río, J. F. del,
Wiebe, M., Peterson, P., … Oliphant, T. E. (2020). Array programming with NumPy. Nature, 585(7825), 357–362.
[Link]

Hjelle, G. A. (2020). Python import: Advanced Techniques and Tips. [Link]

[Link]. (2023). Making kernels for IPython—IPython 3.2.1 documentation. [Link]


doc/3/development/[Link]

Jeevan, M. (2022). How to Select Rows and Columns in Pandas Using [ ], .loc, iloc, .at and .iat. KDnuggets.
[Link]

Jones, L. (2019). Pointers in Python: What’s the Point? – Real Python. [Link]

Koidan, K. (2021, July 15). Difference Between Python Modules, Packages, Libraries, and Frameworks.
[Link]. [Link]

Lutz, M. (2009). Learning Python (4th ed.). O’Reilly Media.

Lutz, M. (2011). Programming Python (4th ed.). O’Reilly. [Link]


python-second/0596000855/[Link]

about:blank 20/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Mathew, S. T. (2021). Python Fundamentals for Everybody—Type Conversion vs Type Coercion.


[Link]
34234e99c9c4

McKinney, W. (2010). Data Structures for Statistical Computing in Python. In S. van der Walt & J. Millman (Eds.),
Proceedings of the 9th Python in Science Conference (pp. 56–61). [Link]

McKinney, W. (2012). Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython (1st ed.).
O’Reilly Media.

Microsoft. (2022). How to create and manage Python environments in Visual Studio. [Link]
us/visualstudio/python/managing-python-environments-in-visual-studio?view=vs-2022

Panwar, P. (2022). Use existing Python packages with Spyder 5. [Link]


spyder5/

Pérez, F., & Granger, B. E. (2007). IPython: A System for Interactive Scientific Computing. Computing in Science
and Engineering, 9(3), 21–29. [Link]

Pozo Ramos, L. (2023). Python’s del: Remove References From Scopes and Containers.
[Link]

[Link]. (2023). Python Object Oriented Programming. [Link]


programming/object-oriented-programming

[Link]. (2023). PyInstaller Manual—PyInstaller 5.8.0 documentation. [Link]

Python Software Foundation. (2023a). IDLE. Python Documentation. [Link]

Python Software Foundation. (2023b). Python a programming language changes the world Final Production Content
Case Studies & Success Stories. [Link]
1-final-content-preview

[Link]. (2023a, February 15). Free Python Tutorial For Beginners: Learn Python. Python Land.
[Link]

[Link]. (2023b, February 15). Welcome to [Link]. [Link]. [Link]

Sawant, S. (2021, February 17). Semicolon in Python—AskPython. [Link]


python

Singhal, B. (2017). Iris Dataset. Mendeley Data, V1. [Link]

[Link]. (2023). Pandas Difference Between loc[] vs iloc[]. [Link].


[Link]

[Link]. (2022). Home—Spyder IDE. [Link]

Statista. (2022). Most used languages among software developers globally 2022. Statista.
[Link]

team, T. pandas development. (2020). pandas-dev/pandas: Pandas (latest) [Computer software]. Zenodo.
[Link]

Uğuz, S. (2021). Makine Öğrenmesi: Teorik Yönleri ve Pyhton Uygulamaları İle Bir Yapay Zeka Ekolü (2nd ed.).
Nobel Akademik Yayıncılık.

Uzun, E. (2023). Temel Operatörler. [Link]

VanderPlas, J. (2016a). Basic Python Semantics: Variables and Objects. In Whirlwind Tour of Python. O’Reilly
Media, Inc.
[Link]

about:blank 21/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

VanderPlas, J. (2016b). Built-In Data Structures. In Whirlwind Tour of Python. O’Reilly Media, Inc.
[Link]
[Link]

VanderPlas, J. (2016c). Defining and Using Functions. In Whirlwind Tour of Python. O’Reilly Media, Inc.
[Link]
[Link]

VanderPlas, J. (2016d). Iterators. In Whirlwind Tour of Python. O’Reilly Media, Inc.


[Link]
[Link]

VanderPlas, J. (2016e). Python Data Science Handbook: Essential Tools for Working With Data (1st ed.). O’Reilly
Media.

VanTol, A. (2019). Memory Management in Python – Real Python. [Link]


management/

vegibit. (2023). Type Coercion Vs Type Casting In Python. [Link]


python/

[Link]. (2023). [Link]. [Link]

[Link]. (2023a). Beginners Guide/Overview—Python Wiki.


[Link]

[Link]. (2023b). Python Implementations. [Link]

Ünite Soruları
Soru-1 :

Python programlama dilinin genel özellikleri ile ilgili aşağıda verilenlerden hangisi doğrudur?

(Çoktan Seçmeli)

(A) Python nesne yönelimli bir programlama dilidir.

(B) Python yalnızca web geliştirme alanında kullanılır.

(C) Python, düşük seviyeli bir dildir.

(D) Python, sadece Linux ve Ubuntu işletim sistemlerinde çalışabilir.

(E) Python dilinin temel sözdizimi, diğer programlama dillerine benzemez.

Cevap-1 :

Python nesne yönelimli bir programlama dilidir.

Soru-2 :

Python kurulumu ile ilgili hangisi doğrudur?

(Çoktan Seçmeli)

(A) Python yalnızca macOS üzerinde kurulabilir.

about:blank 22/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(B) Python dilinin farklı versiyonlarından birini seçerken, projenin gereksinimlerini dikkate almak önemlidir.

(C) Python dilinin yalnızca online olarak çalışan versiyonları vardır, indirmeye gerek yoktur.

(D) Windows’ta Python kurulumu işletim sistemiyle birlikte hazır gelir.

(E) Python tamamen ticari bir yazılımdır.

Cevap-2 :

Python dilinin farklı versiyonlarından birini seçerken, projenin gereksinimlerini dikkate almak önemlidir.

Soru-3 :

Kaynak kod ve çalıştırılabilir dosya ile ilgili hangisi doğrudur?

(Çoktan Seçmeli)

(A) Python kaynak kod dosyalarının uzantısı genellikle ".pyc" şeklindedir.

(B) Python kaynak kodlarını çalıştırmak için python dosya_adi.py komutu kullanılır.

(C) Çalıştırılabilir dosyalar, Python yorumlayıcısı ile kaynak kod dosyasına dönüştürülür.

(D) Python kaynak kodu, çalıştırılabilir dosyaya dönüştürüldüğünde her zaman daha hızlı çalışır.

(E) Python kaynak kodunu çalıştırmak için her zaman bir tümleşik geliştirme ortamı (IDE) kullanmak gereklidir.

Cevap-3 :

Python kaynak kodlarını çalıştırmak için python dosya_adi.py komutu kullanılır.

Soru-4 :

Spyder’da Python ortamını değiştirme konusunda aşağıdakilerden hangisi doğrudur?

(Çoktan Seçmeli)

(A) Spyder IDE içinde Python sanal ortamını değiştirmenin avantajı, farklı projelerde farklı paket ve kütüphaneleri
kullanabilme esnekliğidir.

(B) Spyder, Python sanal ortamlarını yönetme özelliğine sahip değildir.

(C) Python sanal ortamını değiştirmek, bilgisayarınıza başka bir Python sürümü yüklemek ile eşdeğerdir.

(D) Spyder’da Python sanal ortamını değiştirmek için ekstra eklentiler yüklenmelidir.

(E) Python sanal ortamını değiştirmek, Spyder’ın performansını olumsuz etkiler.

Cevap-4 :

Spyder IDE içinde Python sanal ortamını değiştirmenin avantajı, farklı projelerde farklı paket ve kütüphaneleri
kullanabilme esnekliğidir.

Soru-5 :

Python yardım kaynakları konusunda aşağıdakilerden hangisi doğrudur?

(Çoktan Seçmeli)

about:blank 23/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(A) Python yardım desteği içermez.

(B) Python dilinin yardım taleplerine cevap veren aktif bir topluluğu mevcut değildir.

(C) Python ile ilgili internetteki kaynaklar oldukça kısıtlıdır.

(D) Python dilinde yardım alınmak istenen fonksiyonun yanına ??? eklenerek fonksiyonla ilgili yardımcı bilgilere
ulaşılabilir.

(E) Python belgelerinin yanı sıra, help() fonksiyonu kullanılarak yardım alınabilir.

Cevap-5 :

Python belgelerinin yanı sıra, help() fonksiyonu kullanılarak yardım alınabilir.

Soru-6 :

Aşağıdakilerden hangisi Python IDE’lerinden biri değildir?

(Çoktan Seçmeli)

(A) Spyder

(B) Jupyter

(C) CPython

(D) Thonny

(E) Wing

Cevap-6 :

CPython

Soru-7 :

Aşağıdakilerden hangisi Python dilinin geliştiricisidir?

(Çoktan Seçmeli)

(A) Mark Zuckerberg

(B) Yann LeCun

(C) Geoffrey Hinton

(D) Guido Van Rossum

(E) Elon Musk

Cevap-7 :

Guido Van Rossum

Soru-8 :

Spyder editöründe aşağıdakilerden hangisi bulunur?

(Çoktan Seçmeli)

about:blank 24/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(A) Tanımlanan nesnelerin görülebileceği pencere.

(B) Yardım dokümanlarını gösteren pencere.

(C) Dosyaların görülebileceği pencere.

(D) Python Console

(E) Hepsi

Cevap-8 :

Hepsi

Soru-9 :

Spyder’da Python yorumlayıcısını değiştirmek için aşağıdaki seçeneklerin hangisi kullanılabilir?

(Çoktan Seçmeli)

(A) Tools à Preferences à Python Interpreter.

(B) File à Open

(C) View à Panes à Help

(D) Consoles à Connect to existing kernel

(E) Help à Troubleshooting

Cevap-9 :

Tools à Preferences à Python Interpreter.

Soru-10 :

Aşağıdaki seçeneklerden hangisinde bir kod satırının Spyder IDE ile çalıştırılabilmesi için varsayılan klavye tuşu
verilmiştir?

(Çoktan Seçmeli)

(A) Enter

(B) Alt-Enter

(C) F2

(D) F9

(E) F11

Cevap-10 :

F9

about:blank 25/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

2. DEĞİŞKENLER VE VERİ TİPLERİ


Bölümle İlgili Özlü Söz
Programlamada zor olan problem çözmek değil hangi problemin çözüleceğine karar vermektir.

Paul Graham, Bilgisayar Bilimci

Kazanımlar
1. Değişken kavramını anlar, işaretçi ve literal kavramlarını bilir ve nasıl kullanıldığını kavrar.

2. Bilgisayar belleğinin temel çalışma prensiplerini anlar ve Python bellek yönetimi sürecini bilir.

3. Python programlama dilindeki temel veri tiplerinin (örneğin, int, float, string, bool, NoneType) neler olduğunu
bilir, bu veri tiplerinin nasıl tanımlandığını ve kullanıldığını kavrar.

4. Python matematiksel, atama, bitsel işlem, karşılaştırma, mantıksal, üyelik ve kimlik operatörlerinin nasıl
kullanıldığını bilir, bu operatörlerin farklı veri tipleri üzerinde nasıl işlem yaptığını anlar.

5. Açık (explicit) ve örtülü (implicit) veri tipi dönüşümünün ne olduğunu anlar, veri tipleri arasında dönüşüm
yapmanın nasıl gerçekleştiğini öğrenir, uygun veri tipi dönüşümünü avantaj ve dezavantajları ile değerlendirerek
kullanabilir.

6. Değişir (mutable) ve değişmez (immutable) nesnelerin ne olduğunu kavrar, hangi veri tipleri ve veri yapılarının
değişir veya değişmez olduğunu bilir, değişir ve değişmez nesneleri uygun biçimde kullanabilir.

Birlikte Düşünelim
1. Değişken nedir? Pyhton’da bir değişken nasıl tanımlanır?

2. İşaretçiler (pointers) nedir ve hangi durumlarda kullanılırlar?

3. Literal ifadeler nedir? Örnek veriniz.

4. Bilgisayarda bellek yönetimi nasıl gerçekleşir?

5. Python dilinin bilgisayar bellek yönetimi sürecindeki rolü nedir?

6. Python programlama dilinde hangi temel veri tipleri bulunur? Her birinin özellikleri nelerdir?

7. Veri tipleri arasında kaç türlü dönüşüm yapılabilir?

8. Python dilinde kullanılan operatörler nelerdir?

9. Açık ve örtülü veri tipi dönüşümü arasındaki fark nedir?

10. Hangi durumlarda açık, hangi durumlarda kapalı dönüşüm yapmanız gerekebilir? Neden?

11. Değişir (mutable) ve değişmez (immutable) nesneler arasındaki temel farklar nelerdir?

12. Veri yapıları ve türleri arasında hangileri değişir, hangileri değişmezdir?

Başlamadan Önce
Bir programlama dilinde veri saklamak ve işlem yapmak için değişkenlere (variables) ihtiyaç duyulmaktadır.
Python dilinde de diğer dillerde olduğu gibi değişkenler tanımlanmaktadır; ancak Python dilindeki değişkenler,
değişkenin veri tipi, adı ve referans sayısı adı verilen bilgilerle tanımlanmaktadır. Bir nevi işaretçi (pointer)
about:blank 26/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

konumundadırlar. Değişken tanımı gerçekleştirildikten sonra önemli bir diğer kavram ise bellek yönetimi
konusudur, çünkü bilgisayar belleğinin verimli biçimde kullanılması, bilgisayar programı için de önem teşkil
etmektedir. Bu nedenle, bu bölümde Python programlama dilinin bellek yönetimi ile ilişkisine değinilmiştir. Bir
Python programı içinde kullanılabilen farklı veri tipleri tanıtılarak bu veri tiplerine özgü farklı fonksiyonların
kullanımı gösterilmiştir.

Değişken ve farklı veri tiplerinin verilmesi sayesinde elde bulunan probleme özgü çeşitli işlemlerin gerçekleştirilesi
mümkündür. Bunun için Python ile kullanılan her birinin farklı farklı görevleri olan matematiksel, atama, bitsel
işlem, karşılaştırma, mantıksal, üyelik ve kimlik operatörlerine ve bu operatörlerle gerçekleştirilmiş olan çeşitli
örneklere yer verilmiştir.

Bir Python programına klavyeden girilen bir veri metinsel bir ifade biçiminde okunabilir. Peki ya bu verinin sayısal
hale dönüştürülmesi gerekirse? Bu ve benzeri durumlarda veri tipi dönüşümü yapmak gerekebilmektedir. Bu
bölümde açık (casting/explictconversion) ve örtülü (coercion, implict conversion) veri tipi dönüşümünden
bahsedilmiş, her iki yöntemin avantaj ve dezavantajlarına değinilirken, farklı örneklerle konunun anlaşılması
sağlanmaya çalışılmıştır. Diğer programlama dillerinde olduğu gibi Python dilinin da yapı ve işleyişi ile ilgili
kendine özgü bazı unsurları bulunmaktadır. Bu unsurların önemlilerinden ikisi, değişir (mutable) ve değişmez
(immutable) nesne kavramlarıdır. Bu nedenle son olarak, değişir ve değişmez nesne kavramları anlatılmıştır.
Nesnelerinin bellekte nasıl davranış sergilediklerini kavrayarak programın daha iyi kontrol edilmesi sağlanmış olur.

2.1. Değişken, İşaretçi ve Literal


Programlamada veri saklamak üzere bilgisayar belleğindeki adreslere verilen isme değişken (variable) adı
verilmektedir. Değişkenler kim zaman bir karakter, bir ifade, bir metin ya da ondalıklı sayı olabilir. Bu çeşitlilik,
değişkenin veri tipini (data type) gösterir. Örneğin; C dilinde aşağıdaki biçimde bir ifade verilmiş olsun (VanderPlas,
2016a).

int a = 25

Bu kod satırında 25 değeri a değişkenine atanmıştır. Diğer bir ifade ile bilgisayar belleğinde bir alan a olarak
isimlendirilmiştir. Değişkenin veri tipi tam sayı (integer/int) olarak belirlenmiştir. = matematikte kullanılan eşittir
işareti değil, artık bir atama (assignment) operatörüdür. Atama çoğu programlama dillerinde sağdan sola doğru
yapılır. Tersine bir örnek verilecek olursa; R programlama dilinde a = 25 (sağdan sola), 25 à a (soldan sağa) ve a ß 25
(sağdan sola) ifadelerinin tümü 25’in a değişkenine atanmasını sağlar.

Python dilinde ise aşağıdaki ilk kod satırında aslında bir işaretçi (pointer) tanımlanmış olur. Yani tanımlanan a ismi
ilgili bellek adresini işaret eder. Bunun için önceden bir veri tipi tanımlanmasına gerek duyulmaz. Dinamik biçimde
a’nın gösterdiği veri tipi değiştirilebilir. 25, "Yirmi Beş", 2.5 gibi a’nın aldığı değerlere literal adı verilir.

Çeşitli programlama dillerinde noktalı virgül kullanımının (;) ortak anlamı, mevcut ifadeyi bitirmek veya
sonlandırmaktır (Sawant, 2021). C, C++ ve Java gibi programlama dillerinde, bir kod satırını sonlandırmak için
noktalı virgül kullanmak gerekir; ancak yukarıdaki kod bloğundan da anlaşılacağı gibi Python dilinde böyle bir
zorunluluk yoktur. Python dilinde noktalı virgül daha çok bir ayırım ifade etmektedir ve aynı satırda birden fazla
işlem yapılması durumlarında kullanımı tercih edilebilmektedir. Örneğin; aşağıda aynı satırda üç farklı değişken
tanımlanmıştır.

Yukarıda diyez/hashtag (#) işareti ile gösterilen bir yorum satırıdır (comment line). Yorum satırları programlamada
sıkça kullanılan özelliklerden biridir. Dilden dile gösterim biçimi değişse de kullanım amacı kod dosyasını okuyan
kişiler için ilgili koda ilişkin bir ipucu verilmesidir. Yukarıda tek bir satırdan oluşan Python yorum satırı
bulunmaktadır (# İlk tanımlanan değişkenler:). Çok satırdan oluşan yorum satırları üç çift tırnak (""" … """) arasına
yazılarak oluşturulabilir. Bununla ilgili örneğe aşağıda yer verilmiştir.

about:blank 27/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Değişken Tanımlama Kuralları

Diğer programlama dillerinde olduğu gibi Python dilinde de değişken tanımlamanın belirli kuralları vardır. Python
programlama dilinde bir değişken adı verilirken aşağıdaki hususlara dikkat edilmelidir.

• Mutlaka bir harf veya alt çizgi (_) karakteri ile başlamalıdır.

• Asla bir sayı ile başlayamaz, yalnızca alfanümerik karakterler ve alt çizgiler içerebilir (A-z, 0-9 ve _ ), değişken
adlarında Türkçe karakter (ç, ğ, ı, ö, ş, ü) kullanımı tercih edilmez, değişken adı arasına boşluk(lar) konmaz.

• Python’a özgü anahtar kelimelerden herhangi biri olamaz (max, min, if, elif, while, for, sum, vb.).

Aşağıda hatalı değişken tanımlamalarına örnekler verilmiştir. Aslında Spyder bunu fark edip 086_sayi değişkeninin
tanımlandığı satırının başına kırmızı bir ikaz işareti bile koymuştur (Bu özellik de aslında Spyder editörünün yazım
hatalarını otomatik algılaması sayesindedir). Bu satırda yer alan değişken adı 086 gibi bir sayı ile başlatılmaya
çalışılmıştır. ilk-sayi değişkeni tanımlanırken arada çıkarma işlemi operatörü olan kısa çizgi yer almaktadır. Son
değişkende ise değişken adı arasında bir boşluk bırakılmıştır.

Kendi adımı kullanarak yapmaya çalıştığım 21 numaralı kod satırını çalıştırırsanız elif aynı zamanda Python dilinde
karar yapıları için kullanıldığından, yani Python’a özgü bir sözcük olduğundan Console’da şu şekilde bir hata mesajı
dönecektir.

Bu durumda adaşım olmadığınız ve elbette yukarıda verilen değişken tanımlama kurallarına uyduğunuz sürece kendi
adınızı kullanarak değişken tanımlayabilirsiniz. Hatalı değişken tanımlamalarına ilişkin örnekleri inceledikten sonra
uygun değişken tanımlamalarına ilişkin bazı örnekler şöyle verilebilir:

Python’da değişken adları büyük/küçük harfe duyarlıdır (case sensitive). Aşağıda verilen örnekte olduğu gibi eğer bir
değişken ilkSayi adında tanımlanıp sonrasında ilksayi olarak çağrılırsa hata mesajı alınır.

about:blank 28/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Python dilinin öne çıkan özelliklerinden biri de çoklu atama işlemine izin verilmesidir. Örneğin; aşağıdaki kod
satırında aynı anda a, b, c, d değişkenlerine 5, 10, 20, 25 değerleri atanmıştır. Python dilinde makine öğrenmesi, veri
görselleştirme gibi çeşitli amaçlarla geliştirilen fonksiyonların geri döndürdüğü değerlerin bilinmesi ve çoklu atama
kullanımı daha verimli kod yazılmasını sağlar.

2.2. Bilgisayar Belleği ve Bellek Yönetimi


Bir bilgisayarın belleği sayfaları boş olan bir kitaba benzetilebilir (VanTol, 2019). Kitabın yazarları, bellekte veri
depolamak isteyen bilgisayardaki birtakım farklı uygulama ya da süreçler olarak görülebilir. Elbette kitaba yazı
yazma ve silme işlerini düzenleyen yani bellekte veri yönetimini sağlayan bir yönetici bulunmaktadır. Bellek
yönetimi(memory management), uygulamaların veri okuması ve yazması işlemidir. Yeni verilerin saklanması,
yenilere yer açılabilmesi için artık kullanılmayan verilerin bellekten kaldırılması işlemleri gerçekleştirilmektedir. İşte
bu, bilgisayardaki bellek tahsisi (memory allocation) sürecinin en sade biçimdeki tanımıdır. Bu noktada işletim
sistemi, bellekten okuma ve belleğe yazma işlerini yürütürken, Python gerçekleştirimi/yorumlayıcısı
(implementation) da Python uygulaması tarafından yürütülen Python kodları için bellek yönetimini sağlar. İlk
bölümde anlatıldığı gibi Python dilinin bir gerçekleştirimi/yorumlayıcısı, CPython referans uygulaması tarafından
temsil edildiği gibi, Python dilinde yazılmış programların yürütülmesi için destek sağlayan bir program veya ortam
olarak anlaşılmalıdır ([Link], 2023b).

Örneğin; C gibi bir dilde aşağıda verilen kod satırını yazarak, x adlı bir hafıza alanı (memory bucket) tahsis edilir ve
bu alana 10 değerini yazılır (VanderPlas, 2016a).

Python dilinin nesneye yönelimli yapısı gereği her şeyin aslında birer nesne olduğu ifade edilmektedir. Bu durum
[Link]() fonksiyonuyla kontrol edilebilir. Aşağıdaki Python kodunda x ve ad olarak tanımlanan değişkenlerin
birer nesne olduğu sonucu geri döndürülecektir (ekrana True yazdırılır).

Bir Python nesnesi; (1) tanımlanan değişkenin veri tipi (type), (2) esas değeri (value) ve (3) bellek yönetiminde
kullanılan referans sayısı (reference count) olmak üzere üç temel bilgiyi tutmaktadır. Referans sayısı, bir nesnenin
sistemdeki diğer nesneler tarafından kaç kez referans verildiğini gösterir ([Link], 2020). Bir nesneye
yapılan referanslar kaldırıldığında, ilgili nesnenin referans sayısı azalır. Referans sayısı sıfır olduğunda ise nesnenin
bellekten kaldırılması sağlanır. Python dilinde x değişkeni tanımlandığında bu durum aşağıdaki şekilde olduğu gibi
temsil edilebilir.

about:blank 29/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Yukarıdaki tanımlama ile aynı nesneye atıfta bulunacak başka bir y referans değişkeni yaratılır çünkü Python, nesne
zaten aynı değere sahipse, aynı nesne referansını yeni bir değişkene tahsis ederek bellek kullanımını optimize eder.

x ile y değişkenlerinin aynı bellek adresini gösterdiği id() fonksiyonu ile kontrol edilebilir. Her ikisi için de
140703148548976 döndürülmüştür.

Eğer x’e 10 eklenirse bu defa artık x’in 10 ile olan bağlantısı kaldırılır ve artık 20 değerini gösterir, y’de herhangi bir
değişiklik yaşanmaz. Farklı bellek adreslerini gösterdikleri yine id() fonksiyonu kullanılarak görülebilir.

Intern Nesneler

Python, bellekte belirli bir nesne alt kümesini önceden oluşturur ve bunları günlük kullanım için genel ad alanında
(global namespace) tutar. Bunlara internnesne denilmektedir. CPython 3.7’de; -5 ile 256 arasındaki tam sayılar,
yalnızca ASCII harflerini, rakamlarını veya alt çizgileri içeren metinsel ifadeler intern nesnelerdir (Jones, 2019). a ve
b değişkenlerinin aynı bellek adresini işaret ettiği görülebilir. Tanımlanan c ve d değişkenleri ise intern nesne
tanımında verilen limit 256’yı geçtiğinden farklı bellek adreslerine sahiptir.

about:blank 30/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Benzer durum metin1, metin2, metin3 ve metin4 değişkenleri için de geçerlidir.

2.3. Python Dilinde Temel Veri Tipleri


Python programlama dilindeki temel veri tipleri aşağıdaki tabloda verilmektedir. Bunlar, tam sayılar, kayan noktalı
sayılar, kompleks sayılar, Boolean değerler, metinsel ifadeler ve None tipidir.

Veri Tipi Örnek Açıklama


☐ ☐ Tam sayılar (integers)
☐ ☐ Kayan noktalı sayılar (floating-point numbers)
☐ ☐ Kompleks sayılar (complex numbers)
☐ ☐ Boolean (True ya da False değerlerini alan)
☐ ☐ Metinsel ifadeler (string)
☐ ☐ Null değerini gösteren nesne

String (str): Her türlü karakter ve metinsel ifadeler (dizge) için kullanılabilmektedir. Basitçe, metinsel ifadeler,
karakter tutan bir koleksiyon şeklinde düşünülebilir. Tek ya da çift tırnak arasında yazılan her şey bir metinsel
ifadedir. Aşağıda verilen satırlarda ad ve soyad isimli iki str tipinde değişken verilmiştir. Bu metinsel ifadeler ister tek
ister çift tırnak kullanılarak tanımlanabilir.

about:blank 31/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Bir önceki bölümde Python’a merhaba demek için kullanılan print() fonksiyonunun genel görevi ekrana yazdırma
işlemini gerçekleştirmektir. Metinsel ifadeler başta olmak üzere diğer veri tipleriyle birlikte yazdırma işlemlerinde
sıklıkla tercih edilmektedir. Yukarıdaki ad ve soyad değişkenlerine ilâveten bir yas değişkeni tanımlansın. print()
fonksiyonu içinde farklı veri tiplerinden olan değişkenler birbirlerinden virgülle ayrılarak uyumlu bir biçimde
Console ekranına yazdırılabilir.

Elde edilecek ekran görüntüsü şu şekilde olur.

Eğer ifade veya değişkenlerin değeri Consol’da alt alta yazı yazdırmak istenirse, tıpkı çoklu yorum satırlarında
olduğu gibi metin üçer çift tırnak arasına yerleştirilebilir. Aşağıda ilgili Python kodları ve Console çıktısı yer
almaktadır.

Metinsel ifadeler + operatörü ile de birleştirilebilir (bknz. aşağıdaki ilk kod satırı); ancak metin dışında bir değişken
ile denenirse hata mesajı dönecektir (bknz. aşağıdaki ikinci kod satırı).

Ayrıca diğer programlama dillerinde olduğu gibi metinsel ifadelerle çalışırken alt satıra inme, satır başına geçme gibi
çeşitli işlemlere ihtiyaç duyulabilir. Bu tür işlemler kaçış (escape) karakterleri ile sağlanmaktadır. Aşağıdaki tabloda
sıkça kullanılan bazı kaçış karakterlerine yer verilmiştir ([Link], 2023).

Karakter Açıklama
\' Tek tırnak
\” Çift tırnak
\\ Ters bölü (Backslash)
\n Yeni satır
\r Satır başı
\t Tab
\b Geri tuşu (Backspace)

Kaçış karakterleri ile ilgili bazı örnekler incelenebilir.

about:blank 32/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Ayrıca metinler birer karakter dizisi olarak düşünülebilir. Bu dizinin elemanlarına ise indeksleri kullanarak ulaşmak
mümkündür. Unutulmaması gereken en önemli nokta ise Python dilinde indeks değerinin sıfırdan başlamasıdır.
Örneğin; adSoyad = "Elif Kartal" olsun. Bu durumda verilen Python kodları için aşağıdaki çıktılar elde edilecektir.

Python Kodu Çıktı


adSoyad[1] l
adSoyad[1:] lif Kartal
adSoyad[:1] E
adSoyad[1::2] lfKra

Python dilinde metinsel ifadelere (string) özgü pek çok metot mevcuttur. Bu metotlardan bazılarını incelemek için
rastgele oluşturulan bir dna değişkeni tanımlansın. Bu değişkenin uzunluğu (string veri tipinde olduğundan kaç
karakterden oluştuğu bilgisi) len() fonksiyonu yardımı ile bulunabilir. Büyük ya da küçük harfe dönüştürme, indeks
bulma ya da belirli bir parçanın yer değiştirmesi gibi bazı örneklere aşağıda yer verilmiştir.

Python Kodu Çıktı


len(dna) 28
[Link]() TGTCGTAGGGACGGGCCAACGTTCCTAG
[Link]("tag",0,len(dna)) 5
[Link]("cc",0,len(dna)) 23
[Link]("tag", "gta") tgtcggtaggacgggccaacgttccgta

Unutulmamalıdır ki yukarıdaki tabloda verilen metodların kullanımıyla dna değişkeninin yapısında herhangi bir
kalıcı değişiklik olmaz. Yapılan değişikliğin kalıcı olması için atama işleminin de gerçekleştirilmesi gerekir. Örneğin;
tüm dna dizilimini büyük harfe kalıcı biçimde çevirmek için aşağıdaki kod satırı kullanılabilir:

Tam Sayı (integer, int): Ondalıklı kısmı bulunmayan her sayı tam sayılara girmektedir. Aşağıda verilen örnek
Python kodlarında x, y ve z adında tam sayı değişkenler tanımlanmıştır ve bunlara sırasıyla 50, -900 ve 0 değerleri
atanmıştır. Tam sayılar için belirlenen bir maksimum/minimum üst/alt limit bulunmamaktadır. Bilgisayarın
kullanılabilir adres alanı miktarı ile sınırlıdır.

about:blank 33/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Kayan Ondalıklı Sayı (float): Çoğu kaynakta kayan ondalıklı sayı olarak Türkçeye çevrilmiştir. Devirli ya da
ondalıklı sayılar bu veri tipi altında incelenebilir. x, y ve z değişkenleri float veri tipinde tanımlanmıştır. 109. ve 110.
satırlarda ise sayıların bilimsel gösterim şekli yer almaktadır. 109. satır çalıştırıldığında 100.0, 1e-3 çalıştırıldığında
ise 0.001 yazdırılır.

Kompleks Sayılar (complex): Kompleks sayılar bir gerçel (real) ve bir de sanal (imaginary) bölümden oluşan
sayılardır. Yalnızca sanal kısmı da bulunabilir. Kompleks sayılara ilişkin değişken tanımlaması örneklerine aşağıda
yer verilmiştir:

Boolean (bool): Boolean Cebir matematiğin en önemli konularından biridir. Boolean cebrinde ele alınan mantıksal
önermeler basitçe ya Doğru (True) ya da False (Yanlış) olarak nitelendirilebilir. Örneğin; “Tüm memeli hayvanlar
karada yaşar.” à Yanlış!

Bilgisayarlar açısından inceleyecek olursak, temel anlamda bildiğimiz bilgisayarların (kuantum bilgisayarları hariç
tutuyoruz) çalışma prensibi 0 ve 1 mantığı ikili (binary) sayı sistemine dayalıdır. Her türlü veri 0 ve 1’ler ile
gösterilebilir. Örneğin; 250’nin binary karşılığı 11111010, “elif”in binary karşılığı ise 01100101 01101100 01101001
01100110 olarak verilebilir. İkili kodlama bir bakıma verinin daha basit ve kolay saklanmasını ve işlenmesini sağlar.
VE (AND), VEYA (OR) ya da DEĞİL (NOT) gibi mantıksal işlemler de bu sayede gerçekleştirilebilir.

Python dilindeki bool veri tipi True ve False gibi iki değer almaktadır. Operatörler ile gerçekleştirilen işlemlerin
sonucu olarak bool veri tipinde döndürülürler.

NoneType:None, hiçbir şey (null) olarak düşünülebilir. None dışında başka mümkün olası değeri mevcut değildir.
Python dilinde geriye döndüreceği değeri olmayan fonksiyonların döndürdüğü değer None’dır. Genellikle veri bilimi
çalışmalarında verideki eksik değerler None ile gösterilmektedir. Aşağıdaki n değişkeni None olarak tanımlanmıştır.

2.4. Operatörler ile İşlemler


Bu bölümde Python dilinde yer alan matematiksel operatörler, atama operatörleri, bitsel işlem operatörleri,
karşılaştırma operatörleri, mantıksal operatörler ile üyelik ve kimlik operatörleri ele alınmıştır.

2.4.1. Matematiksel Operatörler


Özellikle sayılar söz konusu ise matematiksel işlem yapabilmek için toplama, çıkarma gibi bazı aritmetik
operatörlerine ihtiyaç duyulmaktadır. Aşağıda yer alan tabloda bazı temel aritmetik operatörlerine yer verilmiştir.

about:blank 34/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Örneğin; a ve b gibi iki değişken tanımlansın:

Operatör Açıklama Örnek Sonuç


+ Toplama a + b 17.5
- Çıkarma a - b 2.5
* Çarpma a * b 75.0
/ Bölme a / b 1.3333333333333333
% Mod alma a % b 2.5
** Üs a ** b 31622776.60168379
// Kalansız Bölme a // b 1.0

İşlemlerdeki öncelik sırası da yine matematikte olduğu gibidir. Öncelikle, parantez içindeki işlemler yapılır. Ardından
çarpma ve bölme, sonrasında da toplama ve çıkarma gerçekleştirilir. Bu nedenle aşağıda verilen kod satırının sonucu
-1980.0’dır.

2.4.2. Atama Operatörleri


Python atama operatörleri ve bu operatörlerin bazı özel biçimlerde ifade ediliş biçimleri aşağıdaki tabloda
sunulmaktadır. Tanımlanan a değişkeni için atama operatörleri ile verilen örneklere ve elde edilen sonuçlara yer
verilmiştir.

Operatör Örnek Benzer Gösterim Sonuç


= a = 25 a = 25 25
+= a += 25 a = a + 25 50
-= a -= 25 a = a - 25 0
*= a *= 25 a = a * 25 625
/= a /= 25 a = a / 25 1.0
%= a %= 25 a = a % 25 0
//= a //= 25 a = a // 25 1
**= a **= 3 a = a ** 3 15625

2.4.3. Bitsel İşlem Operatörleri

Bitsel işlem yapan operatörlere ait tablo ise aşağıda verilmiştir. Bu tablodan elde edilen sonuçlar için a ve b
değişkenlerinin 8 byte’lık gösterimleri düşünülmelidir. Bu nedenle de aşağıdaki kod satırlarında değişkenler
tanımlandıktan sonra bitsel karşılıkları da ekrana yazdırılmıştır. Buna göre a ve b değişkenlerinin bitsel karşılığı
sırasıyla 00011001 ve 00010100’dir.

&bitsel and, | bitsel or ve ^ ise bitsel xor operatörüdür. >> verilen kayma sayısı kadar sağa kaydırır ve sol kısma sıfır
ekler, << verilen kayma sayısı kadar sola kaydırır ve sağ kısma sıfır ekler.

Operatör Örnek Benzer Gösterim Sonuç

about:blank 35/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

& a &= 25 a = a & b 16


| a | = 25 a = a | b 29
^ a ^= 25 a = a ^ b 13
>> a >>= 25 a = a >> 1 12
<< a <<= 25 a = a << 1 50

2.4.4. Karşılaştırma Operatörleri


Python ile aşağıdaki gibi iki değişken tanımlansın.

Karşılaştırma için kullanılan bazı operatörler, bu operatörler kullanılarak hazırlanarak oluşturulan örnekler ve elde
edilen sonuçlar aşağıdaki tabloda verilmiştir.

Operatör Açıklama Örnek Sonuç


== Eşittir a == b False
!= Eşit değildir a != b True
> Büyüktür a > b False
< Küçüktür a < b True
>= Büyük eşittir a >= b False
<= Küçük eşittir a <= b True

2.4.5. Mantıksal Operatörler

Programlamada özellikle kontrol yapıları ve döngüler ile ilgili bölümlerinde mantıksal ifadelerden ve dolayısıyla
boolean ifadelerden sıklıkla yararlanılmaktadır. Daha önce ifade edildiği gibi VE (AND), VEYA (OR) ya da DEĞİL
(NOT) Python dilinde kullanılan mantıksal operatörlerdir. and operatörü önünde ve arkasındaki ifadelerin her
ikisinin de True olması durumunda True döndürür, aksi halde False döndürür. or operatörü önünde ve arkasındaki
ifadelerin birinin True olması durumunda True döndürür, aksi halde False döndürür. not operatörü ise çıkan sonucun
tam tersini döndürür, bir başka deyişle ifade True ise False, False ise True döndürür.

Aşağıda a, b ve c gibi üç değişken tanımlanmıştır. Tanımlanan bu değişkenlerle karşılaştırma ve mantıksal operatörler


temel alınarak altı farklı ifade yazılmıştır.

Bu ifadelerden elde edilen sonuçlar sırasıyla şöyledir: False, False, True, True, True, True.

2.4.6. Üyelik ve Kimlik Operatörleri


inüyelik (membership) operatörüdür. Eğer hedeflenen değer bulunursa True, aksi durumda False döndürülür. not in
ise elde edilen değerin tam tersini döndürür. is kimlik (identity) operatörüdür. Eğer adres değerleri eşitse True, aksi
durumda False döndürülür. is not in ise elde edilen değerin tam tersini döndürür. Aşağıda verilen ifadelerden elde
edilen sonuçlar sırasıyla şöyledir: True, True, False, True.

about:blank 36/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Bu noktaya kadar ele alınan operatörlerin öncelik sırası yüksekten düşüğe doğru şöyle verilmektedir: **, ~ , * / % //,
+ -, >> <<, & (bitsel), ^ |, <= < > >=, <> == !=, = %= /= //= -= += *= **=, is is not, in not in, not or and (Uzun,
2023). Birlikte verilen karma işlemlerde bu sıra göz önünde bulundurulmalıdır.

2.5. Açık ve Örtülü Veri Tipi Dönüşümü


Açık veri tipi dönüşümü (casting/explictconversion) adından da anlaşılacağı gibi bir değişkenin veri tipini bir başka
veri tipine değiştirme anlamına gelir. Veri tipi dönüşümü; int(), bool(), float(), str() gibi tip dönüşümü için hazır
bulunan fonksiyonlarla gerçekleştirilmektedir. Bunlar aynı zamanda ilgili veri tipine özgü yapıcı metot (constructor)
olarak da anılmaktadırlar.

İşlem Dönüşüm Sonuç


bool(1000) intàboolean True
bool(750) intàboolean True
bool("Elif") stringàboolean True
bool(0) intàboolean False
bool(-300) intàboolean True
bool("") stringàboolean False
float(100) intàfloat 100.0
float(-25) intàfloat -25.0
float("Elif") stringàfloat ValueError: could not convert string to float: 'Elif'
float(True) booleanàfloat 1.0
int(False) booleanàint 0
int(25.5) floatàint 25
str(52000) intàstring '52000'
str(-50) intàstring '-50'
str(False) booleanàstring 'False'

Açık ve örtülü veri tipi dönüşümü (coercion, implict conversion) arasındaki en büyük fark, dönüştürmenin manuel
yapılırken tip zorlamanın otomatik yapılmasıdır (Mathew, 2021). Python, veri kaybını önlemek için her zaman daha
küçük veri tiplerini daha büyük veri tiplerine dönüştürür. Açık veri tipi dönüşümü sonuçları daha tahmin edilebilirdir;
oysa örtülü veri tipi dönüşümünde beklenmeyen sonuçlarla karşılaşılabilir. Her ikisinde de bilgi kaybı yaşanabilir;
ancak açık veri tipi dönüşümü söz konusu olduğunda programcının gerekli bilgiyi koruma konusunda daha fazla
kontrolü bulunmaktadır. Örtülü veri tipi dönüşümü önceden belirlenen kurallarla sınırlı kalırken, açık veri tipi
dönüşümü daha esnektir (vegibit, 2023).

Örtülü veri tipi dönüşümü konusunda da aşağıda verilen örnekler incelenebilir. Örnek 1 ve 2’de c’nin veri tipi float
olarak ortaya çıkar. Örnek 1’de c’nin değeri 11.0, Örnek 2’de ise 0.6’dır. Örnek 3’te c’nin değeri 7 olarak elde edilir.
Tam sayı ve boolean veri tiplerinin toplanması yine bir tamsayı değişkenin elde edilmesini sağlamıştır. Örnek 4’te ise
a ve b’nin farkının c’ye atanması sırasında “TypeError: unsupported operand type(s) for -: 'str' and 'int'“ hatası
ortaya çıkar ve bu işlem gerçekleştirilemez.

about:blank 37/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

2.6. Değişir ve Değişmez Nesneler


Programlamada, bir nesne oluşturduktan sonra durumunu değiştiremezseniz bu nesneye değişmez (immutable) denir.
Aksine, oluşturulduktan sonra dâhili durumunu değiştirmenize izin veren nesnelere değişir (mutable) denir. Kısaca
özetlemek gerekirse, bir nesnenin durumunu veya içerdiği veriyi değiştirip değiştiremeyeceğiniz, o nesnenin değişir
mi yoksa değişmez mi olduğunu belirlemektedir.

Python programlama dilinde tamsayılar, kayan ondalıklı sayılar, karmaşık sayılar ve boolean gibi tek öğeli veri tipleri
her zaman değişmezdir (immutable). Değişmez veri tiplerine metinsel ifadeler de dâhildir. Bunların değerini
değiştirmenin bir yolu yoktur. Sadece yeni bir değere sahip yeni bir nesne oluşturma ve eskisini atma seçeneği
bulunmaktadır.

Python ile programlamada bir sonraki bölümde ele alınacak olan liste (list), demet (tuple), küme (set) ve sözlük
(dictionary) gibi koleksiyon veri yapıları söz konusu olduğunda, işler biraz daha farklıdır. Liste, küme ve sözlükler
değişir, demet değişmezdir.

Veri Tipi Sınıfı Mutable/Immutable


Sayılar int, float, complex Immutable
Metinsel ifadeler str Immutable
Demet tuple Immutable
Boolean bool Immutable
Listeler list Mutable
Kümeler set Mutable
Sözlükler dictionary Mutable

Verilen bilgiler doğrultusunda küçük bir hatırlatma yapılacak olursa, Python dilinde değişkenler verilerin kendisini
tutmaz; ancak verilerin depolandığı bellek adresine başvurur. Mevcut bir değişkeni yenisine atadığınızda, orijinal
değişken için bir takma ad (alias) oluş[Link] olan bir değişkenin takma adını oluşturduğunuzda, her iki
değişken de aynı referansa sahip olacaktır. Değişken takma adları, aynı nesneye veya veri parçasına işaret ederek
aynı bellek adresini referans alır:

about:blank 38/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Sayılar, dizeler ve demetler gibi değişmez nesnelere işaret eden değişken takma adları oluşturduğunuzda,
değişiklikler (mutasyonlar) hakkında endişelenmeye gerek yoktur. Değişir türlerde, belirli bir takma addaki değişiklik
diğer takma adların geri kalanını etkileyecektir.

Örneğin; bir önceki örnekte tanımlanan a değeri 1 artırıldığında, b değerinde bir değişiklik meydana gelmemektedir.

Bir sonraki kod bloğunda değişir nesnelere örnek olması bakımından bir renkpaleti_A listesi tanımlanmıştır,
sonrasında renkpaleti_A kullanılarak renkpaleti_B oluşturulmuştur. renkpaleti_A’ya yeşil rengi eklendiğinde bu
değişikliğin renkpaleti_B’ye de yansıdığı görülebilir.

Bölüm Özeti
Bu bölümde, programlama dünyasının temel kavramları ve Python dilindeki temel veri tipleri incelenmiştir.
Değişkenler, işaretçiler ve literaller hakkında bilgi verilirken, bilgisayar belleği ve bellek yönetimi konularına da
değinilmiştir. Ayrıca, operatörlerle yapılan işlemler ve açık (explict) ve örtülü (implict) veri tipi dönüşümleri
açıklanmıştır. Değişir (mutable) ve değişmez (immutable) nesnelerin farkı anlatılarak, programlamaya yeni
başlayanlara ve deneyimli programcılara yönelik faydalı bir kaynak oluşturulmuştur.

Kaynakça
Amos, D. (2018). Object-Oriented Programming (OOP) in Python 3. [Link]
oriented-programming/

Breuss, M. (2017). Python Virtual Environments: A Primer. RealPython. [Link]


environments-a-primer/

Brownlee, J. (2016, May 10). How To Load Machine Learning Data in Python. [Link].
[Link]

Bureau, I. (2019). Difference between Compiler and Interpreter. Business Insider.


[Link]

about:blank 39/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Çobanoğlu, B. (2021). Herkes İçin Python (3rd ed.). Pusula 20 Teknoloji ve Yayıncılık A.Ş.

Costa, C. D. (2020, November 23). Top 16 Python Applications in Real-World. Medium.


[Link]

Deitel, H. M., & Deitel, P. J. (2010). C ve C++ (M. Zavrak, E. Aksoy, & H. N. Karaca, Trans.; 3rd ed.). Sistem
Yayıncılık.

GeeksforGeeks. (2016, May 16). Python OOPs Concepts. GeeksforGeeks. [Link]


oops-concepts/

GeeksforGeeks. (2020, January 18). How to Install PIP on Windows ? GeeksforGeeks.


[Link]

[Link]. (2020). Memory Management in Python. [Link]


in-python/

[Link]. (2021, October 22). Top 10 Python Applications in Real World. GeeksforGeeks.
[Link]

Gupta, A. (2023). Top 10 Python IDEs in 2023: Choosing The Best One. [Link].
[Link]

Harris, C. R., Millman, K. J., Walt, S. J. van der, Gommers, R., Virtanen, P., Cournapeau, D., Wieser, E., Taylor, J.,
Berg, S., Smith, N. J., Kern, R., Picus, M., Hoyer, S., Kerkwijk, M. H. van, Brett, M., Haldane, A., Río, J. F. del,
Wiebe, M., Peterson, P., … Oliphant, T. E. (2020). Array programming with NumPy. Nature, 585(7825), 357–362.
[Link]

Hjelle, G. A. (2020). Python import: Advanced Techniques and Tips. [Link]

[Link]. (2023). Making kernels for IPython—IPython 3.2.1 documentation. [Link]


doc/3/development/[Link]

Jeevan, M. (2022). How to Select Rows and Columns in Pandas Using [ ], .loc, iloc, .at and .iat. KDnuggets.
[Link]

Jones, L. (2019). Pointers in Python: What’s the Point? – Real Python. [Link]

Koidan, K. (2021, July 15). Difference Between Python Modules, Packages, Libraries, and Frameworks.
[Link]. [Link]

Lutz, M. (2009). Learning Python (4th ed.). O’Reilly Media.

Lutz, M. (2011). Programming Python (4th ed.). O’Reilly. [Link]


python-second/0596000855/[Link]

Mathew, S. T. (2021). Python Fundamentals for Everybody—Type Conversion vs Type Coercion.


[Link]
34234e99c9c4

McKinney, W. (2010). Data Structures for Statistical Computing in Python. In S. van der Walt & J. Millman (Eds.),
Proceedings of the 9th Python in Science Conference (pp. 56–61). [Link]

McKinney, W. (2012). Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython (1st ed.).
O’Reilly Media.

Microsoft. (2022). How to create and manage Python environments in Visual Studio. [Link]
us/visualstudio/python/managing-python-environments-in-visual-studio?view=vs-2022

Panwar, P. (2022). Use existing Python packages with Spyder 5. [Link]


spyder5/

Pérez, F., & Granger, B. E. (2007). IPython: A System for Interactive Scientific Computing. Computing in Science
and Engineering, 9(3), 21–29. [Link]

about:blank 40/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Pozo Ramos, L. (2023). Python’s del: Remove References From Scopes and Containers.
[Link]

[Link]. (2023). Python Object Oriented Programming. [Link]


programming/object-oriented-programming

[Link]. (2023). PyInstaller Manual—PyInstaller 5.8.0 documentation. [Link]

Python Software Foundation. (2023a). IDLE. Python Documentation. [Link]

Python Software Foundation. (2023b). Python a programming language changes the world Final Production Content
Case Studies & Success Stories. [Link]
1-final-content-preview

[Link]. (2023a, February 15). Free Python Tutorial For Beginners: Learn Python. Python Land.
[Link]

[Link]. (2023b, February 15). Welcome to [Link]. [Link]. [Link]

Sawant, S. (2021, February 17). Semicolon in Python—AskPython. [Link]


python

Singhal, B. (2017). Iris Dataset. Mendeley Data, V1. [Link]

[Link]. (2023). Pandas Difference Between loc[] vs iloc[]. [Link].


[Link]

[Link]. (2022). Home—Spyder IDE. [Link]

Statista. (2022). Most used languages among software developers globally 2022. Statista.
[Link]

team, T. pandas development. (2020). pandas-dev/pandas: Pandas (latest) [Computer software]. Zenodo.
[Link]

Uğuz, S. (2021). Makine Öğrenmesi: Teorik Yönleri ve Pyhton Uygulamaları İle Bir Yapay Zeka Ekolü (2nd ed.).
Nobel Akademik Yayıncılık.

Uzun, E. (2023). Temel Operatörler. [Link]

VanderPlas, J. (2016a). Basic Python Semantics: Variables and Objects. In Whirlwind Tour of Python. O’Reilly
Media, Inc.
[Link]

VanderPlas, J. (2016b). Built-In Data Structures. In Whirlwind Tour of Python. O’Reilly Media, Inc.
[Link]
[Link]

VanderPlas, J. (2016c). Defining and Using Functions. In Whirlwind Tour of Python. O’Reilly Media, Inc.
[Link]
[Link]

VanderPlas, J. (2016d). Iterators. In Whirlwind Tour of Python. O’Reilly Media, Inc.


[Link]
[Link]

VanderPlas, J. (2016e). Python Data Science Handbook: Essential Tools for Working With Data (1st ed.). O’Reilly
Media.

VanTol, A. (2019). Memory Management in Python – Real Python. [Link]


management/

vegibit. (2023). Type Coercion Vs Type Casting In Python. [Link]


python/

about:blank 41/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

[Link]. (2023). [Link]. [Link]

[Link]. (2023a). Beginners Guide/Overview—Python Wiki.


[Link]

[Link]. (2023b). Python Implementations. [Link]

Ünite Soruları
Soru-1 :

Bir değişkenin tanımı aşağıdakilerden hangisidir?

(Çoktan Seçmeli)

(A) Bir metin ifadesi.

(B) Bir sabit değer.

(C) İsimlendirilmiş bir bellek alanı.

(D) Bir işaretçi türü.

(E) Matematiksel bir operatör.

Cevap-1 :

İsimlendirilmiş bir bellek alanı.

Soru-2 :

İşaretçiler (pointers) aşağıdakilerden hangisiyle ilişkilidir?

(Çoktan Seçmeli)

(A) Dosya işlemleri

(B) Veri sıkıştırma

(C) Döngüler

(D) Bellek yönetimi

(E) Koşul ifadeleri

Cevap-2 :

Bellek yönetimi

Soru-3 :

Hangi veri tipi (kayan) ondalıklı sayıları temsil eder?

(Çoktan Seçmeli)

(A) float

about:blank 42/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(B) str

(C) NoneType

(D) bool

(E) char

Cevap-3 :

float

Soru-4 :

Aşağıdakilerden hangisi Python’a özgü veri yapılarından biridir?

(Çoktan Seçmeli)

(A) int

(B) tuple

(C) NoneType

(D) bool

(E) char

Cevap-4 :

tuple

Soru-5 :

İki değeri karşılaştırmak için hangi Python operatörünü kullanabilirsiniz?

(Çoktan Seçmeli)

(A) =

(B) ||

(C) &

(D) |

(E) ==

Cevap-5 :

==

Soru-6 :

Aşağıdaki seçeneklerden hangisinde “a değişkeninin 3’e bölümünden kalanın 1 olması” ifadesi doğru biçimde
yazılmıştır?

(Çoktan Seçmeli)

(A) a / 3 == 1

about:blank 43/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(B) a % 3 == 1

(C) a / 3 = 1

(D) a % 3 = 1

(E) a & 3 = 1

Cevap-6 :

a % 3 == 1

Soru-7 :

Örtülü veri tipi dönüşümü nedir?

(Çoktan Seçmeli)

(A) Kullanıcının müdahalesi olmadan yapılan dönüşümdür.

(B) Veri kaybını önlemek için kullanılan dönüşüm türüdür.

(C) Veri türünün açıkça belirtildiği dönüşüm türüdür.

(D) İsteğe bağlı olarak gerçekleşen veri tipi dönüşümüdür.

(E) Yalnızca sayısal veri tipleri arasında yapılan dönüşüm türüdür.

Cevap-7 :

Kullanıcının müdahalesi olmadan yapılan dönüşümdür.

Soru-8 :

Aşağıdakilerden hangisi değişmez (immutable) veri tipine örnektir?

(Çoktan Seçmeli)

(A) list

(B) dict

(C) set

(D) tuple

(E) Hiçbiri

Cevap-8 :

tuple

Soru-9 :

Aşağıda verilen Python kodu çalıştırıldığında elde edilen sonuç seçeneklerin hangisinde doğru şekilde verilmiştir?

(Çoktan Seçmeli)

about:blank 44/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(A) 1

(B) 1.0

(C) True

(D) False

(E) 0

Cevap-9 :

1.0

Soru-10 :

Aşağıda verilen Python kodu çalıştırıldığında elde edilen sonuç seçeneklerin hangisinde doğru şekilde verilmiştir?

(Çoktan Seçmeli)

(A) True

(B) False

(C) 50

(D) 25

(E) 0

Cevap-10 :

False

about:blank 45/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

3. VERİ YAPILARI: LİSTE, DEMET, KÜME,


SÖZLÜK
Bölümle İlgili Özlü Söz
Önce yap, sonra doğru yap, sonra daha iyi yap.

Addy Osmani, Yazılım Mühendisi

Kazanımlar
1. Python dilinde liste (list) kavramını bilir ve bir liste oluşturma, bir listeye eleman ekleme ve çıkarma, liste
elemanlarına indeks kullanarak ulaşma, bir listenin uzunluğunu bulma ve elemanların sıralanması gibi listelerle
ilişkili temel fonksiyonları kullanabilir.

2. Python dilinde demet (tuple) kavramını, listelerle olan benzerlikleri ve farklılıkları bilir ve bir demet oluşturma, bir
demetin elemanlarına erişme, bir demetten indeks kullanarak eleman çağırma, bir demette bir elemanın kaç defa
tekrar ettiği gibi demetlerle ilişkili temel fonksiyonları kullanabilir.

3. Python dilinde sözlük (dictionary) kavramını bilir, bir sözlüğün nasıl oluşturulacağını, bir sözlüğe anahtar-değer
çiftleri ekleme ve çıkarma, sözlükteki bir değere anahtarıyla erişme gibi temel sözlük işlemlerini gerçekleştirebilir.

4. Python dilinde küme (set) kavramını bilir, bir kümeyi oluşturma, kümeye eleman ekleme ve çıkarma ile kümeleri
kullanarak kesişim, birleşim, fark gibi matematiksel işlemleri gerçekleştirme vb. temel küme işlemlerini yapabilir.

5. Python programında liste, demet, sözlük ve küme veri yapılarından uygun olanı seçebilir.

6. Liste, demet, sözlük ve küme veri yapılarından hangisinin değişir (mutable) ve hangisinin değişmez (immutable)
olduğunu bilir.

Birlikte Düşünelim
1. Veri yapıları neden önemlidir?

2. Python dilinde kullanılan temel veri yapıları nelerdir?

3. Bir liste nasıl oluşturulur ve hangi tür verileri içerebilir?

4. Listenin indeksleri hangi sayıdan başlar?

5. Bir listeye bir eleman nasıl eklenir, çıkarılır ve değiştirilir?

6. Demetler değişir nesneler midir yoksa değişmez nesneler midir?

7. Bir demet nasıl oluşturulur ve hangi veri tiplerini içerebilir?

8. Liste ve demet arasındaki farklar ve benzerlikler nelerdir?

9. Bir demetin elemanlarına nasıl erişilir?

10. Bir sözlük nasıl oluşturulur, nasıl eleman eklenir ve çıkarılır?

11. Bir sözlükte bir anahtara bağlı değer nasıl elde edilebilir?

12. Bir küme nasıl oluşturulur?

13. Kümeler üzerinde gerçekleştirilebilen temel işlemler nelerdir?

about:blank 46/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Başlamadan Önce
Veri yapıları, bilgisayar programlarıyla çalışırken verileri organize etmek, saklamak ve işlemek için kullanılan temel
yapı taşlarıdır. Python, çeşitli veri yapıları sunar ve bu veri yapılarından her biri farklı kullanım senaryolarına ve
avantajlara sahiptir. Bu bölümde, Python programlama dilinin temel veri yapıları olan liste, demet, sözlük ve küme
kavramları ele alınmıştır. Her bir veri yapısının ne olduğu, nasıl oluşturulduğu ve çeşitli fonksiyonlarla nasıl
kullanılabileceği detaylı bir şekilde, örneklerle açıklanmıştır. Python yardımı ile veri yapılarının programlamadaki
rolü ve önemi kavranarak, hangi durumlarda hangi veri yapısının tercih edilmesi gerektiği gibi konularda ileriye
yönelik deneyim kazanılacaktır.

3.1. Python Veri Yapıları


Bir önceki bölümde Python programlama dilindeki tam sayı (int), kayan noktalı sayı (float), kompleks sayılar
(complex), boolean, metinsel ifadeler (string) ve None temel veri tipleri ele alınmıştır. Bu bölümün konusu, Python
dilinde diğer veri tipleri için bir tutucu (ya da kap) görevi görebilen birkaç yerleşik bileşik veri yapısı bulunmaktadır.
Bunlar aşağıdaki tabloda verilmiştir. Tablodan da görüleceği gibi bu veri yapıları oluşturulurken köşeli, yuvarlak ve
kıvırcık (süslü) parantezler kullanılmıştır. Hangi veri yapısının nasıl oluşturulduğuna dikkat etmek gerekir. Her bir
veri yapısına ait detaylı açıklama ve örnekler sırasıyla verilecektir.

Veri Yapısı Örnek Açıklama


list [“e”,”l”,”i”,”f”] Sıralı değişir koleksiyon
tuple (1,2,3) Sıralı değişmez koleksiyon
{34: “İstanbul”,
dict Sırasız değişir eşleme
54: “Sakarya”}
set {1, 3, 5, 7} Benzersiz değerlerin sırasız değişir koleksiyonu

3.2. Listeler
Listeler, Python dilindeki temel sıralı ve değişken veri toplama türüdür (VanderPlas, 2016b). Köşeli parantezler
arasında virgülle ayrılmış değerlerle tanımlanabilirler; örneğin, oluşturulan bir isim listesi aşağıda yer almaktadır.
type() ile veri yapısının liste olduğu görülebilir.

Listelere özgü farklı fonksiyonlar bulunmaktadır. Bunlardan en sık kullanılanı len() fonksiyonudur. Listenin kaç
elemanı olduğunu (uzunluğunu) döndürür. Aşağıdaki kod satırı çalıştırıldığında 4 değeri elde edilecektir.

Python, tek öğeler için indeksleme (indexing) ve birden çok öğe için dilimleme (slicing) yoluyla bileşik türlerdeki
öğelere erişim sağlamaktadır. Bu konuda, Bölüm 2.3’te metinsel ifadeler ile yapılan işlemlerin benzeri listelere de
uygulanabilir. Köşeli parantez söz dizimi kullanılarak erişim sağlanır. Python dilinde indeksin sıfırdan başladığı
kesinlikle unutulmamalıdır. Aşağıda 11 elemanlı sayilar listesi verilmektedir. Liste elemanlarına erişim örnekleri
sayilar kullanılarak sırayla açıklanmıştır.

Kod bloğunun ilk satırında sayilar listesi tanımlanmıştır. Ardından, listenin 0. indeksinde yer alan ilk elemanı,
sonrasında da listenin 3 indeks numaralı dördüncü elemanı yazdırılmıştır. İndeks numarasındaki eksi (-) indisin
tersten (listenin sonundan) okunacağına işaret eder. Yani listenin son elemanı olan 70’in indeks numarası -1’dir,
63’ün indeks numarası -2’dir, … Bu şekilde devam eder. Dolayısıyla sayilar[-1] ile ekrana 70, sayilar[-5] ile ekrana
42 yazdırılır.
about:blank 47/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Aşağıdaki kod bloğunda listenin içinde belirli aralıklarda ya da düzende yer alan elemanlara erişim sağlanmaktadır.
İlk satırda indeksi 0’dan 5’e kadar olan elemanlar yazdırılır. 5. indeksteki eleman döndürülmez. sayilar[5:] ile 5.
İndeksteki eleman dâhil listenin sonuna kadar tüm elemanlar yazdırılır. Bir sonraki adımda ise -5. indiste yer alan
elemandan (42) ileri doğru yazdırılır. sayilar[0:5:2] satırında sona eklenen 2, indeksi 0’dan 5’e kadar olan
elemanların 2’şer indis atlanarak yazdırılacağını gösterir. Neticede [1, 14, 28] döndürülür. sayilar[::5] ise listenin
başından sonuna kadar 5’er indis atlanarak elemanları döndürür. Bir sonraki kod satırı da sayilar[0:len(sayilar):5]
benzer işlemi yapar. Sonuncu satır sayilar[::-1] ise bir nevi listeyi ters çevirir.

Listeler tek veri tipinden oluşabileceği gibi, birbirinden farklı veri tipinde nesnelere sahip olabilir. Aşağıdaki kod
bloğunda yer alan ilk nesne örneği önceki örnektekilere benzer şekilde; ancak bu kez boolean veri tipinde elemanlara
sahip bir listedir. Bir sonraki örnekte ise liste elemanlarının veri tipi str, str, boolean, int, float, list olarak sıralanabilir.

about:blank 48/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Aşağıdaki ekran görüntüsünden anlaşılabileceği gibi listeler değişir (mutable) özelliktedir. Elemanları
değiştirilebilirdir. Listede 1. indekste yer alan elif kartal, kara kartal olarak değiştirilmiştir.

Bir liste, list() yapıcı metodu ile de oluşturulabilir. Örneğin;

Listenin sonuna ekleme yapmak istenirse append() metodu kullanılabilir. Aşağıda tanımlanan ml listesinin sonuna 11
elemanı eklenmiştir. Sonrasında listenin istenilen indeksine (önce 2. indekse 20, sonra 10. indekse 20 elemanı) özel
olarak eklenmiştir.

Elemanları listeden kaldırabilmek için remove() metodu kullanılır. Kaldırılmak istenen elemanı varsayılan olarak
liste başından kontrol etmeye başlar ve gördüğü ilk indekstekini kaldırır. Örneğin; ml listesinden 20 elemanı
kaldırılmak istenirse, önce indeksi 2 olan 20 kaldırılacaktır.

about:blank 49/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Liste sonuna eleman eklenebildiği gibi, liste sonundan eleman silmek de oldukça kolaydır. Bunun için pop() metodu
kullanılır. Aşağıdaki örnekte, liste sonundaki 11 elemanı kaldırılmıştır.

Bir elemanın liste içindeki indeks değerinin de bulunmasına ihtiyaç duyulabilir. Bunun için index() metodu
kullanılabilir. Tıpkı remove()’da olduğu gibi elemanın baştan ilk görüldüğü yerdeki indeks numarası (9) döndürülür

Mevcut listeyi sıralamak için sort() metodu kullanılır. Varsayılan olarak artan biçimde sıralama yapılır.

Listeyi tersine çevirmek içinse reverse() metodu kullanılabilir. Tersine çevirme işlemi listede kalıcı bir etki
yaratacaktır. Değişkenlerin yer aldığı pencereden de bu durum görülebilir.

Boş bir liste yaratmak için aşağıdaki kod satırının kullanılması yeterlidir. Listenin silinmesi içinse del deyimi
kullanılır. Son satır my_list listesini silecektir.
about:blank 50/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

3.3. Demetler
Demetler (tuples) birçok yönden listelere benzemektedir; ancak köşeli parantezler yerine yuvarlak parantezlerle
tanımlanmaktadırlar (bknz. tuple a). Ayrıca, herhangi bir parantez kullanılmadan da tanımlanabilirler (bknz. tuple b).
Listelerdekine benzer şekilde elemanlarına ulaşabilmek mümkündür. Bu konuda aşağıdaki örnekler ve sonrasında
verilen ekran görüntüleri incelenebilir.

Demetler Python dilinde bir fonksiyonun geri döndürdüğü değerlerin veri yapısı olarak da kullanılmaktadır
(VanderPlas, 2016b). Örneğin; kayan noktalı sayıların (float) as_integer_ratio() metodu, pay ve payda biçiminde
verilen sayıyı geri döndürmek için demet yapısını kullanmaktadır.

Demetler hakkında unutulmaması gereken en önemli özelliklerden biri değişemez (immutable) olduklarıdır. Eğer
elemanlarından birinin listelerde olduğu gibi değerini değiştirmek istenirse, demetlerin buna izin vermeyeceğine dair
hata mesajı alınır.

about:blank 51/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Bir demete yeni bir eleman eklemek için bazı yollara başvurulabilir. Listelerdeki gibi demetler için de tanımlı tuple()
yapıcı metodu bulunmaktadır. Bu sayede dönüşümler rahatlıkla sağlanmaktadır. Örneğin; mevcut a demetini liste
haline getirmek ya da listeyi demet haline getirmek mümkün olabilir. Dolayısıyla bir demeti listeye çevirdikten sonra
ihtiyaç duyulan ekleme/çıkarma işlemleri yapılabilir ve ardından yeniden demet haline getirilebilir. Aşağıda verilen
örnekte a demetinde 4. indeksteki eleman 2 değeri, “k” değerine çevrilmiştir.

Eğer tek elemanlı bir demet tanımlanmak istenirse, yuvarlak parantezler arasına yalnızca elemanı yazmak yeterli
olmaz, sona bir de virgül eklenmelidir; aksi takdirde tanımlanan metinsel bir ifade (string) olacaktır.

Bir demetin silinebilmesi için del deyimi kullanılabilir. Bu deyim aslında bir ad alanına veya kapsayıcı türünden
nesnelere referansların kaldırılmasını sağlar (Pozo Ramos, 2023). Atama ifadesinin tersi bir işlem gerçekleştirir. del,
bir tür atama kaldırma ifadesidir.

Tanımlanan iki demeti birleştirebilmek için + operatöründen faydalanılabilir. Aşağıdaki kod bloğundan çıktı olarak
('e', 'l', 'i', 'f', 2, 0, 2, 3) elde edilir.

about:blank 52/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Tanımlanan bu son demetin kaç elemanlı (8) olduğunu görebilmek için listelerdekine benzer biçimde len()
fonksiyonu kullanılabilir.

Bir elemanın bir demet içinde kaç defa tekrarlandığı count() metodu yardımıyla bulunabilir. Aşağıdaki ilk örnekte,
tamSayilar demetinin içinde kaç adet 1 sayısının olduğu bulunmaya çalışılmıştır. Sonuçta ekrana 3 yazdırılır. Eğer
demetin içinde olmayan bir eleman count() metoduna verilirse, 0 (sıfır) döndürülür.

Bir demet içindeki elemanın indeks değerini bulurken ve sıralarken listelerdekine benzer işlemler gerçekleştirilir.
index(), “f” için 3 değerini döndürür; ancak son iki satırda kontrol edilen elemanlar halihazırda a demetinin elemanı
olmadığından hata mesajı iletir.

max(), min(), any(), all() gibi fonksiyonlar liste ve demetlerin elemanları ile işlem yapmak için uygundur. Örneğin;
yeni adında bir demetin en büyük ve en küçük elemanları max() ve min() fonksiyonları yardımı ile bulunsun:

about:blank 53/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

any() fonksiyonu, eğer nesne elemanlarından herhangi biri için True ise True, all() fonksiyonu ise eğer nesne
elemanlarından her biri için True ise True döndürmektedir. Bu bilgiye göre aşağıdaki kod satırları incelenebilir.
Sırasıyla, False, True, True, False çıktıları üretilecektir.

3.4. Sözlükler
Sözlükler (dictionaries), anahtar:değer (key:value) prensibini kullanan son derece esnek eşleme yapılarıdır ve
Python dilinin dâhili uygulamasının çoğunun temelini oluşturmaktadır (VanderPlas, 2016b). Kıvırcık parantezler
içindeki virgülle ayrılmış bir anahtar:değer çiftleri listesi aracılığıyla oluşturulabilirler. Bir sözlükteki elemanlara,
liste ve demetler için kullanılan dizin oluşturma sözdizimi aracılığıyla erişilir ve ayarlanır, burada elemanın indeksi
sıfır tabanlı bir düzende değil, sözlükte geçerli bir anahtardır. Liste ya da demette olduğu gibi elemanların belirli bir
düzeni yoktur. Bu sıralama eksikliği, sözlüklerin çok verimli bir şekilde uygulanmasına izin verir, böylece sözlüğün
boyutu ne olursa olsun rastgele öğelere erişim çok hızlıdır.

baskentler adında bir sözlük oluşturulmuştur. Bu örnekte, sözlük elemanları kıvırcık parantezler arasına tanımda ifade
edildiği gibi anahtar:değer mantığı ile yazılmıştır. Anahtar:değer eşleşmesi örnek için ülke:başkent şeklindedir.
Aşağıdaki kod bloğunun son iki satırda, bir anahtar kullanarak bir sözlüğün değerine ulaşmak için iki farklı yol
verilmiştir.

Elbette, bir sözlüğün tüm anahtarlarını ve değerlerini listelemek mümkündür. Bu, sırası ile keys() ve values()
metotları ile gerçekleştirilir.

about:blank 54/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Sözlüğe yeni bir eleman eklenmesi demek, yeni bir anahtar:değer çiftinin eklenmesi demektir. Köşeli parantez içine
eklenecek olan yeni anahtar yazılır, ardından eşitliğin sağ tarafına bu anahtara karşılık atanacak değer yazılır.

Bir sözlükten bir anahtar:değer çifti çıkarılmak istenirse, liste ve demette olduğu gibi del deyimi kullanılabilmektedir.
Ayrıca, sözlüğün son elemanını anahtar kullanarak çıkarmak için pop(), doğrudan çıkarabilmek için popitem()
metotlarından da faydalanılabilir.

Bir sözlüğün elemanlarını listelemek için items() metodu kullanılmaktadır.

Örneğin, aşağıdaki gibi yeni adlı bir sözlük tanımlanmış olsun. Bu yeni sözlüğü baskentler sözlüğü ile birleştirmek,
ardından “Yunanistan” anahtarına sahip “Athens” değerinin “Atina” olarak değiştirebilmek için update() metodu
kullanılır.

about:blank 55/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Tanımlanan bir sözlüğün elemanlarını silmek için clear() metodu kullanılır. Aşağıdaki kod satırları çalıştırıldıktan
sonra ekrana {}yazdırılır, çünkü yeni sözlüğü değil, yalnızca sözlük elemanları silinmiştir.

Boş bir sözlük oluşturmak için aşağıdaki kod satırı çalıştırılabilir. Bir önceki örnekte olduğu gibi, eğer yeniSozluk
ekrana yazdırılmak istenirse {} yazdırılacaktır.

Sözlükler konusunda dikkat edilmesi gereken en önemli hususlardan birisi anahtarların benzersiz olmasıdır. Aynı
anda iki ya da daha fazla aynı anahtardan bulunamaz. Bunun için aşağıdaki örnek incelenebilir. Aşağıda verilen
sözlük tanımlamasında 10 anahtarı iki farklı değer için kullanılmıştır; ancak ilgili kod satırı çalıştırıldığında hata
mesajı döndürülmez. Bunun yerine aynı anahtarlardan sonuncu ve ona bağlı değer dikkate alınmaktadır.

3.5. Kümeler
Kümeler (set), benzersiz, sıralı olmayan ve değişir koleksiyonlardandır. Python dilindeki kümeler, metot ve
operatörler aracılığıyla küme matematiğinde yer alan birleşim, kesişim, fark vb. işlemleri yerleşik olarak
içermektedir (VanderPlas, 2016b). Aşağıda 1-20 arasındaki tek sayıları ve asal sayıları içeren iki farklı küme
tanımlanmıştır. Tanımlamada kıvırcık parantezler kullanılmaktadır.

Bu iki kümeye yeni elemanlar eklemek için add(), kümeden eleman silmek içinse pop() metotları kullanılabilir.

Aşağıdaki kod bloğunda asalSayilar kümesinin tekSayilar kümesi ile kesişimi, birleşimi ve asalSayilar kümesinin
tekSayilar kümesinden farkı gibi üç temel küme işlemi yer almaktadır. Bu işlemler sırasıyla, intersection(), union() ve
difference() metotlarıyla yapılabileceği gibi bu metotlar yerine sırasıyla &, | ve – operatörleri de kullanılabilir.

about:blank 56/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Bölüm Özeti
Bu bölümde, Python programlama dilindeki temel veri yapıları ele alınmıştır. İlk olarak, listeler üzerinde
durulmuştur. Listeler, birden çok veriyi bir araya getiren, sıralı ve değişir veri yapılarıdır. Elemanlarını indeksleme ve
dilimleme yöntemleriyle erişmek mümkündür. Ardından, demetler incelenmiştir. Demetler de listelere
benzemektedir; ancak değişmez veri yapılarıdır. Demetler, özellikle verilerin değiştirilmesi istenmeyen durumlarda
kullanılır. Sözlükler ise anahtar:değer çiftleriyle veri depolamak için kullanılmaktadır. Anahtarlar, benzersiz ve
değişmez olmalıdır. Sözlükler, verileri hızlı bir şekilde arama ve erişim yapmak için etkili bir yapı sunar. Son olarak,
kümeler ele alınmıştır. Kümeler, benzersiz ve sırasız veri öğelerini içeren yapılar olup, matematiksel küme işlemleri
için idealdir.

Kaynakça
Amos, D. (2018). Object-Oriented Programming (OOP) in Python 3. [Link]
oriented-programming/

Breuss, M. (2017). Python Virtual Environments: A Primer. RealPython. [Link]


environments-a-primer/

Brownlee, J. (2016, May 10). How To Load Machine Learning Data in Python. [Link].
[Link]

Bureau, I. (2019). Difference between Compiler and Interpreter. Business Insider.


[Link]

Çobanoğlu, B. (2021). Herkes İçin Python (3rd ed.). Pusula 20 Teknoloji ve Yayıncılık A.Ş.

Costa, C. D. (2020, November 23). Top 16 Python Applications in Real-World. Medium.


[Link]

Deitel, H. M., & Deitel, P. J. (2010). C ve C++ (M. Zavrak, E. Aksoy, & H. N. Karaca, Trans.; 3rd ed.). Sistem
Yayıncılık.

GeeksforGeeks. (2016, May 16). Python OOPs Concepts. GeeksforGeeks. [Link]


oops-concepts/

GeeksforGeeks. (2020, January 18). How to Install PIP on Windows ? GeeksforGeeks.


[Link]

[Link]. (2020). Memory Management in Python. [Link]


in-python/

[Link]. (2021, October 22). Top 10 Python Applications in Real World. GeeksforGeeks.
[Link]

Gupta, A. (2023). Top 10 Python IDEs in 2023: Choosing The Best One. [Link].
[Link]

about:blank 57/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Harris, C. R., Millman, K. J., Walt, S. J. van der, Gommers, R., Virtanen, P., Cournapeau, D., Wieser, E., Taylor, J.,
Berg, S., Smith, N. J., Kern, R., Picus, M., Hoyer, S., Kerkwijk, M. H. van, Brett, M., Haldane, A., Río, J. F. del,
Wiebe, M., Peterson, P., … Oliphant, T. E. (2020). Array programming with NumPy. Nature, 585(7825), 357–362.
[Link]

Hjelle, G. A. (2020). Python import: Advanced Techniques and Tips. [Link]

[Link]. (2023). Making kernels for IPython—IPython 3.2.1 documentation. [Link]


doc/3/development/[Link]

Jeevan, M. (2022). How to Select Rows and Columns in Pandas Using [ ], .loc, iloc, .at and .iat. KDnuggets.
[Link]

Jones, L. (2019). Pointers in Python: What’s the Point? – Real Python. [Link]

Koidan, K. (2021, July 15). Difference Between Python Modules, Packages, Libraries, and Frameworks.
[Link]. [Link]

Lutz, M. (2009). Learning Python (4th ed.). O’Reilly Media.

Lutz, M. (2011). Programming Python (4th ed.). O’Reilly. [Link]


python-second/0596000855/[Link]

Mathew, S. T. (2021). Python Fundamentals for Everybody—Type Conversion vs Type Coercion.


[Link]
34234e99c9c4

McKinney, W. (2010). Data Structures for Statistical Computing in Python. In S. van der Walt & J. Millman (Eds.),
Proceedings of the 9th Python in Science Conference (pp. 56–61). [Link]

McKinney, W. (2012). Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython (1st ed.).
O’Reilly Media.

Microsoft. (2022). How to create and manage Python environments in Visual Studio. [Link]
us/visualstudio/python/managing-python-environments-in-visual-studio?view=vs-2022

Panwar, P. (2022). Use existing Python packages with Spyder 5. [Link]


spyder5/

Pérez, F., & Granger, B. E. (2007). IPython: A System for Interactive Scientific Computing. Computing in Science
and Engineering, 9(3), 21–29. [Link]

Pozo Ramos, L. (2023). Python’s del: Remove References From Scopes and Containers.
[Link]

[Link]. (2023). Python Object Oriented Programming. [Link]


programming/object-oriented-programming

[Link]. (2023). PyInstaller Manual—PyInstaller 5.8.0 documentation. [Link]

Python Software Foundation. (2023a). IDLE. Python Documentation. [Link]

Python Software Foundation. (2023b). Python a programming language changes the world Final Production Content
Case Studies & Success Stories. [Link]
1-final-content-preview

[Link]. (2023a, February 15). Free Python Tutorial For Beginners: Learn Python. Python Land.
[Link]

[Link]. (2023b, February 15). Welcome to [Link]. [Link]. [Link]

Sawant, S. (2021, February 17). Semicolon in Python—AskPython. [Link]


python

about:blank 58/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Singhal, B. (2017). Iris Dataset. Mendeley Data, V1. [Link]

[Link]. (2023). Pandas Difference Between loc[] vs iloc[]. [Link].


[Link]

[Link]. (2022). Home—Spyder IDE. [Link]

Statista. (2022). Most used languages among software developers globally 2022. Statista.
[Link]

team, T. pandas development. (2020). pandas-dev/pandas: Pandas (latest) [Computer software]. Zenodo.
[Link]

Uğuz, S. (2021). Makine Öğrenmesi: Teorik Yönleri ve Pyhton Uygulamaları İle Bir Yapay Zeka Ekolü (2nd ed.).
Nobel Akademik Yayıncılık.

Uzun, E. (2023). Temel Operatörler. [Link]

VanderPlas, J. (2016a). Basic Python Semantics: Variables and Objects. In Whirlwind Tour of Python. O’Reilly
Media, Inc.
[Link]

VanderPlas, J. (2016b). Built-In Data Structures. In Whirlwind Tour of Python. O’Reilly Media, Inc.
[Link]
[Link]

VanderPlas, J. (2016c). Defining and Using Functions. In Whirlwind Tour of Python. O’Reilly Media, Inc.
[Link]
[Link]

VanderPlas, J. (2016d). Iterators. In Whirlwind Tour of Python. O’Reilly Media, Inc.


[Link]
[Link]

VanderPlas, J. (2016e). Python Data Science Handbook: Essential Tools for Working With Data (1st ed.). O’Reilly
Media.

VanTol, A. (2019). Memory Management in Python – Real Python. [Link]


management/

vegibit. (2023). Type Coercion Vs Type Casting In Python. [Link]


python/

[Link]. (2023). [Link]. [Link]

[Link]. (2023a). Beginners Guide/Overview—Python Wiki.


[Link]

[Link]. (2023b). Python Implementations. [Link]

Ünite Soruları
Soru-1 :

Hangi Python veri yapısı birden fazla öğeyi sıralı bir şekilde depolamak için kullanılır?

(Çoktan Seçmeli)

(A) Listeler

about:blank 59/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(B) Demetler

(C) Sözlükler

(D) Kümeler

(E) Diziler

Cevap-1 :

Demetler

Soru-2 :

Python dilindeki veri yapılarının temel amacı nedir?

(Çoktan Seçmeli)

(A) Rastgele sayılar üretmek.

(B) Verileri düzenlemek, saklamak ve işlemek.

(C) Programın hızını yavaşlatmak.

(D) Verileri gizlemek.

(E) Veri yedeklemek.

Cevap-2 :

Verileri düzenlemek, saklamak ve işlemek.

Soru-3 :

Aşağıdaki Python kod parçasında hangi veri yapısı kullanılmıştır?

(Çoktan Seçmeli)

(A) Listeler

(B) Demetler

(C) Sözlükler

(D) Kümeler

(E) Diziler

Cevap-3 :

Listeler

Soru-4 :

Hangi Python fonksiyonu, bir listenin uzunluğunu döndürür?

(Çoktan Seçmeli)

about:blank 60/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(A) length(liste)

(B) count(liste)

(C) len(liste)

(D) size(liste)

(E) uzunluk(liste)

Cevap-4 :

len(liste)

Soru-5 :

Bir liste içindeki elemanlara nasıl ulaşılabilir?

(Çoktan Seçmeli)

(A) listem(indeks)

(B) [Link]

(C) listem{indeks}

(D) [Link]

(E) listem[indeks]

Cevap-5 :

listem[indeks]

Soru-6 :

Hangi Python kodu, bir sözlüğün içindeki bir değeri getirir?

(Çoktan Seçmeli)

(A) [Link]("anahtar")

(B) szlk[anahtar]

(C) [Link]("anahtar")

(D) [Link]("anahtar")

(E) [Link]("anahtar")

Cevap-6 :

szlk[anahtar]

Soru-7 :

Python ile aşağıdaki gibi a ve b adlı kümeler tanımlanıyor. Buna göre, [Link](b) çalıştırıldığında geriye ne
döndürülür?

about:blank 61/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(Çoktan Seçmeli)

(A) {2,4,6,8}

(B) {1,3,5,7,12}

(C) {10}

(D) {1,2,3,4,5,6,7,8,10,12}

(E) {1,3,5,7,10,12}

Cevap-7 :

{2,4,6,8}

Soru-8 :

Bir E listesi aşağıdaki gibi tanımlanıyor. Buna göre, E[3:8:1] çalıştırıldığında geriye ne döndürülür?

(Çoktan Seçmeli)

(A) [22, 25, 28]

(B) [7, 10, 13, 16, 19]

(C) [10, 13, 16, 19, 22, 25]

(D) [10, 13, 16, 19, 22]

(E) [7, 10, 13, 16, 19, 22, 25, 28]

Cevap-8 :

[10, 13, 16, 19, 22]

Soru-9 :

Python ile bir A = [28, 15, 32, 86, 29, 30] listesi veriliyor. Listenin ikinci elemanı ile indeks numarası iki olan
elemanın toplamı hangi seçenekte doğru verilmiştir?

(Çoktan Seçmeli)

(A) 43

(B) 47

(C) 58

(D) 59

(E) 60

Cevap-9 :

47

Soru-10 :

about:blank 62/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Python ile yalnızca “elif” ismini içeren E adında bir demet tanımlanmak isteniyor. Aşağıdaki tanımlamalardan
hangisi doğrudur?

(Çoktan Seçmeli)

(A) E = {“elif”}

(B) E = (“elif”)

(C) E = (“elif”,)

(D) E = {“elif”,}

(E) E = [“elif”]

Cevap-10 :

E = (“elif”,)

about:blank 63/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

4. KOŞUL İFADELERİ
Bölümle İlgili Özlü Söz
Harika bir programcı değilim; Ben sadece harika alışkanlıkları olan iyi bir programcıyım.

Kent Beck, Yazılım Mühendisi

Kazanımlar
1. Gerçek hayattaki bir koşulun Python dili ile kontrol edilmesini sağlar ve koşul doğruysa belirli kod bloklarını
çalıştırabilir ve koşulun yanıtı doğruysa, belirli kodların yürütülmesini sağlayabilir.

[Link]çek hayattaki bir koşulun iki farklı senaryoya göre Python dili ile kontrol edilmesini sağlar, koşul doğruysa bir
kod bloğunu, aksi halde başka bir kod bloğunu çalıştırabilir.

3. Gerçek hayattaki birden fazla koşulun Python dili ile kontrol edilmesini sağlar ve bu koşullara bağlı olarak farklı
kod bloklarını çalıştırabilir.

4. Bir koşulun içinde başka bir koşulun olması durumunu göz önünde bulundurarak uygun if-elif-else yapısını
kurabilir ve çalıştırabilir.

5. Diğer programlama dillerinde belirli bir değerin farklı durumlarını kontrol etmek için kullanılan switch-case
yapısının Python versiyonu match-case yapısını verilen gerçek hayat koşullarına göre uygun bir şekilde oluşturabilir
ve çalıştırabilir.

Birlikte Düşünelim
1. Bir kullanıcıdan alınan bir sayının pozitif mi, negatif mi yoksa sıfır mı olduğu nasıl kontrol edilebilir?

2. Bir online alışveriş platformunda, bir kullanıcının sepetindeki ürünlerin toplam fiyatına göre indirimler nasıl
uygulanabilir?

3. Bir öğrencinin sınav notunu alıp, not aralığına göre harf notunu hesaplayan bir program nasıl oluşturulabilir?

4. Bir restoran menüsünde, kullanıcının seçtiği yemeğin yanında ekstra malzemeleri veya seçenekleri kontrol etmek
için iç içe geçmiş if yapısı nasıl kullanabilir?

5. Bir renk seçici programı tasarlanması isteniyor. Kullanıcının girdiği rengi alıp, hangi renk RGB kodunun
döndürüleceğine ilişkin (10 adet renk seçeneği kullanılabilir) programda match-case yapısı nasıl kullanılabilir?

Başlamadan Önce
Bu bölümde, programlamanın temel yapı taşlarından biri olan koşullu ifadeler ve karar yapılarının Python
programlama dili ile nasıl kullanıldığı gösterilmektedir. Koşullu ifadeler, programların belirli koşullara nasıl tepki
vereceğini ve farklı senaryolara nasıl yönlendirileceğini belirlemek için kullanılır. Gerçek hayattaki karar verme
biçiminin programlamada nasıl yapıldığına ilişkin detaylı açıklamalar yer almaktadır. Kitabın bu bölümünde, basit
"if" ifadesinin nasıl kullanılacağını, "if-else" ve "if-elif-else" ifadelerinin nasıl daha karmaşık senaryolar ele aldığını,
iç içe geçmiş (nested) "if" ifadelerinin nasıl kullanılabileceğini ve Python programlama dilinde yer alan "match-
case" yapısının nasıl etkili bir şekilde kullanılabileceği gösterilmektedir. Her bir konu başlığı, gerçek dünya
uygulamaları ve örneklerle desteklenerek, okuyucuların koşullu ifadelerin ve karar yapılarının fonksiyonunu ve
gücünü anlamalarına yardımcı olacaktır.

4.1. if-elif-else Koşul İfadeleri

about:blank 64/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Tıpkı gündelik hayatta olduğu gibi programlamada da karar vermeyi gerektirecek durumlar ve buna bağlı birtakım
işlemlerin gerçekleştirilmesine ihtiyaç duyulmaktadır. Programlamada karar vermek denildiğinde akla koşul
ifadeleri (conditional statements) ve elbette if-ifadesi gelmektedir. Bu bölümde if koşul ifadesi en temelden en
karmaşığa doğru adım adım anlatılmıştır.

Örneğin; iki sayıdan büyük olanın bulunması istensin. Aşağıdaki kod bloğunda; içeride tanımlanan x değişkeni ile
kullanıcıdan alınan y değişkeni if ile kontrol edilmektedir. Eğer x, y’ye eşitse konsola “İki değişken birbirine eşittir.”
yazdırılır. if cümlesinin yazım biçimi en basit hali ile aşağıda verildiği şekildedir. if anahtar kelimesinden sonra
karşılaştırma ifadesi yer almaktadır ve ardından : işareti konur. Buradan alt satıra geçildiğinde girinti verilir, daha
içten başlanır. Kodların düzgün çalışması için girintilere dikkat edilmesi çok önemlidir. if-den sonra gelen
mantıksal ifadenin doğru (True) olması durumunda Consol’a “x eşittir y” yazdırılacaktır.

Verilen if ifadesi tek satırda aşağıdaki biçimde gösterilebilir (short-hand if).

if’den sonra sadece tek bir koşul gelebileceği gibi, and, or gibi mantıksal operatörler kullanılarak birbirine bağlanmış
olan birleşik (compound) bir koşul ifadesi de yer alabilir. Bu durumda birleşik koşul ifadesinden dönen nihai sonuç
göz önünde bulundurulacaktır. Örneğin aşağıda x==y, x>0 ve y>0 gibi üç farklı koşul and operatörü ile bağlanmıştır.
Yani ilk örnekte olduğu gibi yalnızca x’in y’ye eşit olması yetmez. Bu örnekte if koşuluna ait bloğun
çalıştırılabilmesi için (konsola “İki değişken birbirine eşit ve pozitiftir.” yazdırılması için) x, y’ye eşit olmalı ve x
sıfırdan büyük olmalı ve y sıfırdan büyük olmalıdır. and ile bağlanan birleşik bir koşuldan elde edilecek nihai
sonucun True döndürülmesi için üç koşul sonucunun da ayrı ayrı True olması gereklidir. Diğer tüm durumlarda
konsola herhangi bir şey yazdırılmayacaktır.

Ayrıca yine if-den sonra sadece tek bir kod satırı yer almak zorunda değildir. Peş peşe birden fazla işlemin
gerçekleştirilmesi de mümkündür; ancak bu işlemler sıralanırken girintiye dikkat edilmelidir. Eğer if bloğunda birden
fazla işlem gerçekleştirilecekse, if-den sonraki tüm komut satırlarının aynı hizada olması gerekir. Örneğin; aşağıda
kullanıcının 25 girmesi durumunda, öncelikle x ve y toplanır ve z değişkenine atanır, ardından konsola “İki değişken
birbirine eşittir.” yazdırılır ve son olarak alt satıra “Toplam= 50” biçiminde z değişkeninin değeri yazdırılır.

Bu noktaya kadar verilen örneklerde ancak if-den sonra gelen koşulun True olması durumunda ne yapılacağına dair
komutlar verilmiştir. Oysa, program içinde if koşulunun sağlanmadığı diğer durumlar için geçerli işlem ya da
işlemlerin de tanımlanması gerekebilir. Bu durumda else anahtar kelimesi kullanılır.
about:blank 65/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Aşağıda verilen kod bloğunda amaç verilen iki sayıdan büyük sayının ekrana yazdırılmasıdır. Örnekte x ve y gibi iki
değişken tanımlanmıştır. Eğer x, y’den büyükse, if bloğu içindeki print(), aksi halde ise else bloğu içindeki print()
çalışacaktır. x ve y’nin verilen değerlerine göre konsola “100 50 den büyüktür.” yazdırılır. Eğer y’nin değeri 150
yapılırsa yeni durumda konsola “100 küçük eşittir 150” yazdırılır.

Bu örnek aşağıdaki biçimde de ifade edilebilir (short-hand if-else).

Verilen örnekte iki sayıdan birinin diğerine göre büyük olma durumu ve aksi durumu dikkate alınmıştır; ancak
verilen sayılar birbirine eşit olabilir ve bu durum için de ek bir kontrol ifadesine ihtiyaç duyulabilir. Bu nedenle if’de
kontrol edilen duruma ilâveten farklı koşulların da kontrolü söz konusu ise her biri için elif anahtar kelimesi
kullanılabilir. Aşağıdaki örnekte x 10, y ise 500 olarak tanımlanmıştır. Öncelikle x>y koşulu kontrol edilir, False geri
döndürüldüğünden elif’te yer alan x<y koşulu kontrol edilir. True geri döndürüldüğünden konsola “x küçüktür y”
yazdırılır, else çalıştırılmaz.

Bazı durumlarda programcılar iç-içe if (nested if) ifadelerinden yararlanmaktadır. Örneğin; aşağıda verilen örnekte
eğer x, 20’den küçükse içteki if koşulunun kontrolü sağlanır.

Python dilinde koşul ifadelerinin temel kullanım türleri şu şekilde özetlenebilir:

if ifadeleri boş olamaz, ancak herhangi bir nedenle içeriği olmayan bir if ifadesi bulunuyorsa, hata almamak için pass
ifadesi kullanılabilir. Buna göre aşağıdaki kod bloğu incelendiğinde x’in sıfırdan küçük eşit olması durumunda hiçbir
işlem yapılmayacaktır.

about:blank 66/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Programcıların C, C++ gibi programlama dillerde aşina oldukları, belirli bir değişken değerinin bir dizi koşul itibari
ile kontrol edildiği ve buna göre ilgili işlemin gerçekleştirildiği switch-case yapısının Python versiyon 3.10’a kadar
birebir kullanımı mevcut değildi. Versiyon 3.10’dan sonra switch-case benzeri bir yapı olan match-case tanıtılmıştır.

match-case, match anahtar kelimesiyle başlatılı[Link] deyimi, bir parametre almakta ve bir blok oluşturmaktadır.
Ardından bu blokta match-te alınan parametreyle eşleşmesi için case anahtar sözcüğü ile çeşitli durumlar incelenir.
Alınan parametrenin tanımlanan hiçbir durumla eşleşmemesi halinde "_" joker karakteri çalıştırılacaktır. Bu nedenle,
kodlama bu durum göz önünde bulundurularak gerçekleştirilmelidir.

Örneğin; gun adında tanımlanan bir değişkenin aldığı değere göre haftanın günlerini döndüren kısa bir Python
programı düşünülsün.

Yukarıda da belirtildiği üzere, örneğin gerçekleştirilmesi için Python 3.10 ve üzeri bir versiyona sahip olunması
gerekmektedir. Bunun için; (1) Bölüm 1.3’te bağımsız kurulumunu gerçekleştirdiğiniz Python 3.11.4 konsolu
kullanılabilir, (2) Bölüm 1.3.10’daki talimatlar gereği Spyder’daki Python ortamını 3.11.4 olacak şekilde
değiştirdikten sonra Spyder’da çalıştırılabilir, ya da (3) Python 3.10 ve üzerine sahip farklı bir editörde çalıştırılabilir.

gun adlı bir değişken tanımlanır ve ardından bu değişken yalnızca 1 ile 7 arasında sayı alabileceğinden ilgili
durumlara karşılık ekrana yazdırılacak olan çıktılar her bir case-te tanımlanır. En sondaki case-te gun değişkeninin 1
ile 7 arasındaki sayılardan farklı bir değer alması durumunda kullanıcıya “Lütfen 1-7 arasında bir sayı giriniz.”
şeklinde bir uyarı mesajı verilmesi sağlanır.

Verilen ilk ekran görüntüsünde gun değişkeni 5 değerini almıştır, buna göre beklenen çıktı Cuma olarak elde
edilmiştir. İkinci ekran görüntüsünde ise gun değişkeni karakter olarak 3 değerini almıştır. case-lerde buna uygun bir

about:blank 67/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

kontrol mevcut olmadığından son case ile belirlenen mesaj ekrana yazdırılmıştır. Eğer program kodunda, 3. case-te
aşağıdakine benzer bir revizyon yapılırsa “Çarşamba” çıktısı elde edilecektir.

4.2. Koşul İfadeleri ile Örnekler


Bu bölümde, Bölüm 3.1.’de teorik açıklamaları verilen koşul ifadeleri ile ilgili farklı örnekler verilmiştir.

Örnek 1: Klavyeden girilen ilk sayının ikinci sayı ile tam bölünüp bölünmeyeceğini kontrol eden, sayının bölünme
ve bölünmeme durumuna göre kullanıcıya bilgi mesajı döndüren Python programını yazınız.

Çözüm: Örnek program yazılırken öncelikle klavyeden 2 sayı girilmesi beklenmektedir. Bu, input() fonksiyonu ile
sağlanır; ancak unutulmamalıdır ki input() fonksiyonu geriye karakter veri tipi döner. Dolayısıyla, girilen değer
basitçe tam sayı veri tipine döndürülmüştür. Ardından, if bloğunda öncelikle ilk sayının ikinci sayıya bölümünden
kalan sıfıra eşit mi? diye kontrol edilir. Eğer sıfırsa, yani ilk sayı ikinci sayıya tam bölünüyorsa, program çıktısı tam
bölünür mesajı olacak, aksi halde program çıktısı tam bölünmez mesajı olacaktır. İki farklı duruma ilişkin durum
incelemelerine ait veri girişi ve programın döndürdüğü sonuca aşağıda yer verilmiştir.

Peki ya kullanıcı ikinci sayı olarak 0 girerse?

about:blank 68/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Görüldüğü gibi sıfır ile bölme hatası alınır. Bu nedenle; girilen ikinci sayının da (payda) kontrol edilmesi ve sıfır
olması durumunda kullanıcıdan farklı bir sayı girmesi istenebilir. Bu nedenle de program kodları şu şekilde
yenilenebilir.

Bu yeni durumda, sayılar girildikten sonra s2 kontrol edilir. Eğer sıfırsa, program yeniden çalıştırıldığında
kullanıcıdan farklı bir sayı girmesi istenir, aksi halde programın çalışma prensibi bir önceki aşamada olduğu gibi
kalacaktır.

Örnek 2: Değerleri atanma esnasında verilen a, b, c adlı değişkenlerle bir üçgen oluşturup oluşturulamayacağını
döndüren Python programını yazınız.

Çözüm Yolu: Üçgen oluşturma konusunda üçgen eşitsizliği yardımcı olacaktır. Üçgen eşitsizliğine göre iki kenarın
toplamı üçüncüden büyük olmalıdır.

Çözüm: Programın başında a, b, c değişkenlerine ilk değer atamaları yapılmaktadır. Sonrasında iç-içe if yapısıyla
a+b>c, a+c>b, b+c>a durumları kontrol edilmiş ve bu üç koşulun birlikte (üçgen eşitsizliğinin) sağlanması durumuna
uygun üçgen oluşturulacağı mesajı döndürülmüştür. Aksi halde, yani üç koşuldan birinin bile sağlanamaması
durumunda üçgenin oluşturulamayacağına yönelik mesaj döndürülmüştür. Programda a, b, c değişkenlerinin
değerleri sırasıyla 5, 5, 10 şeklinde tanımlandığından elde edilecek çıktı: 5 - 5 - 10 bir üçgen oluşturmaz. şeklinde
olacaktır.

a, b, c = 5, 5, 5 şeklinde tanımlanırsa, programdan elde edilecek çıktı: 5 - 5 - 5 bir üçgen oluşturur. olacaktır.

Aynı problemin çözümü için farklı bir çözüm yolu da kullanılabilir. Koşulların iç-içe if ile ifade edilmesi yerine and
bağlaçları ile bağlanarak kontrolü de söz konusu olabilir. İlgili Python kodu ve kod çalıştırıldığında elde edilen ekran
görüntüsü aşağıda verilmiştir.

about:blank 69/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Elbette başlangıçta a, b ve c değişkenlerini sıfırdan farklı olup olmadığının kontrolü de sağlanabilir. Girilen
sayılardan hangisinin sıfırdan farklı olduğunu bulmak için de basamaklı bir kontrol işlemi sağlanabilir; ancak
aşağıdaki kod bloğu da problemin çözümü için yeterli olacaktır. Üçgen eşitsizliği ile ilgili esas kontrol işlemi, and
bağlacıyla a, b ve c’nin sıfırdan farklı olup olmadığının kontrol edildiği if bloğu altına alınmıştır.

Örnek 3: National Institutes of Health’e göre verilen yaş aralıklarına göre girilen bir yaşın kategorisini bulup, ekrana
yazdıran Python kodunu yazınız. Bu örnekte 140 yaş üst sınır olarak belirlenmiştir. (Yaş aralıkları için bknz.
[Link]

• Yenidoğan + Bebek: 1 yıla kadar.

• Çocuklar: 1 yaşından 12 yaşına kadar.

• Ergenler: 13 ila 17 yaş arası.

• Yetişkinler: 18 yaş ve üstü.

• Yaşlı: 65 ve üzeri.

Çözüm: Program yazılırken öncelikle kullanıcıdan bir yaş değeri almakta başlanmıştır. Ardından kullanıcıya
gösterilecek yazı için mesaj adlı bir değişken kullanılmıştır. Sonrasında if-elif-else kullanılarak, örnek açıklamasında
verilen her bir yaş kategorisi için koşullar kontrol edilmiştir. Aralıklar yazılırken unutulmaması gereken herhangi bir
değerin dışarıda kalması ya da birden fazla duruma dâhil edilip edilmemesidir. Aralıklar and bağlacıyla
oluşturulmuştur ve else-bloğunda kategoriler dışında girilecek bir değer için kullanıcıya gösterilecek çıktı değeri
belirlenmiştir. if-elif-else’den sonra artık print() fonksiyonu kullanılarak mesaj değişkeninin değeri ekrana
yazdırılmıştır. Dolayısıyla Python programı çalıştırıldığında sonuçlar aşağıdaki gibi elde edilecektir:
about:blank 70/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

• Yaş = 36 ise program çıktısı: Yetişkin

• Yaş = -8 ise program çıktısı: Lütfen uygun bir yaş değeri giriniz.

• Yaş = 0.6 ise program çıktısı: Yenidoğan + Bebek

• Yaş = 290 ise program çıktısı: Lütfen uygun bir yaş değeri giriniz.

Örnek 4: Bir sistemin yönetici kullanıcı adı sys_admn, parolası yrjRttTk0=*? olarak tanımlanıyor. Klavyeden
girilen kullanıcı adı ve şifre sistem yöneticisi için tanımlananlarla eşleşmesi durumunda herhangi bir işlemin
gerçekleştirilmediği, aksi halde girilen bilgilerden hangisinin uyuşmadığı mesajının kullanıcıya döndürüldüğü Python
kodunu yazınız.

Çözüm: Verilen Python programı sistem yöneticisinin kullanıcı adı ve şifresinin tanımlandığı satırlarla
başlamaktadır. Bu iki bilgi string olarak tutulmaktadır. Ardından input() fonksiyonu ile kullanıcıdan kullanıcı adı ve
şifre bilgisini giriş yapması beklenmektedir. Bu noktada input() fonksiyonu da string döndüreceğinden bu noktada
herhangi bir veri tipi dönüşüne ihtiyaç yoktur.

Programda ilk beklenen kullanıcı adı ve şifrenin doğru girilmesi durumunda herhangi bir şey işlemin
gerçekleştirilmemesidir. Bu durum if bloğunda kontrol edilmiş, pass anahtar kelimesiyle de herhangi bir işlem
gerçekleştirilmeden geçiş yapılması sağlanmıştır. Ardından girilen bilgilerden hangisinin uyuşmadığı mesajının
kullanıcıya gösterilmesi gerekmektedir. Bu nedenle; ilk elif bloğunda kullanıcı adının doğru şifrenin yanlış olması,
ikinci elif bloğunda kullanıcı adının hatalı şifrenin doğru olması, son olarak else bloğunda ise hem kullanıcı adı hem
de şifrenin hatalı olması durumu kontrolü gerçekleştirilmiş ve gerekli hata mesajı kullanıcıya döndürülmüştür.
Aşağıda farklı durumlar için elde edilen ekran görüntülerine yer verilmiştir.

about:blank 71/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Örnek 5: Bir mağaza müşterilerinin harcamalarına göre indirim yapmayı planlıyor. İndirim için alt sınır 500TL
olarak belirlenmiştir. 500-1800TL’lik harcama aralığında %10’luk, 1800-6000TL’lik harcama aralığında %30 ve
6000TL üzerindeki harcamalara ise %50 indirim yapılacaktır. Buna göre, toplam harcama miktarı girilen bir
müşterinin ödeme miktarını döndüren Python programını yazınız.

Çözüm: Programda, odemeMiktari değişkeninde müşterinin normalde yapacağı ödeme miktarı tutulmaktadır. if-elif-
else bloğu ile verilen aralıklar göz önünde bulundurularak müşterinin yapacağı yeni ödeme tutarı (sonFiyat)
belirlenmiştir.

Müşteri 500TL’nin altında harcama yaptıysa herhangi bir indirim uygulanmayacaktır. Çünkü indirim alt sınırı
500TL’dir. Dolayısıyla sonFiyat, odemeMiktarina eşit olacaktır. İlk başta if bloğu kontrol edilmekte, verilen koşul
sağlanmazsa bir sonraki elif bloğuna geçileceği bilinmektedir. Bu nedenle eğer ilk elif bloğu çalışırsa odemeMiktari
için artık 500TL’nin altında olmadığı anlaşılabilir. Bu kez artık odemeMiktarı 500-1800TL aralığında olup olmadığı
kontrol edilmektedir anlamına gelir. Benzer mantık, sonraki elif blokları için de geçerlidir. else bloğunda 6000TL ve
üzeri harcamalar için yapılan %50’lik indirim uygulanacaktır. Program son olarak müşterinin yapacağı ödeme
miktarının ekrana yazdırılmasıyla son bulmaktadır. 2500TL’lik bir harcama yapan müşteri için if çalışmaz, ilk elif
çalışmaz; ancak ikinci elif bloğu çalıştırılacaktır. Unutulmamalıdır ki; bu aşamadan sonra artık else-bloğunun kontrol
edilmesine gerek yoktur, çünkü if-elif-else boyunca eğer bir koşul sağlanmazsa diğerine, ardından diğerine ve
ardından bir sonrakine gidilerek kontrol sağlanır. Bu nedenle de koşul sağlandıktan sonra, kendinden sonra gelen
koşul(lar) kontrol edilmeyecektir. Yapılması gereken ödeme: 1750.0 çıktısı elde edilir. Müşterinin harcaması
(odemeMiktari) 6500TL ise bu durumda Yapılması gereken ödeme: 3250.0 çıktısı elde edilir.

Örnek 6: birer reel sayı ve olmak üzere, şeklinde verilen, katsayıları kullanıcı
tarafından girilen ikinci dereceden bir denklemin köklerini bulan Python programını yazınız.

Çözüm yolu: ikinci dereceden verilen bir denklemin diskriminantı olarak tanımlanır ve denklemin kökleri
hakkında bilgi verir:

• Eğer diskriminant sıfırdan büyükse, denklemin iki farklı reel kökü vardır.

• Eğer diskriminant sıfıra eşitse, denklemin reel kökleri vardır ve birbirine eşittir.

• Eğer diskriminant sıfırdan küçükse, bu defa da verilen denklemin kökleri komplekstir ve birbirinden farklıdır.
about:blank 72/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Çözüm: Diğer örneklerden farklı olarak bu örnekte kök alma işlemine ihtiyaç duyulduğundan bu işlem için math
kütüphanesinde yer alan sqrt() fonksiyonu kullanılmıştır. Bunun için programın başında import math ile kütüphane
çalışmaya dâhil edilmiştir. Bu dâhil etme işleminin gerçekleştirildiği kod satırından sonra artık math kütüphanesinin
içinde yer alan fonksiyonlar çalışma ortamında kullanılabilir hale gelmiştir.

Program çalıştırılırken ilk üç kod satırında kullanıcıdan denklemin katsayıları alınır ve ardında reel sayı (float
dönüşümü yapılmıştır) olarak a, b ve c değişkenleri tanımlanmış olur. Sonrasında, denklemin diskriminantı delta
hesaplanır. Denklem ikinci dereceden bir denklem olduğu için a’nın sıfırdan farklı bir değer alması gerekir. Bu
nedenle öncelikle bu durum kontrol edilir. Eğer sıfıra eşit ise kullanıcının programı farklı bir a değeri kullanarak
yeniden çalıştırmaya yönlendirilir; aksi halde ise denklem kökleri ile ilgili koşullara geçilir.

Bu problemde diskriminanta bağlı üç farklı koşul olduğundan, if-elif-else kullanılması uygundur. if bloğunda
köklerin reel ve birbirinden farklı olma durumu, elif bloğunda köklerin reel, birbirine eşit olma durumu ve son olarak
else bloğunda iki farklı kompleks kök olma durumu incelenir. Her bir durumda, örneğin çözüm yolunda verilen kök
hesaplamaları gerçekleştirilir ve kullanıcıya bilgi mesajı verilir. Dikkat edilecek önemli bir husus, else bloğundaki
kompleks sayı gösterim biçimidir. Kompleks sayı oluşturucusunda virgülden önceye reel, sonraya ise sanal (imajiner)
kısım yazılmıştır. Sonuçta; Girilen denklemin iki farklı reel kökü vardır: -0.5 -2.0 elde edilir.

a, b, c = 2, 4, 2 olmak üzere elde edilecek çıktı: Girilen denklemin iki farklı reel kökü vardır ve bunlar birbirine
eşittir: -1.0 -1.0

a, b, c = 2, 4, 2 olmak üzere elde edilecek çıktı: Girilen denklemin iki farklı kompleks kökü vardır:
(-0.25+0.37080992435478316j) (-0.25-0.37080992435478316j)

about:blank 73/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Örnek 7: Bir kargo firması için ikamet edilen aşağıdaki şehirlere göre bir kargonun kaç günde teslim edilebileceğini
döndüren Python programını match-case kullanarak yazınız.

• İzmit, Sakarya, Yalova (1 iş günü)

• Muğla, Antalya, Alanya (2 iş günü)

Çözüm: Bu örnekte, verilen illere göre kargonun hangi ilde ne zaman olacağı bilgisi iletilmek istenmektedir.
Başlangıçta, kullanıcıdan il adı alınmaktadır. İl adı programda sehirAdi olarak tutulmaktadır. match parametre olarak
sehirAdinı almaktadır. Bu doğrultuda her bir case-te girilen şehir adına göre kargonun teslimatına ilişkin
bilgilendirme mesajı oluşturulmuştur. case-lerde kontrol edilen hiçbir durum karşılanmadığında case _:
çalıştırılacaktır. Aşağıda programa farklı girdiler verilmesiyle elde edilen ekran görüntülerine yer verilmiştir.

Peki ya klavyeden “Sakarya” yerine “SAKARYA” girilirse?

Her ne kadar bizler için “Sakarya” ve “SAKARYA” aynı anlama gelse de bilgisayar için durum farklıdır! Sakarya
şehri için teslimat tarihi belirli olmasına rağmen, sanki listelenmeyen bir şehir adıymış gibi Üzgünüz, kargonun
belirtilen şehre teslimat tarihi bilinmemektedir. mesajı döndürülmüştür. Bu gibi büyük-küçük harften
kaynaklanabilecek hataları ortadan kaldırmak için ya her farklı il yazımı kombinasyonu için farklı bir case
oluşturulur -çok fazla kombinasyon olacağından bu aslında hiç de efektif olmayan bir çözümdür- ya da Python kodu
aşağıdaki gibi değiştirilebilir.

about:blank 74/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Kullanıcı şehir adını girdikten sonra, ne yazarsa yazsın girdiği [Link]() ile büyük harflere çevrilir ve sehirAdi
değişkenine atanır. case-lerde de sadece büyük harfli şehir adı kontrolü sağlanır. Böylece hatalı bir durumla karşı
karşıya kalınmaz.

Örnek 8: Basit bir hesap makinesi programı geliş[Link] operatöre (+, -, *, /) göre gerekli işlemin
yapılmasını sağlayan ve işlem sonucu ekrana yazdıran, belirlenen koşulların dışında bir durum oluşursa “Geçersiz
işlem veya sayı girişi. Lütfen tekrar deneyiniz.” mesajını ekrana yazdıran Python programını match-case ve if
yapılarını kullanarak yazınız.

Çözüm: Aşağıdaki kod bloğunun ilk satırında islem, s1 ve s2 değişkenlerine sırasıyla +, 20 ve 30 değerleri
atanmıştır. Çözüm yolu toplama işlemi üzerinden anlatılacaktır. Programın farklı senaryolarının da incelenebilmesi
için yorum satırı olarak dört farklı kod satırı daha eklenmiştir. Okuyucu, yorum satırını kaldırarak teker teker kod
bloğunu çalıştırabilir.

match yapısında islem değişkeninin farklı durumları kontrol edilmektedir. İlk caseislem değişkeninin + olması
durumu için oluşturulmuştur. Bu durum için, eğer s1 ve s2 int ya da float ise s1 ve s2’nin toplamı snc değişkenine
atanacaktır ve ardından ekrana 20 + 30 = 50 yazdırılacaktır. Diğer case’lerde de sırasıyla -, * ve / için benzer kontrol
işlemleri sağlanmıştır. Hatta / işlemi için ilave olarak bölenin sıfırdan farklı olup olmadığı kontrol edilmiştir. Eğer
islem için case’lerde verilen hiçbir ifade sağlanmazsa ekrana “Geçersiz işlem veya sayı girişi. Lütfen tekrar
deneyiniz.” yazdırılacaktır.

about:blank 75/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Örnek 9: Bir kişinin yaşına göre, oy kullanıp kullanamayacağı durumunu ekrana yazdıran Python programını short-
hand if-else kullanarak yazınız.

Çözüm: Programda short-hand if-else kullanarak kişinin oy kullanma yaşının üzerinde mi (if tarafı), yoksa altında
mı (else tarafı) olduğu kontrol edilmektedir. İlk kod satırında yas değişkeni 55 değerini almıştır. Bu nedenle yas >=
18 koşulu True döndüreceğinden durum değişkeni uygundur değerini alır. Ardından print() fonksiyonu yardımıyla
Kişi oy vermek için uygundur. ekrana yazdırılmaktadır.

Eğer yas değişkeni değerinin klavyeden girilmesi beklenirse program kodu aşağıdaki biçimde revize edilebilir.

Örnek 10: Klavyeden girilen bir sayının 1-100 arasında olup olmadığını kullanarak kontrol eden Python programını
short-hand if-else kullanarak yazınız.

about:blank 76/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Çözüm: Programa klavyeden girilecek sayının alınması ile başlanmaktadır. Bunun için bir sayi değişkeni tanımlanır.
Ardından short-hand if-else kullanarak bir sayının 1-100 arasında olup olmadığı kontrol edilir. if bloğunda 1 <= sayi
<= 100 gibi birleşik bir kontrol ifadesi yazılmıştır. Eğer sayı 1-100 aralığında ise durum değişkeni “aralığındadır”
olarak, belirlenen aralıkta değilse “aralığında değildir” şeklinde değer alır. Sonrasında print() içinde sayının durumu
ile ilgili bilgi ekrana yazdırılır.

Örnek 11: Klavyeden girilen boy (m) ve kiloya (kg) göre hastanın Vücut Kitle İndeksini (VKİ) hesaplayan, aşağıda
verilen aralıkları kullanarak hastanın ait olduğu kategoriyi hesaplanan VKİ bilgisi ile ekrana yazdıran Python
programını short-hand if-else kullanarak yazınız.

Çözüm Yolu: Vücut Kitle İndeksini (VKİ) hesaplamak için aşağıdaki formül kullanılabilir
([Link]

• 18.5 kg/m2’nin altında ise zayıf

• 18.5-24.9 kg/m2 arasında ise normal kilolu

• 25-29.9 kg/m2 arasında ise fazla kilolu

• 30-34.9 kg/m2 arasında ise I. Derece obez

• 35-39.9 kg/m2 arasında ise II. Derece obez

• 40 kg/m2 üzerinde ise III. Derece morbid obez

Çözüm: Program kodu yazılmaya başlanırken öncelikle klavyeden girilmesi gereken boy ve kilo bilgisi kullanıcıdan
alınmaktadır. Bu değerler küsuratlı olabileceğinden input() fonksiyonu yardımı ile geri döndürülen değer float veri
tipine çevrilmiştir. Ardından VKİ hesaplanmıştır (vki). Sonrasında, vkiye göre hastanın hangi kategoride olduğunun
(durum) belirlenmesi için kontrol işlemlerine başlanmıştır. Verilen aralıklara göre vki kontrolü için if-elif-else yapısı
kullanılmıştır. Sonrasında ise hastanın VKİ ile VKİ’ye göre belirlenen durumu ekrana yazdırılmıştır. print()
fonksiyonu içinde vkiround() fonksiyonu yardımıyla virgülden sonra 2 basamak yuvarlanarak ekrana yazdırılmıştır.

about:blank 77/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Bölüm Özeti
Bu bölümde, programlamanın yapı taşlarından biri olan if koşul ifadesine odaklanılmıştır. Koşul ifadeleri, belirli bir
durumun doğru veya yanlış olmasına göre bilgisayarın farklı kod bloklarının çalıştırılmasını sağlamaktadır. İlk
olarak, if yapısının en sade, tekil kullanımı ve nasıl çalıştığı açıklanmıştır. Ardından if-else, if-elif-else yapıları
örneklerle anlatılmıştır. Sonrasında, koşul ifadelerinin iç içe geçmiş hali ile match-case kullanımına yer verilmiştir.
Programlama süreçlerinde karar mekanizmalarının nasıl oluşturulacağını anlamak isteyenler için önemli bir konu
olup, kavramların daha iyi anlaşılabilmesi için konu örneklerle desteklenmiştir.

Kaynakça
Amos, D. (2018). Object-Oriented Programming (OOP) in Python 3. [Link]
oriented-programming/

Breuss, M. (2017). Python Virtual Environments: A Primer. RealPython. [Link]


environments-a-primer/

Brownlee, J. (2016, May 10). How To Load Machine Learning Data in Python. [Link].
[Link]

Bureau, I. (2019). Difference between Compiler and Interpreter. Business Insider.


[Link]

Çobanoğlu, B. (2021). Herkes İçin Python (3rd ed.). Pusula 20 Teknoloji ve Yayıncılık A.Ş.

Costa, C. D. (2020, November 23). Top 16 Python Applications in Real-World. Medium.


[Link]

Deitel, H. M., & Deitel, P. J. (2010). C ve C++ (M. Zavrak, E. Aksoy, & H. N. Karaca, Trans.; 3rd ed.). Sistem
Yayıncılık.

GeeksforGeeks. (2016, May 16). Python OOPs Concepts. GeeksforGeeks. [Link]


oops-concepts/

GeeksforGeeks. (2020, January 18). How to Install PIP on Windows ? GeeksforGeeks.


[Link]
about:blank 78/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

[Link]. (2020). Memory Management in Python. [Link]


in-python/

[Link]. (2021, October 22). Top 10 Python Applications in Real World. GeeksforGeeks.
[Link]

Gupta, A. (2023). Top 10 Python IDEs in 2023: Choosing The Best One. [Link].
[Link]

Harris, C. R., Millman, K. J., Walt, S. J. van der, Gommers, R., Virtanen, P., Cournapeau, D., Wieser, E., Taylor, J.,
Berg, S., Smith, N. J., Kern, R., Picus, M., Hoyer, S., Kerkwijk, M. H. van, Brett, M., Haldane, A., Río, J. F. del,
Wiebe, M., Peterson, P., … Oliphant, T. E. (2020). Array programming with NumPy. Nature, 585(7825), 357–362.
[Link]

Hjelle, G. A. (2020). Python import: Advanced Techniques and Tips. [Link]

[Link]. (2023). Making kernels for IPython—IPython 3.2.1 documentation. [Link]


doc/3/development/[Link]

Jeevan, M. (2022). How to Select Rows and Columns in Pandas Using [ ], .loc, iloc, .at and .iat. KDnuggets.
[Link]

Jones, L. (2019). Pointers in Python: What’s the Point? – Real Python. [Link]

Koidan, K. (2021, July 15). Difference Between Python Modules, Packages, Libraries, and Frameworks.
[Link]. [Link]

Lutz, M. (2009). Learning Python (4th ed.). O’Reilly Media.

Lutz, M. (2011). Programming Python (4th ed.). O’Reilly. [Link]


python-second/0596000855/[Link]

Mathew, S. T. (2021). Python Fundamentals for Everybody—Type Conversion vs Type Coercion.


[Link]
34234e99c9c4

McKinney, W. (2010). Data Structures for Statistical Computing in Python. In S. van der Walt & J. Millman (Eds.),
Proceedings of the 9th Python in Science Conference (pp. 56–61). [Link]

McKinney, W. (2012). Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython (1st ed.).
O’Reilly Media.

Microsoft. (2022). How to create and manage Python environments in Visual Studio. [Link]
us/visualstudio/python/managing-python-environments-in-visual-studio?view=vs-2022

Panwar, P. (2022). Use existing Python packages with Spyder 5. [Link]


spyder5/

Pérez, F., & Granger, B. E. (2007). IPython: A System for Interactive Scientific Computing. Computing in Science
and Engineering, 9(3), 21–29. [Link]

Pozo Ramos, L. (2023). Python’s del: Remove References From Scopes and Containers.
[Link]

[Link]. (2023). Python Object Oriented Programming. [Link]


programming/object-oriented-programming

[Link]. (2023). PyInstaller Manual—PyInstaller 5.8.0 documentation. [Link]

Python Software Foundation. (2023a). IDLE. Python Documentation. [Link]

Python Software Foundation. (2023b). Python a programming language changes the world Final Production Content
Case Studies & Success Stories. [Link]
1-final-content-preview

about:blank 79/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

[Link]. (2023a, February 15). Free Python Tutorial For Beginners: Learn Python. Python Land.
[Link]

[Link]. (2023b, February 15). Welcome to [Link]. [Link]. [Link]

Sawant, S. (2021, February 17). Semicolon in Python—AskPython. [Link]


python

Singhal, B. (2017). Iris Dataset. Mendeley Data, V1. [Link]

[Link]. (2023). Pandas Difference Between loc[] vs iloc[]. [Link].


[Link]

[Link]. (2022). Home—Spyder IDE. [Link]

Statista. (2022). Most used languages among software developers globally 2022. Statista.
[Link]

team, T. pandas development. (2020). pandas-dev/pandas: Pandas (latest) [Computer software]. Zenodo.
[Link]

Uğuz, S. (2021). Makine Öğrenmesi: Teorik Yönleri ve Pyhton Uygulamaları İle Bir Yapay Zeka Ekolü (2nd ed.).
Nobel Akademik Yayıncılık.

Uzun, E. (2023). Temel Operatörler. [Link]

VanderPlas, J. (2016a). Basic Python Semantics: Variables and Objects. In Whirlwind Tour of Python. O’Reilly
Media, Inc.
[Link]

VanderPlas, J. (2016b). Built-In Data Structures. In Whirlwind Tour of Python. O’Reilly Media, Inc.
[Link]
[Link]

VanderPlas, J. (2016c). Defining and Using Functions. In Whirlwind Tour of Python. O’Reilly Media, Inc.
[Link]
[Link]

VanderPlas, J. (2016d). Iterators. In Whirlwind Tour of Python. O’Reilly Media, Inc.


[Link]
[Link]

VanderPlas, J. (2016e). Python Data Science Handbook: Essential Tools for Working With Data (1st ed.). O’Reilly
Media.

VanTol, A. (2019). Memory Management in Python – Real Python. [Link]


management/

vegibit. (2023). Type Coercion Vs Type Casting In Python. [Link]


python/

[Link]. (2023). [Link]. [Link]

[Link]. (2023a). Beginners Guide/Overview—Python Wiki.


[Link]

[Link]. (2023b). Python Implementations. [Link]

Ünite Soruları
Soru-1 :
about:blank 80/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Bir hastanın kan şekerinin (kanSekeri) 70’den düşük olması durumunda “Uyarı !” mesajı döndürülmek isteniyor. Bu
durum aşağıdaki seçeneklerin hangisinde uygun biçimde sağlanmaktadır.

(Çoktan Seçmeli)

(A) if kanSekeri<70= print("Uyarı !")

(B) if kanSekeri<70: print("Uyarı !")

(C) if kanSekeri>70: print("Uyarı !")

(D) elif kanSekeri<70: print("Uyarı !")

(E) ifelse kanSekeri<70: print("Uyarı !")

Cevap-1 :

if kanSekeri<70: print("Uyarı !")

Soru-2 :

Bir restoran sahibi müşterinin sipariş verdiği yemeklerin fiyatlarını kontrol etmek istiyor. Eğer belirli bir yemek için
ödeme yapmadan önce bakiye yetersizse, müşteriye uygun bir mesaj döndürülecektir. Aşağıdaki seçeneklerden
hangisi bu durumu en doğru şekilde ele alır?

(Çoktan Seçmeli)

(A)

(B)

(C)

(D)

(E)

Cevap-2 :

about:blank 81/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Soru-3 :

Aşağıda bir öğrenci not hesaplama programı oluşturulmak, programda kullanıcının girdiği puanı alarak bu puana
göre hangi harf notunu aldığı belirlenmek istenmiştir.

Verilen kod bloğu başında puan = 75 değerini alırsa, aşağıdaki seçeneklerden hangisi kullanıcıya döndürülür?

(Çoktan Seçmeli)

(A) A

(B) B

(C) C

(D) D

(E) F

Cevap-3 :

Soru-4 :

Aşağıda verilen seçeneklerden hangisi soruda verilen kod bloğu ile aynı işi yapar?

(Çoktan Seçmeli)

(A)

(B)

(C)

about:blank 82/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(D)

(E)

Cevap-4 :

Soru-5 :

Bir eğitim platformunda eğer kullanıcı tarafından girilen yaş 18 ile 25 arasında ise ve öğrencinin bildiği programlama
dili Python ise ilgili öğrencinin seçmeli dersi Makine Öğrenmesi olarak yapılacaktır. Bunun için if bloğuna aşağıdaki
seçeneklerden hangisindeki koşul girilmelidir?

(Çoktan Seçmeli)

(A)

(B)

(C)

(D)

(E)

Cevap-5 :

Soru-6 :

x, y, z = 20, "15", 25 veriliyor. Buna göre aşağıdaki kod bloğu çalıştırıldığında hangi seçenek döndürülür?

(Çoktan Seçmeli)

about:blank 83/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(A) 0

(B) 1

(C) 2

(D) 3

(E) 4

Cevap-6 :

Soru-7 :

Aşağıda seçeneklerden hangisinde verilen kod bloğunun yaptığı iş en iyi biçimde açıklanmıştır?

(Çoktan Seçmeli)

(A) Kullanıcının 1 ile 7 arasında girdiği sayılara göre ilgili sayının hafta içi mi yoksa hafta sonu bir günü mü temsil
ettiği bilgisini vermektedir. 1-7 aralığı dışında bir değer girilirse uyarı mesajı döndürülmektedir.

(B) Kullanıcının girdiği sayıya göre [1,2,3,4,5] ve [6,7] gibi iki farklı listeyi ekrana yazdıran programdır. 1-7 aralığı
dışında bir değer girilirse uyarı mesajı döndürülmektedir.

(C) Verilen kod bloğu çalışmaz, çünkü input() fonksiyonundan geri metinsel ifade döndürülür. Bu da match-case’te
yapılan kontrol için uygun olmaz.

(D) Kod bloğu çalıştırıldığında her durumda “Lütfen uygun bir sayı değeri giriniz ve tekrar deneyiniz.” mesajı
döndürülür.

(E) match-case içinde if kullanılmayacağı için kod bloğu çalışmaz.

Cevap-7 :

Kullanıcının 1 ile 7 arasında girdiği sayılara göre ilgili sayının hafta içi mi yoksa hafta sonu bir günü mü temsil ettiği
bilgisini vermektedir. 1-7 aralığı dışında bir değer girilirse uyarı mesajı döndürülmektedir.

Soru-8 :

Aşağıdaki kod bloğu veriliyor. Kullanıcının klavyeden girdiği değerlere ilişkin ekran görüntüsü veriliyor. Buna göre
if satırından itibaren kod bloğu çalıştırıldığında elde edilen sonuç için hangi seçenek doğru olur?

about:blank 84/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(Çoktan Seçmeli)

(A) 2.3

(B) 230

(C) 2300

(D) 23000

(E) Hatalı girinti sebebiyle hata mesajı döndürülür.

Cevap-8 :

Hatalı girinti sebebiyle hata mesajı döndürülür.

Soru-9 :

Aşağıdaki kod bloğu çalıştırıldığında seçeneklerden hangisi döndürülür?

(Çoktan Seçmeli)

(A) FLOAT

(B) <class 'float'>

(C) INTEGER

(D) <class 'integer'>

(E) Kod bloğu çalışmaz.

Cevap-9 :

<class 'float'>

about:blank 85/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Soru-10 :

Aşağıdaki kod bloğu çalıştırıldığında ekrana False yazdırılması için soru işaretli yere aşağıdaki seçeneklerden hangisi
eklenebilir?

(Çoktan Seçmeli)

(A) 0

(B) False

(C) 0 and 0

(D) 1

(E) False or False

Cevap-10 :

about:blank 86/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

5. DÖNGÜLER
Bölümle İlgili Özlü Söz
Programlama kod yazarak öğrenilir.

Brian Kernighan, Bilgisayar Programcısı

Kazanımlar
1. for ve while döngülerinin yapısı ve çalışma mantığını öğrenir, iteratif işlem gerektiren görevlerde bu iki döngüden
hangisinin kullanımının daha yerinde olacağına karar verebilir.

2. continue ve break deyimlerini for ve while döngüleri uygun biçimde kullanabilir.

3. for döngüsü ile bir liste elemanlarına nasıl ulaşacağını bilir.

4. for döngüsü ileenumerate() deyimini kullanabilir.

5. while döngüsü ileenumerate() deyimini kullanabilir.

6. İç içe for döngüsü kullanımını bilir.

7. Basit problemleri çözmek için döngülerin nasıl kullanılacağı örneklerle pekiştirir.

Birlikte Düşünelim
1. for döngüsü ve while döngüsü arasındaki temel fark nedir? Hangi durumlarda hangi döngü yapısını tercih etmek
mantıklı olabilir?

2. Bir liste içindeki elemanları for döngüsü kullanarak nasıl ulaşılabilir? Aynı işlem while döngüsü kullanarak
yapmak mümkün müdür?

3. range fonksiyonu nedir? Bir dizi sayıyı ardışık olarak üretmek neden bazen kullanışlı olabilir?

4. Bir sayının faktöriyelini hesaplayan bir program yazılmak istensin. Bu problemin çözümü için hangi döngü yapısı
kullanılabilir? Neden?

5. Bir kullanıcıdan pozitif bir tam sayı girmesini isteyen ve kullanıcının bu koşul dışında bir değer girmesi
durumunda tekrar farklı bir sayı girmesini isteyen bir program nasıl tasarlanır? Hangi döngü yapısı kullanılabilir?

6. Bir döngü içinde “break” ve “continue” ifadeleri nasıl kullanılır? Bu ifadelerin ne zaman ve neden kullanılması
mantıklı olabilir?

7. 2x2'lik bir matrisin elemanları matris formun şekli korunarak yazdırılmak isteniyor. Bunun için hangi formda bir
döngü yapısı kullanılabilir?

8. Bir sayının asal olup olmadığını kontrol eden bir program yazılmak istensin. Bu problemin çözümü için hangi tür
döngü yapısı tercih edilebilir? Çözüm için nasıl bir yol izlenebilir?

9. Bir kullanıcının istediği sayıda yıldızla kare deseni çizen bir program nasıl tasarlanabilir?

10. Hangi tür problemlerin çözümünde döngüler vazgeçilmezdir? Neden?

Başlamadan Önce
Bu bölüm, programlamanın yapı taşlarından biri olan döngülerin anlaşılmasını ve Python ile etkili bir şekilde
kullanılmasını sağlamayı amaçlar. Döngüler, iteratif (tekrarlı) işlemler için kodun daha verimli ve dinamik hale
about:blank 87/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

getirilmesine imkân tanır. for ve while döngüleri, bu bölümde ele alınan başlıca konular arasında yer almıştır. for
döngüsü, özellikle liste veya belirli sayı aralıklarının üzerinde gezinmek için kullanılırken, while döngüsü belirli bir
koşulun sağlandığı sürece tekrarlanır. Döngülerin içinde kontrolü sağlayan break ve continue ile döngü akışını
yönlendirmenin yöntemleri de bu bölümde incelenmiştir. Ayrıca, karma örnekler aracılığıyla döngülerin pratik
uygulamalarını görmek ve döngülerin farklı senaryolardaki kullanımını anlamak da mümkündür. Bu bölüm,
programlamaya giriş yapan herkes için iteratif işlem gerektiren durumları Python dilini kullanarak kodlanma
becerilerini güçlendirmeye fırsat sunar.

5.1. Programlamada Döngüler


Programın çalışırken geçen süresi ve kullanılan değişkenlerin bellekte kapladığı yer, programlamada dikkat edilen en
önemli unsurlardandır. Eğer ele alınan problem iteratif/tekrarlı işlemler içermekte ise, her defasında aynı işi yapan
kod satırlarının alt alta yazılması uygun olmayacaktır. Bu nedenle, programlamada tekrarlı işlemlerin yapılabilmesi
için döngüler (loops) kullanılmaktadır. Müşterilerin aynı sütunda yer alan ad ve soyadlarını ayırarak farklı sütunlara
kaydedilmesi, bir listede yer alan isimlerin yazdırılması, sayıların toplanması, çarpım tablosunun yazdırılması gibi
görevler döngüler kullanılarak gerçekleştirilebilir. Döngülerin kullanımı, ortaya çıkacak hataların azaltılması ve
zamandan tasarruf anlamına da gelmektedir. Problemde ana işlem tek bir defaya mahsus olmak üzere yazılır,
ardından aynı işlem birden fazla kere uygulanabilir.

Programlarda yapılması gereken belirli sayıda işlemin olduğu veya işlenen/üretilen değerlerin sayıldığı durumlarda
bir sayaç/döngü değişkeni (counter) kullanılır. Döngünün ilk yinelemesine başlamadan önce döngü değişkenine ilk
değerleri atanır. Döngü koşulu (loop condition), döngü gövdesinin yürütülüp yürütülmeyeceğini veya ne zaman
duracağını belirlemek için her yinelemenin başında hesaplanan bir bool (True/False) ifadedir. Döngü gövdesi (loop
body), her tekrarda veri işlemek için gerekli işlemlerin gerçekleştirildiği döngünün temel kısmıdır. Döngü gövdesinde
tek satır kod olabileceği gibi birden fazla satır da yer alabilir. Döngünün tekrarlarını kontrol etmek için döngü
değişkenlerinde artırma/azaltma işlemleri gerçekleştirilir. Bazı döngü yapılarında bu işlem otomatik biçimde
gerçekleştirilir.

Bu bölümde Python dilindeki iki temel döngü tipi olan for ve while ile döngülerle sıkça kullanılan range, break,
continue, enumerate, zip gibi Python deyimleri ele alınmıştır.

5.2. for Döngüsü


Python dilinde for döngüsünün temel söz dizimi aşağıda basit bir örnekle açıklanmıştır. Döngüye for anahtar
kelimesinin yazımı ile başlanır. Ardından döngü değişkeni ve döngü aralığı bilgisi gelir. Python söz dizimi gereği
girintiye mutlaka dikkat edilmelidir. Döngü içinde kalması istenen kod bloğu for’dan daha içeride bir şekilde
yazılmalıdır. Zaten “Enter” tuşu ile alt satıra geçildiğinde Python editörü otomatik olarak bu girintiyi oluşturmaktadır.
Bu örnekte, döngü aralığı range() işlevi ile verilmiştir. Döngü çalıştırıldığında 0 ile 9 arasındaki sayıları alt alta
ekrana yazdırılmaktadır. Döngü değişkeni/sayacı i’dir. range() işlevinin başlangıç değeri varsayılan 0'dır ve yine
varsayılan şekilde döngü 1’er 1’er artırılır. Dolayısıyla, döngü değişkeni sırasıyla i, 0 ile parantez içinde yer alan 10
arasındaki değerleri alır, 10 dâhil edilmez.

Eğer sayılar yan yana yazdırılmak istenirse print() fonksiyonu içine end=” “ parametresi eklenir.

Bu döngünün tek satır halinde yazılması da mümkündür. Neticede aynı ekran görüntüsü elde edilecektir.

range()’inbaşlangıç değerini bir parametre ekleyerek belirtmek mümkündür. range(5, 20), 5 ile 20 arasındaki değerler
anlamına gelir; ancak 20 hariç tutulur. range() varsayılan olarak ortaya çıkan diziyi 1 artırır; ancak üçüncü bir

about:blank 88/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

parametre ekleyerek artış değerini belirtmek mümkündür. range(5, 20, 2), 5 ile 20 arasındaki değerler 2’şer artırılır
anlamına gelir; 20 hariç tutulur (VanderPlas, 2016d).

Döngü değişkeni her zaman artırılmak zorunda değildir. Kimi durumda azaltılarak da işlemler yapılabilir, tıpkı
aşağıdaki örnekte verildiği gibi. Döngü değişkeni bu kez 20’den 0’a 5’er 5’e azalmaktadır. İterasyona 20 dâhil, 0
dâhil değildir.

Örnek:for ile bir listenin içinde dolaşmak.

for döngüsü yalnızca range() ile kullanılmak zorunda değildir. Örneğin; haftanın günlerinin tutulduğu gunler adında
bir liste olsun. Aşağıda verilen for döngüsünde döngü değişkeni gundür ve her bir iterasyonda in anahtar kelimesi
sırasıyla gunler listesinin elemanlarını alır.

Örnek:for ile enumerate() kullanımı.

Bir önceki örnekte, yalnızca listedeki elemanların kendisine erişim sağlanmıştır. Döngü değişkeni sırasıyla bu
değerlerden birini almıştır; ancak bazı durumlarda elemanın kendisi kadar indeks değeri de önemlidir. Bunun için
enumerate() kullanılır.

Örnek:for ile break deyimi kullanımı.

break deyimi döngünün sonlandırılması/bitirilmesi yani döngüden çıkmak için kullanılır. Yukarıdaki örnekte yalnızca
hafta içindeki günler yazdırılmak istenirse for bloğuna if-else koşul ifadesi eklenir. Eğer gun=="Cmt" ise döngüden
çıkılacaktır; aksi halde gun döngü değişkeni değeri ekrana yazdırılacaktır.

about:blank 89/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Örnek:for ile continue deyimi kullanımı.

continue deyimi ile döngünün mevcut döngü değişkeni için çalışması atlanır ve bir sonraki değer ile devam edilir.
Eğer yukarıdaki kod bloğunda break yerine continue kullanılırsa bu kez Cmt hariç haftanın günlerinin tümü ekrana
yazılacaktır, çünkü gun=="Cmt" ise döngü değişkeni bir sonraki değeri alacaktır ve mevcut iterasyon
yapılmayacaktır.

Örnek:for döngüsünü takiben else deyimi kullanımı.

Bir for döngüsünü takiben kullanılan else anahtar sözcüğü, döngü bittiğinde yürütülecek bir kod bloğunu
belirtmektedir. Bu nedenle for döngüsünü takiben kullanılan else deyimi, döngü içinde bir koşul sağlanmadığında
belirli bir kod bloğunun yürütülmesi istendiği senaryolar için yararlı olacaktır. Aşağıdaki örnekteki for bloğunda,
sayilar listesindeki sayılar içinde sayi değişkeni değeri 240 sırasıyla aranacaktır. 240 listede yer almadığından, döngü
sonunda ekrana Sayı bulunamadı! yazdırılacaktır. Eğer döngü break deyimi ile sonlanırsa, else bloğu çalışmaz.
Örneğin, sayi=24 ise ekrana yalnızca Sayı bulundu! yazdırılacaktır.

Örnek: İç içe for döngüsü kullanımı.

İsimler ve soyadların yer aldığı iki liste tanımlanmakta, bu listeler kullanılarak aynı indekste yer alan ad ve soyadları
birleştirilmeye ve ekrana yazdırılmaya çalışılmaktadır. Her iki liste üzerinden de ilerleme gerektiğinden iç içe iki
farklı for döngüsü kullanılmıştır. i'nin j’ye eşit olduğu durumda if bloğu içindeki print() çalıştırılacaktır.

about:blank 90/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Örnek:for döngüsü ile zip() kullanımı.

Verilen örnek iç içe for döngüsü yerine, tek bir for döngüsünde birden fazla liste üzerinde eş zamanlı tekrar yapmayı
sağlayan zip() kullanılarak da gerçekleştirilebilir. Aşağıdaki kod bloğu çalıştırıldığında da yukarıdakiyle aynı sonuç
elde edilecektir.

Koşul ifadelerinde olduğu gibi for döngüsü de boş geçilmez; ancak herhangi bir işlemin yapılmayacağı durumlarda
pass deyimi kullanılabilir.

Örnek: Tek satırlık for döngüsü ile bir liste oluşturma.

Aşağıdaki kod satırında 0’dan 9’a kadar olan sayılardan oluşan listem adında bir liste oluşturulmuştur. Ardından liste
ekrana yazdırılmıştır.

5.3. while Döngüsü


while döngüsü for döngüsüne benzer şekilde C, C++, C# gibi diğer programlama dillerinde kullanılan bir döngü
çeşididir. Döngünün kaç kere çalışacağının bilinmediği durumlarda while döngüsü kullanılır. Temel söz dizimi ise for
döngüsünden farklılık gösterir. Aşağıda basit bir örnekle while söz dizimi açıklanmaya çalışılmıştır. while
döngüsünde for’da olduğu gibi döngü değişkeni döngü içinde otomatik olarak tanımlanmaz. Döngü öncesinde
tanımlanması gerekir. Burada döngü değişkeni sayac ilk değeri 0 olarak tanımlanmıştır. while döngüsüne while
anahtar kelimesi ile başlanır ve ardından döngü koşulu gelir. Bu koşul doğru olduğu müddetçe while bloğu içinde
kalan işlemler tekrar eder. Yani sayac değişkeninin ilk değeri sıfırdı. sayac < 10 ifadesi doğru olduğu sürece döngü
çalışmaya devam eder. for döngüsünde olduğu gibi döngü değişkeni otomatik olarak artırılmaz ya da azaltılmaz. Son
satırda görüleceği gibi while bloğu sonunda döngü değişkenine istenen artırma/azaltma işlemi uygulanır. Sayacın son
değeri 10’dur; döngü koşulu sağlanmadığından döngüden çıkılır.

sayac Ekrana Yazdırılan Değer


0 0
1 1
2 2
… …
9 9
10 -

Bir başka örnekte de döngü değişkeninin azaltılması durumu ele alınsın. Bu kez, sayac 9’dan başlatılmıştır. sayac
değişkeni sıfıra büyük ve eşit olduğu sürece döngü işlemleri tekrar edilecektir. Genellikle döngü değişkeninin
artırma/azaltma durumlarında sayac += 1 ve sayac -= 1 kısa yazımı tercih edilir.

about:blank 91/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Örnek:while ile sonsuz döngü.

İlk örnekte while döngüsünde, döngü değişkeni otomatik artırılmadığı/azaltılmadığından mutlaka döngü içinde
amaca göre değerinin değiştirilmesi gerektiği ifade edilmişti. Aksi takdirde, döngü değişkeninin değeri hep ilk atanan
değer olarak kalacağından döngü koşulu her zaman sağlanacaktır. Bu nedenle de döngü sonsuz döngüye girecektir.
Aşağıda böyle bir duruma örnek verilmiştir.

Örnek:while döngüsü ile continue deyimi kullanımı.

Aşağıdaki örnekte a adlı bir sayı listesi veriliyor. Amaç ise while döngüsü ile tek sayıları ekrana yazdırabilmektir.
Döngü değişkeni i sıfırdan başlatılmıştır. Döngü, i indis değerinin a listesi uzunluğundan (8) küçük olduğu sürece
devam edecektir. while döngüsü içinde tek ve çift sayıları ayırt edebilmek için if-else yapısı kullanılmıştır. Buna
göre; eğer a[i] (ilk iterasyonda 2, ikinci iterasyonda 27, üçüncüde 35, …) 2’ye bölündüğünde sıfır kalıyorsa bu o
sayının çift sayı olduğunu gösterir. Bu nedenle if bloğu içinde sadece döngü değişkeni artırılır ve continue
deyiminden faydalanılır. Bu döngünün başa dönmesini sağlayacaktır. Eğer if koşulu sağlanmazsa, yani sayı tekse, bu
durumda sayı ekrana yazdırılacak, döngü değişkeni 1 artırılarak döngü başa dönmüş olacaktır. İşlemler i=8 olana
kadar sürdürülür.

Aynı problem için farklı bir çözüm de şu biçimde geliştirilebilir. Döngüye girildiğinde döngü değişkeni 1 artırılır.
Ardından listenin başından başlamak adına a[i-1] kontrol edilir. Çift sayı ise döngü başa döner, tek sayı ise a[i-1]
ekrana yazdırılır ve döngü başa döner. i değişkeninin son değeri 8’dir.

about:blank 92/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

i Ekrana Yazdırılan Değer a[i-1]


1 -
2 27
3 35
……
8 11

Örnek:while döngüsü ile break deyimi kullanımı.

Bu örnekteki amaç, a listesi içinde çift sayıya denk geldiğinde döngünün sonlandırılmasıdır. Döngü değişkeninin
başlangıç değeri sıfırdır. i, a listesinin uzunluğundan küçük olduğu sürece döngü devam ettirilecektir; ancak bu kez if
bloğundaki koşulun sağlanması durumunda break deyimi mevcuttur. Bu da döngünün verilen döngü koşulundan daha
erken sonlandırılabileceğini göstermektedir. Eğer a[i] çiftse, döngüden çıkılacaktır.

i Ekrana Yazdırılan Değer a[i]


0 11
1 27
2 35
3-

Örnek:while döngüsünü takiben else deyimi kullanımı.

for döngüsündeki liste içinde sayı bulma örneği while döngüsü için uyarlanacak olursa, öncelikle bir döngü değişkeni
(sayac) tanımlanacaktır. sayac, sayilar listesi uzunluğundan (5) küçük olduğu sürece döngü çalışmaya devam eder;
ancak bu örnekte de break deyimi kullanıldığından döngü koşulun sağlanmasından önce de bitirilebilir.

240 sayısı, sayilar listesi içinde aranmaktadır. Dolayısıyla, döngü içindeki her bir elemanın (sayilar[sayac] ilk
iterasyonda 10, ikincide 25, üçüncüde 33, …) 240’a (sayi) eşit olup olmadığı kontrol edilmektedir. Eşit olduğunda
sayilar[sayac] == sayi, True bir ifade döndürür. Bu da ekrana Sayi bulundu! yazdırılır ve döngü sonlandırılır; ancak
liste baştan sona kontrol edilirse if bloğundaki koşulun hiçbir zaman True döndürmeyeceği ortadadır. Dolayısıyla
sayac son değeri olarak 5’i alır ve döngü bitirilir. Bundan sonra else bloğundaki Sayı bulunamadı! ekrana yazdırılır
ve program sonlanır.

about:blank 93/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

5.4. Döngülerle ilgili Karma Örnekler


Bu bölümde, bir önceki bölümde açıklanan for ve while döngüleri ile ilgili karma örneklere yer verilmiştir.

Örnek 1: 1’den klavyeden girilen bir n sayısına kadar olan (n dâhil) tüm sayıları toplamını bulan Python programını
hem for hem de while döngüsü kullanarak yazınız.

Çözüm: Klavyeden girilen sayı tamsayı (int) veri tipine dönüştürülerek n değişkeninde tutulmaktadır. Kullanıcıya
1’den n’e kadar olan sayıların toplamı döndürüleceğinden toplam adında bir değişken tanımlanmış ve ilk değeri sıfır
olarak belirlenmiştir. for döngüsünden farklı olarak while döngüsünde, döngü dışında bir i döngü değişkeni
tanımlanmıştır. Döngü içinde döngü değişkeni değerinin 1 artırılması için ilgili kod yazılmıştır (i += 1). Döngü
boyunca döngü değişkeni i sırasıyla 1, 2, …, n değerlerini almaktadır. Döngünün her iterasyonunda i, toplam
değişkenine eklenmektedir. Son toplam değeri ekrana yazdırılmaktadır.

Örnek 2: Klavyeden girilen 5 sayının mutlak değerini ekrana yazdıran Python programını for döngüsü kullanarak
yazınız.

Çözüm: Sayıların mutlak değerlerinin tutulması için mutlak_deger listesi tanımlanmıştır. Bir sayının mutlak değerini
bulurken sayı (x) sıfırdan küçükse mutlak değer -x olarak bulunur; aksi halde mutlak değer x olarak kalacaktır. Buna
istinaden, for döngüsü içinde if-else bloğu tanımlanmıştır. Her bir iterasyonda klavyeden girilen sayının mutlak
değeri bulunacak ve mutlak_deger listesine eklenecektir. Programın sonunda liste ekrana yazdırılmaktadır.

about:blank 94/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Çalışmada mutlak değer kontrolü klasik yoldan gerçekleştirilmiştir; ancak Python dilinde bu amaçla kullanılan abs()
fonksiyonu bulunmaktadır. Yani program kodu aşağıdaki gibi yeniden yazılabilir.

Örnek 3: Bir A = [-5, 1, 10, 20, -90, -111, 9, -25] listesi veriliyor. Listedeki sayıların işaretlerini bulan ve ekrana liste
şeklinde yazdıran Python programını while döngüsü kullanarak yazınız.

Çözüm: Öncelikle A listesi ve döngü değişkeni (sayac) tanımlanmıştır. Ardından bu listede yer alan sayıların
işaretlerin tutulması için isaretler listesi boş bir şekilde tanımlanmıştır. while döngüsünün içinde sayının işaretini
short-hand-if kullanılarak kontrol edilmektedir. Sayı sıfırdan küçükse “-“, aksi halde “+” işareti isaretler listesine
eklenmektedir. Programın sonunda sayıların işaretleri ekrana yazdırılmaktadır.

Örnek 4: Bir a sayısının faktöriyelini bulan ve ekrana yazdıran Python programını for ve while döngüsü kullanarak
yazınız.

Çözüm: Her iki çözüm için de bir a sayısı ve ardından sayının faktoriyelinin tutulacağı bir a değişkeni ve faktoriyel
değişkeni tanımlanmıştır. Bir a sayısının faktöriyeli 1’den a’ya kadar (a dâhil) sayıların çarpımıdır. Döngü değişkeni
ifor ve while döngülerinde 1’den girilen a sayısına kadar tanımlıdır. faktoriyel değişkeni her iterasyonda bir önceki
değeri ile i’nin çarpımına eşit olacaktır. Döngüler tamamlandıktan sonra ekrana 720 yazdırılacaktır.

about:blank 95/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

i Faktoriyel Değeri (faktoriyel)


11
22
36
4 24
5 120
6 720

Örnek 5: Klavyeden pozitif bir sayı girilene kadar yeni bir sayı isteyen ve bu sayının karesini döndüren Python
programını while döngüsü kullanarak yazınız.

Çözüm: Programın başında input() fonksiyonu yardımıyla kullanıcının klavyeden bir sayı girmesi sağlanmakta ve
girilen sayı n değişkenine atanmaktadır. Eğer klavyeden sıfırdan büyük bir sayı girilirse, while döngüsüne
girilmeyecektir; ancak aksi halde n<=0 olduğundan while döngüsüne girilecektir ve bu koşul bozulmadan da
döngüden çıkılmayacaktır. Girilen sıfırdan büyük sayının karesi sonuc değişkenine atanacak ve ekrana
yazdırılacaktır.

Bu problemin çözümü için for döngüsü ile alternatif çözümler geliştirilebilir; ancak sonuca while döngüsü ile olduğu
kadar etkin bir biçimde ulaşılamayacaktır, çünkü for döngüsünde döngü değişkeni için belirli bir alt ve üst sınır
gerekmektedir. Oysa kullanıcının ne zaman sıfırdan büyük bir sayı gireceği bilinmemektedir. Bu nedenle de döngü
değişkeni için belirli bir üst sınır konamaz.

Örnek 6: Aşağıda verilen şekli for döngüsü yardımı ile ekrana yazdıran Python programını yazınız.

about:blank 96/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Çözüm: Soruda verilen ekran görüntüsünün oluşturulabilmesi için satır ve sütun boyutunda düşünülmelidir; ancak
bu tek bir for döngüsüyle değil, iç içe for döngüsü kullanılarak yazdırılabilir. i döngü değişkeninin yer aldığı for satır,
j döngü değişeninin yer aldığı içteki for ise sütun temelinde işlem yapacaktır. Yıldızların sırayla artmasını sağlayan j
için tanımlanmış olan döngü değişkeninin üst sınırıdır. Bir satır işlemi içte yer alan for döngüsü tarafından
tamamlanır, ardından bir sonraki satıra \r yardımıyla geçilir.

Örnek 7: Aşağıda verilen şekli for döngüsü yardımı ile ekrana yazdıran Python programını yazınız.

Çözüm: Bir önceki örnekten farkı satır sayısı ve * yerine sayıların ekrana yazdırılmasıdır. Bunu sağlamak için bir
önceki örneğin Python kodu aşağıdaki gibi yeniden yazılmıştır. Yazdırılan sayıların ardışık bir biçimde ilerlemesi için
döngünün başında ilk değeri 0 atanan sayi değişkeni tanımlanmıştır. Satır sayısı 4 olduğu için dıştaki for
döngüsündeki range(1,5) olarak belirlenmiştir. Buna ilâveten, print() fonksiyonunda * yerini sayi değişkenine
bırakmıştır.

Örnek 8: Bilgisayar tarafından 1-100 arasında tutulan bir sayıyı “Aşağı!”, “Yukarı!” şeklindeki yönlendirmelerle
kullanıcının tahmin etmeye çalıştığı, sonunda kaç denemede hangi sayının tahmin edildiğini ekrana yazdıran Python
programını yazınız.

Çözüm: Bu örnekte, bilgisayar tarafından 1-100 arasında bir sayı tutulması planlandığından, programda bu işin
rastgele yapılması için öncelikle random modülü eklenmektedir. [Link](1, 100) komutu ile rastgele bir sayı
seçilir ve sayi değişkenine atanır. Kullanıcı tahmininin saklanması için tahmin değişkeni tanımlanmıştır ve buna ilk
değer ataması yapılmamıştır. Bunun yerine None olarak tanımlanmıştır. Son olarak kullanıcının deneme sayısının
saklanması için deneme değişkeni başlangıç değeri 0 olarak tanımlanmıştır. Program açılırken “Sayı Tahmini
Oyununa Hoşgeldiniz!!!” Karşılama cümlesiyle başlamaktadır. Döngü içinde klavyeden kullanıcının tahminini
girmesi sağlanır, deneme değişkeninin değeri 1 artırılır. Eğer sayı tahminden büyükse “Aşağı”, küçükse “Yukarıı!”
yönlendirmesi yapılır. Kullanıcı tahmini ile tutulan sayı birbirine eşit olduğunda hangi sayının kaç denemede
bulunduğuna ilişkin mesaj ekrana yazdırılacak, döngü, dolayısıyla program sonlandırılacaktır.

about:blank 97/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Bölüm Özeti
Bu bölümde, programlamanın temel yapı taşlarından biri olan döngüler Python dili ile temel bir perspektiften ele
alınmıştır. Başlangıç olarak for döngüsü konseptine odaklanılarak, liste veri yapısı elemanları arasında etkili bir
şekilde dolaşması örneklenmiştir. Ardından, while döngüsüyle koşullu iteratif işlemlerin nasıl gerçekleştirileceği
ayrıntılı bir şekilde açıklanmıştır. continue, break, enumerate ve zip gibi yardımcı deyimlerle döngülerin kullanımı
daha da zenginleştirilmiştir. Ayrıca, sonsuz döngü kavramına da değinilmiştir. Bölümde yer alan karma örnekler
sayesinde öğrencilerin döngülerin gerçek dünya uygulamalarını daha iyi anlamalarını sağlaması, problem çözme
yeteneklerini geliştirmelerine yardımcı olması hedeflenmiştir.

Kaynakça
Amos, D. (2018). Object-Oriented Programming (OOP) in Python 3. [Link]
oriented-programming/

Breuss, M. (2017). Python Virtual Environments: A Primer. RealPython. [Link]


environments-a-primer/

Brownlee, J. (2016, May 10). How To Load Machine Learning Data in Python. [Link].
[Link]

about:blank 98/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Bureau, I. (2019). Difference between Compiler and Interpreter. Business Insider.


[Link]

Çobanoğlu, B. (2021). Herkes İçin Python (3rd ed.). Pusula 20 Teknoloji ve Yayıncılık A.Ş.

Costa, C. D. (2020, November 23). Top 16 Python Applications in Real-World. Medium.


[Link]

Deitel, H. M., & Deitel, P. J. (2010). C ve C++ (M. Zavrak, E. Aksoy, & H. N. Karaca, Trans.; 3rd ed.). Sistem
Yayıncılık.

GeeksforGeeks. (2016, May 16). Python OOPs Concepts. GeeksforGeeks. [Link]


oops-concepts/

GeeksforGeeks. (2020, January 18). How to Install PIP on Windows ? GeeksforGeeks.


[Link]

[Link]. (2020). Memory Management in Python. [Link]


in-python/

[Link]. (2021, October 22). Top 10 Python Applications in Real World. GeeksforGeeks.
[Link]

Gupta, A. (2023). Top 10 Python IDEs in 2023: Choosing The Best One. [Link].
[Link]

Harris, C. R., Millman, K. J., Walt, S. J. van der, Gommers, R., Virtanen, P., Cournapeau, D., Wieser, E., Taylor, J.,
Berg, S., Smith, N. J., Kern, R., Picus, M., Hoyer, S., Kerkwijk, M. H. van, Brett, M., Haldane, A., Río, J. F. del,
Wiebe, M., Peterson, P., … Oliphant, T. E. (2020). Array programming with NumPy. Nature, 585(7825), 357–362.
[Link]

Hjelle, G. A. (2020). Python import: Advanced Techniques and Tips. [Link]

[Link]. (2023). Making kernels for IPython—IPython 3.2.1 documentation. [Link]


doc/3/development/[Link]

Jeevan, M. (2022). How to Select Rows and Columns in Pandas Using [ ], .loc, iloc, .at and .iat. KDnuggets.
[Link]

Jones, L. (2019). Pointers in Python: What’s the Point? – Real Python. [Link]

Koidan, K. (2021, July 15). Difference Between Python Modules, Packages, Libraries, and Frameworks.
[Link]. [Link]

Lutz, M. (2009). Learning Python (4th ed.). O’Reilly Media.

Lutz, M. (2011). Programming Python (4th ed.). O’Reilly. [Link]


python-second/0596000855/[Link]

Mathew, S. T. (2021). Python Fundamentals for Everybody—Type Conversion vs Type Coercion.


[Link]
34234e99c9c4

McKinney, W. (2010). Data Structures for Statistical Computing in Python. In S. van der Walt & J. Millman (Eds.),
Proceedings of the 9th Python in Science Conference (pp. 56–61). [Link]

McKinney, W. (2012). Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython (1st ed.).
O’Reilly Media.

Microsoft. (2022). How to create and manage Python environments in Visual Studio. [Link]
us/visualstudio/python/managing-python-environments-in-visual-studio?view=vs-2022

Panwar, P. (2022). Use existing Python packages with Spyder 5. [Link]


spyder5/

about:blank 99/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Pérez, F., & Granger, B. E. (2007). IPython: A System for Interactive Scientific Computing. Computing in Science
and Engineering, 9(3), 21–29. [Link]

Pozo Ramos, L. (2023). Python’s del: Remove References From Scopes and Containers.
[Link]

[Link]. (2023). Python Object Oriented Programming. [Link]


programming/object-oriented-programming

[Link]. (2023). PyInstaller Manual—PyInstaller 5.8.0 documentation. [Link]

Python Software Foundation. (2023a). IDLE. Python Documentation. [Link]

Python Software Foundation. (2023b). Python a programming language changes the world Final Production Content
Case Studies & Success Stories. [Link]
1-final-content-preview

[Link]. (2023a, February 15). Free Python Tutorial For Beginners: Learn Python. Python Land.
[Link]

[Link]. (2023b, February 15). Welcome to [Link]. [Link]. [Link]

Sawant, S. (2021, February 17). Semicolon in Python—AskPython. [Link]


python

Singhal, B. (2017). Iris Dataset. Mendeley Data, V1. [Link]

[Link]. (2023). Pandas Difference Between loc[] vs iloc[]. [Link].


[Link]

[Link]. (2022). Home—Spyder IDE. [Link]

Statista. (2022). Most used languages among software developers globally 2022. Statista.
[Link]

team, T. pandas development. (2020). pandas-dev/pandas: Pandas (latest) [Computer software]. Zenodo.
[Link]

Uğuz, S. (2021). Makine Öğrenmesi: Teorik Yönleri ve Pyhton Uygulamaları İle Bir Yapay Zeka Ekolü (2nd ed.).
Nobel Akademik Yayıncılık.

Uzun, E. (2023). Temel Operatörler. [Link]

VanderPlas, J. (2016a). Basic Python Semantics: Variables and Objects. In Whirlwind Tour of Python. O’Reilly
Media, Inc.
[Link]

VanderPlas, J. (2016b). Built-In Data Structures. In Whirlwind Tour of Python. O’Reilly Media, Inc.
[Link]
[Link]

VanderPlas, J. (2016c). Defining and Using Functions. In Whirlwind Tour of Python. O’Reilly Media, Inc.
[Link]
[Link]

VanderPlas, J. (2016d). Iterators. In Whirlwind Tour of Python. O’Reilly Media, Inc.


[Link]
[Link]

VanderPlas, J. (2016e). Python Data Science Handbook: Essential Tools for Working With Data (1st ed.). O’Reilly
Media.

VanTol, A. (2019). Memory Management in Python – Real Python. [Link]


management/

about:blank 100/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

vegibit. (2023). Type Coercion Vs Type Casting In Python. [Link]


python/

[Link]. (2023). [Link]. [Link]

[Link]. (2023a). Beginners Guide/Overview—Python Wiki.


[Link]

[Link]. (2023b). Python Implementations. [Link]

Ünite Soruları
Soru-1 :

Aşağıda verilen kod bloğu çalıştırıldığında aşağıdaki seçeneklerden hangisi döndürülür?

(Çoktan Seçmeli)

(A) 22’den -2’ye kadar olan tüm çift sayılar ekrana alt alta yazdırılır (22 ve -2 dâhil).

(B) 22’den 2’ye kadar olan tüm çift sayılar ekrana alt alta yazdırılır (22 ve 2 dâhil).

(C) 22’den -2’ye kadar olan tüm çift sayılar ekrana yan yana yazdırılır (22 ve -2 dâhil).

(D) 22’den 2’ye kadar olan tüm çift sayılar ekrana yan yana yazdırılır (22 ve 2 dâhil).

(E) 22’den 4’e kadar olan tüm çift sayılar ekrana alt alta yazdırılır (22 ve 4 dâhil).

Cevap-1 :

22’den 4’e kadar olan tüm çift sayılar ekrana alt alta yazdırılır (22 ve 4 dâhil).

Soru-2 :

Aşağıdakilerden hangisi 5 adet ondalıklı sayı ekrana yazdırır?

(Çoktan Seçmeli)

(A)

(B)

(C)

about:blank 101/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(D)

(E)

Cevap-2 :

Soru-3 :

Aşağıdaki seçeneklerden hangisi verilen for kod satırı, while kod bloğu ile aynı çıktıyı döndürür?

(Çoktan Seçmeli)

(A) for sayi in range(0,103,3): print(sayi)

(B) for sayi in range(-3,102,1): print(sayi)

(C) for sayi in range(-3,100,3): print(sayi)

(D) for sayi in range(3,100,-3): print(sayi)

(E) for sayi in range(0,103,1): print(sayi)

Cevap-3 :

for sayi in range(0,103,3): print(sayi)

Soru-4 :

Aşağıda isimler adında bir liste tanımlanıyor ve ardından for döngüsü kodları veriliyor. Buna göre aşağıdaki
seçeneklerden hangisinde for döngüsünün görevi doğru bir biçimde açıklanmıştır?

(Çoktan Seçmeli)

(A) isimler listesinin ilk elemanı kontrol edilir. Eğer “E”ye eşitse ilk eleman yazdırılmaz. Listenin diğer tüm
elemanları alt alta yazdırılır.

(B) isimler listesinin ilk elemanı kontrol edilir. Eğer “E”ye eşitse döngüden çıkılır. Bu nedenle de ekrana herhangi bir
şey yazdırılmaz.

about:blank 102/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(C) isimler listesinin her elemanı kontrol edilir. Eğer liste elemanı “E”ye eşitse yazdırılmaz. Listenin diğer tüm
elemanları alt alta yazdırılır.

(D) isimler listesinin her elemanı kontrol edilir. Eğer liste elemanının ilk harfi “E”ye eşitse yazdırılmaz. Listenin
diğer tüm elemanları alt alta yazdırılır.

(E) isimler listesinin her elemanı kontrol edilir. Eğer liste elemanının ilk harfi “E”ye eşitse döngüden çıkılır.

Cevap-4 :

isimler listesinin her elemanı kontrol edilir. Eğer liste elemanının ilk harfi “E”ye eşitse yazdırılmaz. Listenin diğer
tüm elemanları alt alta yazdırılır.

Soru-5 :

Aşağıda verilen kod bloğu çalıştırıldıktan sonra toplam değişkenin değeri ne olur?

(Çoktan Seçmeli)

(A) 15

(B) 25

(C) 40

(D) 75

(E) 175

Cevap-5 :

40

Soru-6 :

Aşağıda verilen Python kod bloğuna göre ekrana hangi sayılar yazdırılır?

(Çoktan Seçmeli)

(A) 10 20 30 80

about:blank 103/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(B) 20 30 80

(C) 55 45 101

(D) 55 45 101 6

(E) 10 55 45 101 6

Cevap-6 :

20 30 80

Soru-7 :

Aşağıdaki şeklin elde edilebilmesi için kod bloğu aşağıdaki seçeneklerden hangisi ile tamamlanmalıdır?

(Çoktan Seçmeli)

(A) for j in range(i,6):

(B) for j in range(1,6):

(C) for i in range(i,6):

(D) for j in range(i+1,6):

Cevap-7 :

for j in range(i,6):

Soru-8 :

Aşağıdaki ekran görüntüsünün elde edilebilmesi için nokta ile belirtilen boşluk aşağıdaki seçeneklerden hangisi ile
tamamlanmalıdır?

about:blank 104/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(Çoktan Seçmeli)

(A) isim, yas is list(zip(a, b)):

(B) isim, yas in zip(list(a, b)):

(C) isim, yas in list(zip(a, b)):

(D) isim, yas enumerate(zip(a, b)):

(E) isim, yas zip(a, b):

Cevap-8 :

isim, yas in list(zip(a, b)):

Soru-9 :

Aşağıdaki ekran görüntüsünün elde edilebilmesi için üç nokta ile belirtilen boşluk aşağıdaki seçeneklerin hangisi ile
tamamlanmalıdır?

(Çoktan Seçmeli)

(A) enumerate(a)

(B) enumerate(i)

(C) enumerate(j)

(D) enumerate(zip(a))

(E) zip(enumerate(a))

Cevap-9 :

enumerate(a)

Soru-10 :

Aşağıdakilerden hangisi sonsuz döngü değildir?

(Çoktan Seçmeli)

(A)

about:blank 105/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(B)

(C)

(D)

(E)

Cevap-10 :

about:blank 106/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

6. FONKSİYONLAR
Bölümle İlgili Özlü Söz
Programlama, algoritma tasarlama ve hatalı kodda hata ayıklama sanatıdır.

Ellen Ullman, Bilgisayar Programcısı

Kazanımlar
1. Fonksiyonların programlamadaki rolünü ve fonksiyonların kodun organizasyonunda ve tekrar kullanılabilirlikte
nasıl yardımcı olduğunu anlar.

2. def anahtar kelimesi kullanarak fonksiyonlar oluşturabilir.

3. Parametrelerle fonksiyonları nasıl tanımlayacağını ve çağıracağını bilir, bir fonksiyonun varsa dönüş değer(ler)ini
kullanabilir.

4. lambda ifadesi ile oluşturulan fonksiyonların nasıl tanımlanıp kullanılacağını bilir.

5. map() ve filter() gibiPython dilinde yer alan sık kullanılan yardımcı fonksiyonların nasıl kullanılacağını bilir.

6. Fonksiyonları kullanarak karmaşık işlemleri nasıl gerçekleştireceğini bilir.

Birlikte Düşünelim
1. Fonksiyonlar programlama neden önemlidir?

2. Bir programın daha iyi organize edilmesine nasıl yardımcı olabilirler?

3. Fonksiyonların kullanımı, kodun daha okunabilir hale gelmesine nasıl katkı sağlar?

4. Fonksiyonların tekrar kullanılabilirliği hangi tür programlar için önemlidir?

5. Python ile bir fonksiyonu nasıl tanımlarsınız?

6. Parametrelerin fonksiyonlara eklenmesinin avantajları nelerdir?

7. Bir fonksiyon nasıl çağrılır ve çağrıldığında ne tür işlemler gerçekleştirir?

8. Bir fonksiyonun dönüş değeri nedir ve neden önemlidir?

9. lambda fonksiyonları nedir ve hangi durumlarda kullanılır?

10. lambda ifadesiyle basit bir fonksiyon tanımlayabilir misiniz?

11. map() ve filter() fonksiyonlarının kullanımına ilişkin birer örnek verebilir misiniz?

Başlamadan Önce
Bu bölümde yine programlamada önemli bir yere sahip olan fonksiyonların temel yapısı ve Python
programlamadaki rolü ifade edilmektedir. Bu bölüm fonksiyonların etkili bir şekilde kullanmanın temelini atmaya
yardımcı olur. Fonksiyonlar, programlamada yazılan kodun organizasyonunu geliştirmek, kodu daha anlaşılır hale
getirmek ve tekrar kullanılabilirliği artırmak için güçlü bir araçtır. Bu bölüm, temel bilgilerin yanı sıra def ifadesi ile
fonksiyon tanımlama, lambda fonksiyonları, map() ve filter() gibi bazı yardımcı fonksiyonlar ve en sonunda farklı
karma örnekleri içerir. Hem programlamadaki hem de Python dilindeki bu önemli araçları kavramak, kod yazma
becerilerinin önemli ölçüde gelişmesini de sağlayacaktır.

about:blank 107/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

6.1. Programlamada Fonksiyonlar


Programlamanın temel yapı taşlarından biri de fonksiyonlardır. Elbette sadece Python değil diğer programlama
dillerinde de programcılar tarafından sıkça kullanılmaktadır. Bir fonksiyon (function, alt program, yordam, prosedür
ya da metot), “bir ana program ya da alt program tarafından çağrılan ve kendi içinde bir bütün oluşturan (yani
belirli bir işi yapan) program parçacığıdır” şeklinde tanımlanır (Çobanoğlu, 2021). Bir önceki bölümde ele alınan
döngü kavramı nasıl ki belirli bir işin tekrarı söz konusu olduğunda iteratif işleme imkân tanıyarak avantaj
sağlıyorsa, fonksiyonların da önemli faydaları bulunmaktadır. Tanımdan hareketle bunlardan ilkinin modülerlik
olduğu söylenebilir. Fonksiyonların kendi içinde bir bütünlük oluşturması, aynı ya da farklı kod dosyaları
(programlar) içinde farklı tek bir yer ya da farklı birçok yerden çağrılabilmelerine izin verir. Böyle bir yapı ile
çalışmak hem programın daha anlaşılır olmasını sağlar hem de program içindeki bir hatanın daha kolay bulunmasını
ve düzeltilebilmesine olanak tanır.

Fonksiyonlar tercihe göre girdi alabilen ve değer döndürebilen yapılardır. Fonksiyonların girdi değişkenlerine
parametre (parameter), parametreli bir fonksiyon çağrılırken gönderilen değerlere ise argüman (argument) adı
verilmektedir. Değer döndüren fonksiyonlarda return anahtar kelimesi kullanılır.

Python dilinde standart ya da ek kütüphanelerin içinde kullanıma sunulan birçok hazır fonksiyon (bulilt-in functions)
bulunmaktadır. Örneğin; sum(), abs(), min(), max(), vb. Ayrıca, kullanıcıların da kendi fonksiyonlarını
tanımlamalarına izin verilmektedir. Fonksiyonlarla çalışılırken unutulmaması gereken en önemli özellik, fonksiyon
tanımının hiyerarşik yapıda fonksiyonun çağırıldığı yerden önce yapılmasıdır. Python dili ile kullanıcı tanımlı
fonksiyonlar (user defined functions) iki temel yolla oluşturulabilmektedir. Bunlardan ilki def deyiminin kullanımı
ikincisi ise lambda fonksiyonu şeklinde tanımlamadır.

6.2. def ile Fonksiyon Tanımlama


def anahtar kelimesi kullanılarak tanımlanan fonksiyonların genel yapısı aşağıdaki gibidir. Fonksiyon tanımına def
deyimi ile başlanır. Ardından fonksiyon amacına uygun belirlenen bir fonksiyon adı yazılır. Eğer fonksiyon girdi
alacaksa, fonksiyon adını fonksiyon parametresi ya da parametreleri izler. Alt satıra geçildiğinde bu blok artık
fonksiyon gövdesidir. Yine fonksiyon amacına göre uygun işlemler burada sıralanır. Fonksiyonun geriye belirli bir
değeri ya da değerleri döndürmesi planlanmışsa, fonksiyon gövdesinin en sonunda return ile bu sağlanır.

Aşağıda ekrana “Merhaba” yazdıran bir fonksiyon tanımlanmıştır. Fonksiyon adı selamVer’dir. Fonksiyon herhangi
bir parametre almamakta ve herhangi bir değer döndürmemektedir.

İlgili kod bloğu çalıştırıldığında, Console-da yazdırılan herhangi bir şey olmadığı fark edilecektir. Bunun nedeni
üstteki kod satırları ile yalnızca fonksiyonun tanımlanmış olmasıdır. Oysa, fonksiyonun çalışması için bu yeterli
değildir. Fonksiyonun tanımlanmasından sonra görevini yerine getirmesi için çağrılması gerekmektedir. Herhangi bir
parametre almayan fonksiyon aşağıdaki gibi çağrılabilir ve ardından ekrana Merhaba! yazdırıldığı görülecektir.

Eğer klavyeden girilen isme göre Merhaba! yazdırılmak istenirse bu defa fonksiyonun ismi parametre olarak alması
yerinde olacaktır. Aşağıda fonksiyon adından sonra yuvarlak parantezler arasına isim adında bir parametre eklenir.

about:blank 108/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Fonksiyon bir öncekindeki gibi şeklinde çağrılırsa hata alınacaktır, çünkü bu fonksiyonun bir
adet parametresi vardır ve çağrılırken bir değer almalıdır.

Bu hatanın giderilebilmesi için isim parametresine değer girilmelidir. Aşağıda verilen her iki kod satırı da
fonksiyonun doğru bir şekilde çalışmasını sağlayacaktır. Fonksiyonun birden fazla parametre alması durumunda
girilen argümanların karışmaması adına ilk kullanım tercih edilebilir.

Bir fonksiyonun birden fazla parametre alması durumunda da (eğer yalnızca isim değil, fonksiyona soyisim de
parametre olarak verilirse) aşağıdaki örnekte olduğu gibi Python editörü parametrelerin neler olduğunu programcıya
gösterecektir.

Aşağıda verilen her iki kod satırı da aynı çıktıyı döndürecektir.

Bu noktaya kadar parametre alan ve almayan fonksiyon örnekleri ele alınmıştır; ancak bir fonksiyonun bir ya da daha
fazla döndürdüğü değer olabilir. Bu konunun anlaşılması adına iki sayıyı parametre olarak alan (sayi1, sayi2) ve iki
sayının toplam değerini (sayi1+sayi2) döndüren bir toplam fonksiyonu aşağıdaki gibi tanımlansın. toplam(3, 5)
şeklinde fonksiyonu çağırdıktan sonra, Console-da iki sayının toplamının 8 olarak yazdırıldığı görülebilir. Ayrıca,
fonksiyonun döndürdüğü değer farklı bir değişkene (sonuc) de atanabilir.

Demetler anlatılırken, demetlerin bir fonksiyonun geri döndürdüğü değerlerin veri yapısı olarak kullanılmakta olduğu
söylenmişti. Eğer yukarıdaki fonksiyonun, iki sayının hem toplamını hem de farkını döndürmesi istenirse dönüş veri
about:blank 109/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

yapısı olarak demet kullanılabilir. Eğer fonksiyonun döndürdüğü değer sonuc gibi tek bir değişkene atanırsa, sonucun
demet olduğu görülebilir. Eğer bir fonksiyonun kaç adet değer döndürdüğü biliniyorsa fonksiyonun geri dönüş
değerleri ayrı ayrı da karşılanabilir, tıpkı sonuc_toplam ve sonuc_fark değişkenlerinde olduğu gibi.

Aşağıda belirli sayıda çift sayının döndürülmesini sağlayan bir fonksiyon tanımlanmıştır. Örneğin;
ciftSayilariGetir(10) çalıştırıldığında 10 adet çift sayı döndürülecektir, yani ekrana [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
yazdırılacaktır. Fonksiyona sayilar adında boş bir liste tanımı ile başlanmıştır. Ardından çift sayıların başlatılacağı
nokta için bas değişkeni tanımlanmıştır. Ardından while döngüsünde sayıların tek/çift kontrolü yapılarak sayilar
listesine teker teker atanması sağlanmıştır. Fonksiyonda istenen n adet çift sayının döndürülmesi olduğundan sayilar
listesinin uzunluğu n’e eşit olduğunda (len(sayilar) = n) döngüden çıkılacaktır. Fonksiyon sayilar listesinin
döndürülmesiyle sonlandırılır.

Genellikle bir fonksiyon tanımlanırken, fonksiyonun çoğu zaman kullanmasını istediğimiz belirli değerleri
mevcuttur; ancak bu noktada kullanıcıya biraz esneklik de tanınabilir. Bu gibi durumlarda, bağımsız değişkenler için
varsayılan değerler kullanabilir (VanderPlas, 2016c). Bir önceki örnekte kullanıcının çift sayıların başlangıç değerini
istediği gibi değiştirebilmesine izin verilmesi için fonksiyon aşağıdaki gibi yenilenebilir. Fonksiyon hala
ciftSayilariGetir(5) için çalışacaktır; ancak kullanıcı çift sayıların başlangıç değerini belirlemek isterse bunun için
kullanıcının fonksiyonun varsayılan değerini 0 kabul ettiği bas parametresine değer ataması gerekecektir:
ciftSayilariGetir(5, 20)

about:blank 110/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

6.3. lambda Fonksiyonu


Lambda anahtar kelimesi kullanılarak tek satırlık fonksiyonlar yazılabilir.

Örneğin; bir önceki bölümde iki sayının toplamını döndüren fonksiyon lambda fonksiyonu olarak aşağıdaki şekilde
ifade edilebilir. Fonksiyon çağrıldıktan sonra Consoleda 210 yazdırılacaktır.

Aşağıda ise verilen sayının 10 katını döndüren lambda fonksiyonu tanımlanmıştır. Fonksiyonun adı kat_10’dur.
Ardından lambda anahtar kelimesi kullanılmıştır. Fonksiyon yalnızca a parametresini almakta ve geri anın 10 katını
döndürmektedir.

Bir sayının tek olup olmadığını boolean değer olarak döndüren lambda fonksiyonu ise aşağıdaki gibi tanımlanmıştır.
Fonksiyonda, sayının tek olup olmadığı short-hand-if kullanımı ile gerçekleştirilmiştir. tek_mi fonksiyonundan a
sayısı tek ise True, çiftse False döndürülmektedir.

6.4. Bazı Yardımcı Fonksiyonlar


map() fonksiyonu, liste, dizi gibi bir grup veriye belirli bir fonksiyonun uygulanmasını ve elde edilen sonucun
döndürülmesini sağlar. filter() fonksiyonu ise liste, dizi gibi bir grup veriye uygulandığında bir fonksiyon ile
tanımlanan koşulun True döndürüldüğü değerlerin geri döndürülmesini sağlar (Çobanoğlu, 2021). Bu iki önemli
fonksiyonun daha iyi anlaşılabilmesi için aşağıdaki kod bloğunda bir A listesi tanımlanarak map() ve filter()
fonksiyouna ilişkin farklı örneklere yer verilmiştir. İlkinde bir önceki bölümde tanımlanan kat_10lambda fonksiyonu
kullanılmıştır. Bu fonksiyon A’nın elemanlarına map() yardımıyla uygulanmıştır. Bu işlemin sonucunda geriye dönen
sonuçlar listeye çevrilerek ekrana yazdırılmıştır. İkinci örnekte ise yine bir önceki bölümde tanımlanan tek_mi
fonksiyonu kullanılmıştır. filter() fonksiyonu ile A listesinde filtreleme işlemi gerçekleştirilmiş, bir diğer ifade ile A

about:blank 111/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

listesinin içinden tek_mi fonksiyonu koşullarını sağlayan elemanlar çekilmiş ve ardından map() fonksiyonundakine
benzer şekilde listeye çevrilerek ekrana yazdırılmıştır.

6.5. Karma Örnekler


Bu bölümde, fonksiyonlar ile ilgili örnek problemlere, açıklamalarına ve ekran görüntülerine yer verilmiştir.

Örnek 1: Bir sayının asal olup olmadığı bilgisini boolean veri tipi olarak geri döndüren Python fonksiyonunu
yazınız.

Çözüm: En küçük asal sayı 2’dir. Eğer bir sayının 1’den ve kendisinden başka böleni yoksa sayı asaldır. Bu bilgi
doğrultusunda, asal_mi adında bir fonksiyon tanımlanmıştır. Fonksiyon, asal olup olmadığı kontrol edilecek bir
sayıyı (sayi) parametre olarak almaktadır. Ardından bu sayının 2’den küçük olup olmadığı kontrol edilir. Eğer girilen
sayı 2’den küçükse sayı asal değildir, bu nedenle de False döndürülür. Aksi durum için; 2’den başlayıp (sayi-1)’e
kadar olan tüm sayılar içinde sayi-yi tam bölen bir i olup olmadığına bakılır. Eğer böyle bir i böleni varsa, sayı asal
değildir demektir, False döndürülür. Aksi halde, sayı asaldır, True döndürülür. Fonksiyon; 5, 2, 221 ve 10 için
çalıştırıldığında sırasıyla True, True, False, False döndürülecektir.

Örnek 2: Verilen iki sayının yerini değiştirerek değerleri döndüren Python fonksiyonunu yazınız.

Çözüm: x1 ve x2 gibi iki sayı tanımlansın. Tanımlanacak fonksiyon adı degistir olarak belirlenmiş olup, fonksiyonun
n1 ve n2 şeklinde iki adet parametresi bulunmaktadır. Fonksiyon gövdesinde y adında geçici bir değişkene n1, n1’e
n2 ve ardından y değeri n2’ye atanır. Yeni değerler bir demet yapısında kullanıcıya döndürülür.

about:blank 112/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Örnek 3: Verilen bir metnin tersini döndüren Python fonksiyonunu yazınız.

Çözüm: Metni tersine çevirecek olan programın adı tersCevir olarak belirlenmiştir. Fonksiyonun metin adında bir
parametresi bulunmaktadır. Fonksiyon içinde öncelikle metnin tersini tutacak olan ters adında bir string değişken
tanımlanmıştır. Ardından for döngüsü metin değişkeninin sonundan başlayarak ilk karaktere kadar ters değişkenine
eklenmektedir. Sonunda, ters değişkeni döndürülmektedir. Fonksiyonun farklı değerlerle çalıştırılmasından elde
edilen ekran görüntüsü aşağıda yer almaktadır.

Örnek 4: Verilen bir metnin içindeki sesli harf sayısını döndüren Python fonksiyonunu yazınız.

Çözüm: Verilen bir metnin içindeki sesli harf sayısını bulan programın adı sesliHarfSayisi olarak belirlenmiştir.
Fonksiyon metin adında bir parametre almaktadır. Fonksiyon gövdesinde büyük ve küçük harflerden oluşan bir
sesliHarfler string değişkeni tanımlanmıştır. String ifade de karakterlere dair bir çeşit taşıyıcı yapı, bir koleksiyondur.
Sesli harflerin sayısını tutmak için ilk değeri 0 olan sayi adında bir değişken tanımlanmıştır. for döngüsünde metnin
içinde yer alan her bir harfin sesli harfler (sesliHarfler) arasında yer alıp almadığı kontrol edilmektedir. Eğer sesli
harflerin içinde yer alıyorsa sayi değişkeni 1 artırılacaktır. Döngü sona erdiğinde sayi döndürülecektir. Fonksiyona iki
farklı örnek metin verilmiş ve sonuçların yer aldığı ekran görüntüleri paylaşılmıştır.

about:blank 113/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Örnek 5: Verilen bir metinde tekrar eden karakterleri kaldırarak metin yeni halini geri döndüren Python
fonksiyonunu yazınız.

Çözüm: Verilen bir metinde tekrar eden karakterleri kaldırarak metin yeni halini geri döndürecek fonksiyon adı
tekrarlari_kaldir olarak belirlenmiştir. Fonksiyon metin adında bir parametre almaktadır. Ardından fonksiyon gövdesi
fonksiyondan döndürülecek yeni metnin tutulacağı değişkenin (yeni_metin) tanımlanması ile başlamaktadır. for
döngüsü boyunca parametre olarak girilen metnin karakterleri kontrol edilir ve daha önce hiç karşılaşılmayanlar
yeni_metin değişkenine eklenir. Döngü tamamlandığında yeni_metin fonksiyon tarafından döndürülür. Aşağıdaki kod
bloğunun sonunda fonksiyon kullanımına ilişkin bir örnek verilmiştir.

Örnek 6: İki kenarı verilen bir dikdörtgenin çevre ve alanını döndüren Python fonksiyonunu def ve lambda ile
yazınız.

Çözüm: Çevre ve alan hesabı yapacak fonksiyon def kullanılarak tanımlanırken, fonksiyon parametre olarak kenar
uzunluklarını tutacak olan a ve b parametrelerini almıştır. return içinde dikdörtgenin çevresi ve alanı sırasıyla
hesaplanarak geri döndürülmektedir. Benzer bir tanımlama lambda kullanılarak da yapılabilmektedir. Her iki
fonksiyon da aynı değerleri döndürmektedir.

about:blank 114/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Örnek 7: Girilen sayı kadar Fibonacci serisi elemanını döndüren Python fonksiyonunu yazınız.

Çözüm: Fibonacci serisi ilk iki elemanı 0 ve 1 olmak üzere, serinin bir elemanı kendinden önce gelen iki elemanın
toplamı şeklinde hesaplanmaktadır. Fonksiyon adı fibonacciSerisi olarak tanımlanmıştır. Fonksiyon girilen sayı kadar
eleman döndüreceğinden, parametre olarak bir n sayısını almaktadır. Fibonacci serisi elemanları dizi adındaki listede
tutulacaktır. Serinin ilk iki elemanı da a ve b şeklinde tanımlanmıştır. while döngüsü dizi uzunluğu n’e eşit olduğunda
tamamlanacaktır, çünkü bu aynı zamanda belirlenen n sayısı kadar eleman dizi listesine eklendi demektir. Döngüde
her iterasyonda, a eleman olarak eklenecektir, ardından bir sonraki iterasyon için a+b bir önceki, b ise iki önceki
eleman pozisyonuna gelecektir. Döngü tamamlandığında dizi fonksiyon tarafından geri döndürülür.

Örnek 8: Verilen bir listenin tüm elemanlarının tam sayı ya da kayan ondalıklı sayı olup olmadığını kontrol eden,
liste koşulu sağlıyorsa liste elemanlarının toplamını, sağlamıyorsa -1 geri döndüren Python fonksiyonunu yazınız.

Çözüm: Örnekte verilen fonksiyonun adı listeKontrol olarak belirlenmiştir. Fonksiyonda bir listenin elemanları
kontrol edileceğinden, parametre olarak listem adlı bir değişken almaktadır. Liste elemanları tam sayı ya da kayan
ondalıklı sayı ise sonuçta listedeki elemanların toplamı döndürülmek istendiğinden bu toplamın tutulacağı toplam
adında ilk değeri sıfır olan bir değişken tanımlanmıştır. for döngüsü bir listenin elemanlarını dolaşacak biçimde
oluşturulmuştur. Yani, eleman ilk iterasyonda verilen listem[0], ikinci iterasyonda listem[1], üçüncüde listem[2], …
olacaktır. for döngüsü içinde if-else ile listem listesinin her bir elemanı sırayla kontrol edilir. Eğer, eleman tam sayı
ya da kayan ondalıklı sayı ise (type(eleman) in (int, float) koşulu True dönerse) eleman her seferinde toplam
değişkenine eklenecektir. Tek bir eleman bile bu koşulu sağlamazsa -1 döndürülecek ve döngü sonlandırılacaktır.

Fonksiyon tanımlandıktan sonra iki örnek liste tanımlanarak fonksiyona girdi olarak verilmiştir. İlk liste olan A’da
tüm elemanlar koşulu sağladığından geriye elemanların toplamı olan 220.0 döndürülecektir. İkinci liste B’de ise her
ne kadar tüm elemanlar kurala uygun gibi gözükse de B[3] = “80.5” bir stringdir. Bu nedenle de type(eleman) in (int,
float) koşulu False döner. Neticede, fonksiyon -1 döndürür.

about:blank 115/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Fonksiyonun içindeki for döngüsü için alternatif bir başka çözüm aşağıdaki gibidir.

Örnek 9: Verilen bir listenin en büyük ve en küçük elemanlarını döndüren Python fonksiyonunu yazınız.

Çözüm: Örnekteki fonksiyonun adı enBuy_enKuc olarak belirlenmiştir. Eğer fonksiyona verilen liste boşsa (len(A)
== 0) None döndürülecektir. Ardından eğer listenin uzunluğu sıfırdan farklı ise, başlangıçta listenin maksimumu
(min_A) da minimumu (max_A) da listenin ilk elemanı olacak şekilde belirlenmiştir. Eğer listede bu elemandan daha
küçük bir eleman bulunursa yeni minimum o eleman, eğer listede bu elemandan daha büyük bir eleman bulunursa
yeni maksimum o eleman olarak belirlenir. Fonksiyon sonunda, listenin minimumu ve maksimumu olarak bulunan
elemanlar döndürülür.

Fonksiyon tanımlandıktan sonra örnek bir B listesi tanımlanarak fonksiyona girdi olarak verilmiştir. Fonksiyondan
dönen değerler sırasıyla min_B ve max_B değişkenlerine atanmıştır. Ardından sırasıyla, fonksiyona verilen B listesi,
B listesinin enBuy_enKuc() fonksiyonu yardımı ile bulunan en küçük ve en büyük elemanları yazdırılmıştır.

about:blank 116/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Örnek 10: Yarıçapı girilen bir çemberin çevresi ve alanını hesaplarken pi değerini varsayılan olarak 3.14 alan; ancak
kullanıcının pi değerini dilediği gibi ayarlamasına izin veren Python fonksiyonunu yazınız.

Çözüm: Örnekte hesapla adında bir fonksiyon tanımlanmıştır. Fonksiyon, yarıçapı girilen bir çemberin çevresi ve
alanı hesaplanacağından, yarıçap için r parametresini almaktadır. Ayrıca, pi değerini varsayılan olarak 3.14 alması;
aynı zamanda kullanıcının pi değerini dilediği gibi ayarlaması için diğer bir parametresi pi=3.14 olarak verilmektedir.
Ardından fonksiyon sırayla çevre ve alan bilgisini döndürmektedir.

hesapla(5) olarak verilen ilk kullanımda, yalnızca yarıçap için 5 argümanı verilmiştir. Bu nedenle, fonksiyonun pi
için varsayılan parametresi 3.14 alınmış, çevre ve alan buna göre hesaplanmıştır. Diğer yandan, hesapla(5,3) olarak
verilen ikinci örnek kullanımda pi’nin varsayılan değeri yerine 3 olarak kullanıcı tarafından belirlenen değeri
hesaplamalarda kullanılmıştır.

Bölüm Özeti
Bu bölümde, Python programlama dilinde fonksiyon kavramı en temel ve yalın hali ile ele alınmıştır. Ardından, hazır
fonksiyonların yanı sıra kullanıcı tanımlı fonksiyonlara da yer verilmiştir. def anahtar kelimesi kullanılarak
fonksiyonların nasıl tanımlandığı öğretilirken, fonksiyonların tekrar kullanılabilirliği ve kodun modülerliğini
artırmada nasıl önemli bir rol oynadığı vurgulanmıştır. Aynı zamanda, lambda fonksiyonlarıyla daha kısa ve işlevsel
bir yaklaşımın nasıl sağlandığı ifade edilmiştir. Buna ek olarak, map() ve filter() gibi yardımcı fonksiyonlarla veri

about:blank 117/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

üzerinde dönüşüm ve filtreleme örneklerle sunulmuştur. Fonksiyonlarla ilgili karma örnekler, öğrencilere farklı
senaryolarda fonksiyonların nasıl kullanılabileceğini göstererek pratik beceriler kazandırmayı amaçlamaktadır.

Kaynakça
Amos, D. (2018). Object-Oriented Programming (OOP) in Python 3. [Link]
oriented-programming/

Breuss, M. (2017). Python Virtual Environments: A Primer. RealPython. [Link]


environments-a-primer/

Brownlee, J. (2016, May 10). How To Load Machine Learning Data in Python. [Link].
[Link]

Bureau, I. (2019). Difference between Compiler and Interpreter. Business Insider.


[Link]

Çobanoğlu, B. (2021). Herkes İçin Python (3rd ed.). Pusula 20 Teknoloji ve Yayıncılık A.Ş.

Costa, C. D. (2020, November 23). Top 16 Python Applications in Real-World. Medium.


[Link]

Deitel, H. M., & Deitel, P. J. (2010). C ve C++ (M. Zavrak, E. Aksoy, & H. N. Karaca, Trans.; 3rd ed.). Sistem
Yayıncılık.

GeeksforGeeks. (2016, May 16). Python OOPs Concepts. GeeksforGeeks. [Link]


oops-concepts/

GeeksforGeeks. (2020, January 18). How to Install PIP on Windows ? GeeksforGeeks.


[Link]

[Link]. (2020). Memory Management in Python. [Link]


in-python/

[Link]. (2021, October 22). Top 10 Python Applications in Real World. GeeksforGeeks.
[Link]

Gupta, A. (2023). Top 10 Python IDEs in 2023: Choosing The Best One. [Link].
[Link]

Harris, C. R., Millman, K. J., Walt, S. J. van der, Gommers, R., Virtanen, P., Cournapeau, D., Wieser, E., Taylor, J.,
Berg, S., Smith, N. J., Kern, R., Picus, M., Hoyer, S., Kerkwijk, M. H. van, Brett, M., Haldane, A., Río, J. F. del,
Wiebe, M., Peterson, P., … Oliphant, T. E. (2020). Array programming with NumPy. Nature, 585(7825), 357–362.
[Link]

Hjelle, G. A. (2020). Python import: Advanced Techniques and Tips. [Link]

[Link]. (2023). Making kernels for IPython—IPython 3.2.1 documentation. [Link]


doc/3/development/[Link]

Jeevan, M. (2022). How to Select Rows and Columns in Pandas Using [ ], .loc, iloc, .at and .iat. KDnuggets.
[Link]

Jones, L. (2019). Pointers in Python: What’s the Point? – Real Python. [Link]

Koidan, K. (2021, July 15). Difference Between Python Modules, Packages, Libraries, and Frameworks.
[Link]. [Link]

Lutz, M. (2009). Learning Python (4th ed.). O’Reilly Media.

Lutz, M. (2011). Programming Python (4th ed.). O’Reilly. [Link]


python-second/0596000855/[Link]

about:blank 118/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Mathew, S. T. (2021). Python Fundamentals for Everybody—Type Conversion vs Type Coercion.


[Link]
34234e99c9c4

McKinney, W. (2010). Data Structures for Statistical Computing in Python. In S. van der Walt & J. Millman (Eds.),
Proceedings of the 9th Python in Science Conference (pp. 56–61). [Link]

McKinney, W. (2012). Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython (1st ed.).
O’Reilly Media.

Microsoft. (2022). How to create and manage Python environments in Visual Studio. [Link]
us/visualstudio/python/managing-python-environments-in-visual-studio?view=vs-2022

Panwar, P. (2022). Use existing Python packages with Spyder 5. [Link]


spyder5/

Pérez, F., & Granger, B. E. (2007). IPython: A System for Interactive Scientific Computing. Computing in Science
and Engineering, 9(3), 21–29. [Link]

Pozo Ramos, L. (2023). Python’s del: Remove References From Scopes and Containers.
[Link]

[Link]. (2023). Python Object Oriented Programming. [Link]


programming/object-oriented-programming

[Link]. (2023). PyInstaller Manual—PyInstaller 5.8.0 documentation. [Link]

Python Software Foundation. (2023a). IDLE. Python Documentation. [Link]

Python Software Foundation. (2023b). Python a programming language changes the world Final Production Content
Case Studies & Success Stories. [Link]
1-final-content-preview

[Link]. (2023a, February 15). Free Python Tutorial For Beginners: Learn Python. Python Land.
[Link]

[Link]. (2023b, February 15). Welcome to [Link]. [Link]. [Link]

Sawant, S. (2021, February 17). Semicolon in Python—AskPython. [Link]


python

Singhal, B. (2017). Iris Dataset. Mendeley Data, V1. [Link]

[Link]. (2023). Pandas Difference Between loc[] vs iloc[]. [Link].


[Link]

[Link]. (2022). Home—Spyder IDE. [Link]

Statista. (2022). Most used languages among software developers globally 2022. Statista.
[Link]

team, T. pandas development. (2020). pandas-dev/pandas: Pandas (latest) [Computer software]. Zenodo.
[Link]

Uğuz, S. (2021). Makine Öğrenmesi: Teorik Yönleri ve Pyhton Uygulamaları İle Bir Yapay Zeka Ekolü (2nd ed.).
Nobel Akademik Yayıncılık.

Uzun, E. (2023). Temel Operatörler. [Link]

VanderPlas, J. (2016a). Basic Python Semantics: Variables and Objects. In Whirlwind Tour of Python. O’Reilly
Media, Inc.
[Link]

about:blank 119/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

VanderPlas, J. (2016b). Built-In Data Structures. In Whirlwind Tour of Python. O’Reilly Media, Inc.
[Link]
[Link]

VanderPlas, J. (2016c). Defining and Using Functions. In Whirlwind Tour of Python. O’Reilly Media, Inc.
[Link]
[Link]

VanderPlas, J. (2016d). Iterators. In Whirlwind Tour of Python. O’Reilly Media, Inc.


[Link]
[Link]

VanderPlas, J. (2016e). Python Data Science Handbook: Essential Tools for Working With Data (1st ed.). O’Reilly
Media.

VanTol, A. (2019). Memory Management in Python – Real Python. [Link]


management/

vegibit. (2023). Type Coercion Vs Type Casting In Python. [Link]


python/

[Link]. (2023). [Link]. [Link]

[Link]. (2023a). Beginners Guide/Overview—Python Wiki.


[Link]

[Link]. (2023b). Python Implementations. [Link]

Ünite Soruları
Soru-1 :

Verilen fonksiyonla ilgili aşağıdaki seçeneklerden hangisi doğrudur?

(Çoktan Seçmeli)

(A) Parametre alan, geri değer döndüren bir fonksiyondur.

(B) Parametre almayan, geri değer döndüren bir fonksiyondur.

(C) Parametre alan, geri değer döndürmeyen bir fonksiyondur.

(D) Parametre almayan, geri değer döndürmeyen bir fonksiyondur.

(E) Fonksiyonu çağırmak için fonk() yazmak yeterlidir.

Cevap-1 :

Parametre alan, geri değer döndüren bir fonksiyondur.

Soru-2 :

Verilen kod bloğunda akışı bozan nedir?

about:blank 120/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(Çoktan Seçmeli)

(A) Fonksiyon parametre almaması gerektiği halde sayi1 ve sayi2 ile çağrılmaya çalışılmaktadır. toplama() şeklinde
çağrılması yeterlidir.

(B) Fonksiyon geri değer döndürmediği halde, fonksiyon çağrılırken toplam değişkenine atanmıştır. Bu atama
kaldırılmalıdır.

(C) Fonksiyon içinde return ifadesi kullanılamaz, silinmelidir.

(D) Fonksiyonun çağırıldığı yerden önce tanımlanması gereklidir. toplam = toplama(sayi1, sayi2) kod satırı bloğun
sonuna alınmalıdır.

(E) Fonksiyon için 10 ve 20.5 argümanları doğrudan verilmelidir. sayi1 ve sayi2 değişkenleri tanımlanmamalıdır.

Cevap-2 :

Fonksiyonun çağırıldığı yerden önce tanımlanması gereklidir. toplam = toplama(sayi1, sayi2) kod satırı bloğun
sonuna alınmalıdır.

Soru-3 :

Aşağıda bir satıcının müşterinin ödeme miktarına göre varsayılan %10 indirim yaptığı ve nihai ödeme tutarının
hesaplandığı bir fonksiyon tanımlanmaktadır. Verilen kod bloğu çalıştırıldığında aşağıdaki seçeneklerden hangisi
doğru olur?

(Çoktan Seçmeli)

(A) Herhangi bir indirim yapılmaz, çünkü indirim parametresine değer girilmemiştir.

(B) %500 indirim uygulanır.

(C) %10 indirim uygulanır ve geri 450.0 döndürülür.

(D) Fonksiyon tanımında bir parametresi değer almazken diğerine varsayılan değer tanımlanmıştır. Bu nedenle
verilen kod bloğu çalışmaz.

(E) %100 indirim uygulanır ve geri 0 döndürülür.

Cevap-3 :

%10 indirim uygulanır ve geri 450.0 döndürülür.

Soru-4 :

Aşağıda verilen fonksiyonun görevi seçeneklerden hangisinde eksiksiz bir biçimde verilmiştir?

about:blank 121/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(Çoktan Seçmeli)

(A) Kullanıcı tarafından girilen bir sayının 10 ile bölünüp bölünmediğini kontrol eder, eğer bölünüyorsa bölüm
değerini döndürür.

(B) Kullanıcı tarafından girilen sayıların sıfırdan büyükse ve 10 ile bölünüyorsa bs listesine atar, bölünmeyen sayıları
döndürür.

(C) Kullanıcı tarafından girilen sayıların sıfırdan büyükse ve 10 ile bölünüyorsa bs listesine atar, bs listesini
döndürür.

(D) Kullanıcı tarafından girilen bir sayının basamaklarını ayırır ve bu basamakları bir demet (tuple) içinde döndürür.

(E) Kullanıcı tarafından girilen bir sayının basamaklarını ayırır, basamakları tek tek bir listeye atar ve bu listeyi
döndürür.

Cevap-4 :

Kullanıcı tarafından girilen bir sayının basamaklarını ayırır, basamakları tek tek bir listeye atar ve bu listeyi döndürür.

Soru-5 :

Bir metin içinde belirli bir karakterin kaç kez geçtiğini sayan bir fonksiyon tanımlanıyor. Noktalarla belirtilen boşluk
aşağıdaki seçeneklerden hangisi ile tamamlanabilir?

(Çoktan Seçmeli)

(A) def kacTane(metin, karakter)

(B) def kacTane(metin, karakter):

(C) def kacAdet(metin, karakter):

(D) define kacTane(metin, karakter):

(E) define kacAdet(metin, karakter):

Cevap-5 :

def kacTane(metin, karakter):

about:blank 122/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Soru-6 :

def ile tanımlanan fonksiyonun lambda ile ifadesi aşağıdaki seçeneklerden hangisinde verilmiştir?

(Çoktan Seçmeli)

(A) carp = lambda s1 s2 s3: s1*s2*s3

(B) carp = lambda s1, s2, s3: s1*s2*s3

(C) carp = lambda s1*s2*s3: s1, s2, s3

(D) carp = lambda s1*s2*s3

(E) carp = lambda: s1*s2*s3

Cevap-6 :

carp = lambda s1, s2, s3: s1*s2*s3

Soru-7 :

Aşağıdaki seçeneklerden hangisinde girilen bir metni büyük harfe çeviren bir lambda fonksiyonu verilmiştir?

(Çoktan Seçmeli)

(A) cevir = lambda x = [Link]

(B) cevir = lambda: x: [Link]()

(C) cevir = lambda x - [Link]()

(D) cevir = lambda x: [Link]()

(E) cevir(lambda x: [Link]())

Cevap-7 :

cevir = lambda x: [Link]()

Soru-8 :

metinler = ["Merkür", "vEnüS", "DünyA", "MArs"] listesi veriliyor. Aşağıdaki seçeneklerin hangisi listedeki tüm
elemanları büyük harfe çevirerek liste biçiminde döndürür?

(Çoktan Seçmeli)

(A) list(map(lambda x: [Link](), metinler))

(B) list(map(lambda x= [Link], metinler()))

(C) map(list(lambda x: [Link](), metinler))

(D) lambda(map x: [Link](), metinler)

(E) lambda x: [Link](metinler)

Cevap-8 :
about:blank 123/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

list(map(lambda x: [Link](), metinler))

Soru-9 :

Aşağıdaki kod bloğu çalıştırıldığında ekrana ne yazdırılır?

(Çoktan Seçmeli)

(A) ['İlkim']

(B) ['Elif', 'İlkim', 'Zeki']

(C) ['Elif', 'İlkim']

(D) ['Önay', 'Zeki', 'Utku']

(E) ['Elif']

Cevap-9 :

['Elif', 'İlkim']

Soru-10 :

Python dilinde bir fonksiyonun argümanlarını (parametrelerini) birbirinden ayırmak için hangi sembol kullanılır?

(Çoktan Seçmeli)

(A) .

(B) ,

(C) ;

(D) <-

(E) []

Cevap-10 :

about:blank 124/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

7. NESNEYE YÖNELİMLİ PROGRAMLAMA


Bölümle İlgili Özlü Söz
Öğrenebileceğiniz en feci şey, ilk programlama dilinizdir.

Alan Kay, Bilgisayar Programcısı

Kazanımlar
1. Nesneye yönelimli programlamanın temel prensiplerini anlar.

2. Sınıf ve nesne kavramlarını kavrar ve kullanabilir.

3. Nesneye yönelimli programlamanın avantajlarını bilir.

4. Python ile sınıf ve nesne oluşturabilir.

5. Sınıfların özelliklerini (attributes) ve metodlarını (methods) tanımlayabilir ve kullanabilir.

6. Sınıflar arasındaki miras ilişkisini anlar ve kullanabilir.

7. Çok biçimlilik (polymorphism) kavramını anlar ve uygulayabilir.

8. Aynı metot adı ile farklı sınıflar arasında farklı metodlar tanımlamayabilir, bu tür bir tanımlamanın avantajlarını ve
kullanımını anlar.

9. Kapsülleme (encapsulation) prensiplerini anlar ve uygular.

10. Sınıf üyelerine erişim kontrolü uygulayabilir.

Birlikte Düşünelim
1. Nesneye yönelimli programlama nedir ve neden önemlidir? Nesneye yönelimli programlamanın temel prensipleri
nelerdir?

2. Python ile bir sınıfın nasıl tanımlandığını ve bir nesnenin nasıl oluşturulduğunu açıklayınız.

3. Bir nesnenin özellikleri (attributes) ve metodları (methods) arasındaki fark nedir? Bir örnekle açıklayınız.

4. Nesneye yönelimli programlamanın avantajları nelerdir ve hangi tür uygulamalar için uygundur?

5. En az iki farklı özellik ve metoda sahip bir sınıf oluşturunuz. Bu sınıfa ait 2 farklı nesne yaratınız.

6. Miras alma/kalıtım (inheritance) nedir ve neden kullanılır? Hangi durumlarda miras alma kullanışlıdır?

7. Python dilinde bir alt sınıf (subclass) bir üst sınıftan (superclass) nasıl türetilebilir?

8. Çok biçimlilik (polymorphism) nedir ve neden önemlidir? Hangi avantajlar sunar?

9. Python dilinde çok biçimliliği nasıl uygularsınız? Örnekler vererek açıklayınız.

10. Kapsülleme (encapsulation) nedir ve neden kullanılır? Ne gibi avantajlar sunar?

11. Python ile kapsülleme nasıl uygulanır?

Başlamadan Önce

about:blank 125/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Nesneye yönelimli programlamanın (Object Oriented Programming- OOP), birçok modern programın temelini
oluşturan bir yaklaşımdır ve programların daha düzenli, modüler ve anlaşılır hale getirmeyi sağlar. Ayrıca, program
kodunun yeniden kullanılmasını ve sürdürülebilir kılınmasına yardımcı olur. Özellikle, büyük ve karmaşık projelerin
daha kolay yönetilmesine yardımcı olacak güçlü bir programlama yaklaşımıdır. Bu bölümde, nesneye yönelimli
programlamanın temel kavramlarına, Python programlama dilinde nasıl uygulandığına ve genel programlama
çerçevesinde nesneye yönelimli programlamanın neden önemli bir unsur olduğuna dair temel bilgiler bulunmaktadır.
Python programlama dilinde sınıf ve nesne kavramlarını anlatılarak, verileri ve fonksiyonların nasıl gruplanabileceği
ve düzenlenebileceğine ilişkin örnekler ve açıklamalar yer almaktadır.

Sınıf ve nesne kavramlarının ardından, miras alma/kalıtım (inheritence), çok biçimlilik (polymorphism) ve
kapsülleme (encapsulation) gibi nesneye yönelimli programlamanın ileri düzey konuları işlenmiştir. Böylelikle,
program kodunun daha esnek, özelleştirilebilir, güvenli ve sürdürülebilir hale gelebilecektir. Bu bölümün sonunda,
Python programları nesneye yönelimli programlamanın prensiplerine uygun biçimde tasarlanabilecek ve
geliştirilebilecektir.

7.1. Nesneye Yönelimli Programlama


Nesneye Yönelimli Programlama (Object Oriented Programming - OOP), özelliklerin ve davranışların ayrı ayrı
nesneler (objects) halinde paketlenmesi için programları yapılandırmanın bir yolunu sağlayan bir programlama
paradigmasıdır (Amos, 2018). Java, C#, Python, PHP, JavaScript, Ruby ve Perl nesneye yönelimli programlama
dilleri arasındadır. Nesneye yönelimli programlama mantığı gerçek dünyadaki (canlı/cansız) nesnelerin programlama
ortamına taşınması gibi düşünülebilir. Örneğin; ad, soyad, yaş, telefon ve adres gibi özelliklere ve yürüme, konuşma,
nefes alma ve koşma gibi eylemlere sahip bir kişiyi temsil eden bir nesne oluşturulabilir. Daha özel bir örnek
verilmek istenirse; alıcı listesi, konu başlığı ve gövde gibi özelliklere ve ek ekleme ve gönderme gibi eylemlere sahip
bir e-postayı temsil eden bir nesne olabilir. Programlamada yer alan diğer bir paradigma ise, bir görevi tamamlamak
için sırayla akan fonksiyon ve kod blokları biçiminde bir dizi adım sağlaması açısından bir programı bir tarif gibi
yapılandıran prosedürel programlamadır (Amos, 2018). Python dilinde nesneler, nesne yönelimli programlamanın
merkezinde yer alır, prosedürel programlamada olduğu gibi yalnızca veriyi değil, programın genel yapısında da
veriyi temsil eder.

Nesneye yönelimli programlamada iki önemli unsur yer almaktadır. Bunlardan ilki kalıtım (inheritance), diğeri ise
kompozisyondur (composition). Bu iki unsur hakkında somut örnekler verilebilir (Lutz, 2009): Eğer bir pizzacıda
pizza yapan robotlar kullanılmakta ise, pizza yapan robotlar, normal robot türleridir. Dolayısıyla, normal robot
özelliklerine halihazırda sahiplerdir. Nesneye yönelimli programlama bakış açısıyla değerlendirildiğinde, tüm
robotların genel kategorisinden özelliklerin pizza robotları tarafından miras alındığı söylenebilir. Bu ortak özelliklerin
genel durum için yalnızca bir kez uygulanması gerekir ve gelecekte inşa edebileceğimiz tüm robot türleri tarafından
yeniden kullanılabilir. Pizza yapan robotlar, gerçekten bir ekip olarak birlikte çalışan bileşenlerin birer
koleksiyonudur. Örneğin, robotun verilen görevi başarıyla tamamlamasında kollara, motorlara vb. ihtiyacı olabilir.
Yine nesneye yönelimli programlama bakış açısıyla, pizza yapan robot bir kompozisyon örneğidir; görevi yerine
getirmek için diğer nesneleri içerir. Her bileşen, kendi davranışını ve ilişkilerini tanımlayan bir sınıf (class) olarak
kodlanabilir.

7.2. Sınıf ve Nesne


Sınıf (class), kullanıcı tanımlı bir veri yapısı oluşturmak için kullanılmaktadır (Amos, 2018). Bir sınıftan birden fazla
nesne türetilebilir (Çobanoğlu, 2021). Bir sınıfın nesnesini oluşturma işlemine örnekleme (instantiation) denir.
Sınıflar, sınıftan oluşturulan bir nesnenin verisiyle gerçekleştirebileceği özellik ve eylemleri tanımlayan yöntem
(method) adı verilen fonksiyonları tanımlar. Bir şey nasıl tanımlanmak isteniyorsa onun çatısı oluşturulur. Eğer bir
“kişi” sınıfı yaratılacaksa, ad, soyad, yaş, telefon ve adres gibi özelliklere, yürüme, konuşma, nefes alma ve koşma
gibi eylemlere sahip olacağı belirlenir. “kişi” sınıfından oluşturulan bir örnek ise artık gerçek veri içeren bir yapıdır,
bir taslak ya da çatı ya da plan biçiminde değildir. Adı Elif, soyadı Kartal, yaşı 36, … şeklinde. Sınıf, boş bir form
olarak düşünülebilir, üzerinde standart sorular mevcuttur (Amos, 2018). Diğer yandan, örnek artık bu anketin dolu
halidir, herkes kendi adına anketi doldurabilecektir. Dolayısıyla bu, bir sınıftan birden fazla örnek türetilebilir
düşüncesini de destekler.

Python ile sınıf oluşturulurken aşağıdaki özellikler dikkate alınır (GeeksforGeeks, 2016):

• Sınıflar, class anahtar kelimesiyle oluşturulur.

• Özellikler, bir sınıfa ait değişkenlerdir.

about:blank 126/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

• Özellikler her zaman geneldir ve nokta (.) operatörü kullanılarak erişilebilir. Örn.: Sınıfım.Özellik gibi.

Aşağıda evcilHayvanPasaportu adında bir sınıf tanımlanmıştır.

evcilHayvanPasaportu sınıfına ait bir nesne yaratılmak istenirse, yaratılacak bu nesneye ait üç temel özellik mevcut
olacaktır (GeeksforGeeks, 2016):

• Durum (State): Bir nesnenin özellikleri ile temsil edilir.

• Eylem (Behaviour): Bir nesnenin metotları ile temsil edilir.

• Kimlik (Identity): Bir nesneye benzersiz bir ad verir ve bir nesnenin diğer nesnelerle etkileşime girmesini sağlar.

Pasaport sınıfına ait bir nesne aşağıdaki kod satırı yardımı ile oluşturulabilir. Nesnenin oluşturulabilmesi için
evcilHayvanPasaportu sınıfının yaratılması gerekmekte olduğu unutulmamalıdır.

Önceki örneklerde sınıfın içinde herhangi bir özellik ya da metot tanımlanmadığından herhangi bir işlem de
gerçekleştirilememiştir. Aşağıdaki sınıf için bir de tur adında bir özellik tanımlanmıştır. Bir sınıftan türetilen nesneler
sınıf özelliklerine de sahiptir. Ayrıca, daha sınıfın örneği oluşturulurken, kedinin adını isteyecek bir sınıf oluşturulsun.
__init__, evcilHayvanPasaportu sınıfının bir örneğini başlatan özel yapıcı (constructor) bir metottur. İki parametre
alır: İlk parametre self, oluşturulan örneğe atıfta bulunurken, ad kedi adını temsil eder. Sınıf tanımlama işleminin
ardından pp_misik, pp_safyuz ve pp_cicero adında bu sınıfın üç farklı örneği oluşturulmuştur. Bu işlem sırasında her
biri için bir ad alındığı unutulmamalıdır. Sınıfa ait bu örneklerin adına ve sınıf özelliğine nasıl erişildiği her üçü için
de gösterilmiştir. İlgili ekran görüntüsüne ise kod bloğundan sonra yer verilmiştir.

about:blank 127/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Verilen sınıfa bir de metot dâhil edilirse mevcut sınıf aşağıdaki biçimde yeniden yazılabilir. Bu sayede
evcilHayvanSınıfınakısaBilgi adında bir metot eklenmiş olur. Bu metot, yine self aracılığı ile oluşturulan örneğe
atıfta bulunur. İlgili Python kod bloğuna ve elde edilen ekran görüntüsüne aşağıda yer verilmiştir.

Şimdi de yeni bir Market sınıfı tanımlansın. Market sınıfının ad, konum ve urunler olmak üzere üç özelliği
bulunmaktadır. Sınıfa ait bir örnek tanımlanırken başlangıçta muhakkak ad ve konum özelliklerine veri girişi
yapılması gerekmektedir. Sınıfın içinde urun_ekle(), urun_sil() ve urunleri_listele() adı verilen metotlar
tanımlanmıştır. urun_ekle() metodunda bir ürün adı girilmesi beklenmektedir. Bu doğrultuda boş bir liste olan urunler
özelliğine append() ile atama yapılması sağlanır. Eğer stoktaki bir ürünün silinmesi söz konusu ise urun_sil()
kullanılacaktır. Adı verilen ürün, urunler listesinden kaldırılmış olur, eğer ilgili ürün stokta bulunamazsa “… stokta
bulunamadı.” uyarısı döndürülür. urunleri_listele() ile stoktaki ürün adları yazdırılır.

about:blank 128/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Market sınıfının örnek uygulamasında marketim adında bir örnek türetilmiştir. Ardından çeşitli ürünler urun_ekle()
yardımıyla sırasıyla market stoğuna eklenmiş ve stoktaki ürünler urunleri_listele() ile listelenmiştir. “Domates” ürünü
stokta olmadığından bu ürün urun_sil() yardımıyla stoktan silinmeye çalışıldığında uyarı döndürülecektir. “Peynir”
ise stoktan kaldırılacaktır. Tüm stok ürünleri yeniden listelendiğinde stoğun son durumu yazdırılmış olur.

about:blank 129/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

7.3. Miras Alma/Kalıtım (Inheritence)


Nesneye yönelimli programlamanın önemli özelliklerinden biri de kalıtım/miras alma (inheritence) idi. Yukarıda
evcilHayvanPasaportu adında bir sınıf ve bu sınıfa ait örnekler oluşturulmuştur. Bu bölümde ise bir sınıf anasınıf
(parent) olarak yerini alırken diğeri ondan miras alan (child) konumda olacaktır. Aşağıda verilen örnekteki
hayvanPasaportu ana sınıf, evcilHayvanPasaportu ise hayvanPasaportu’ndan miras alan sınıftır. Miras almak ile
kastedilen, miras alan sınıf tarafından bir üst sınıfa (superclass) ait özellik ve metotlar kullanılabilir ve bir üst sınıfın
metotları değiştirilebilir. Aşağıda öncelikle hayvanPasaportu sınıfı tanımlanmıştır. ad, tur,irk, cinsiyet, dogumTarihi
ve renk özellikleri ile kisaBilgi ve detayliBilgi metotlarını içermektedir.

Sonrasında da hayvanPasaportu sınıfını miras alan evcilHayvanPasaportu sınıfı tanımlanmıştır.


evcilHayvanPasaportu sınıfında hayvanPasaportu sınıfından farklı olarak cipNo, sahipAd ve sahipSoyad şeklinde üç
farklı özellik ve bir yeni sahip metodu daha mevcuttur. Ayrıca, kısaBilgi metodu miras alan sınıf içinde
değiştirilmiştir. Dikkat edilmesi gereken, miras alan sınıf içinde hayvanPasaportu sınıfına özel yapıcı fonksiyon
çağrılmıştır.

about:blank 130/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Bu iki sınıf tanımlandıktan miras alan sınıf olan evcilHayvanPasaportu sınıfının misik_pp adında bir örneği
yaratılmıştır. İlk kod satırından da görüleceği gibi bu örnek hem miras alınan sınıfın (hayvanPasaportu) özellikleri
hem de evclHayvanPasaportu sınıfının özellikleri ile oluşturulmuştur. kisaBilgi(), detayliBilgi() ve sahip()
metotlarından döndürülen verinin bulunduğu ekran görüntüsü aşağıda verilmiştir.

Şimdi de aşağıda tanımlanan Agac sınıfı ile Agac sınıfından miras alan MeyveAgaci ile YaprakDokmeyenAgac
sınıfları incelensin. Agac sınıfının tur ve boy adında iki özelliği vardır ve sınıfa ait örnek oluşturulurken bu bilgilerin
de girilmesi gerekir. Ağacın boyuna girilecek olan büyüme miktarının (buyume) ilâve edildiği uzat() metodu ile ağaç
hakkında genel bilginin görüntülenmesini sağlayan bilgi() metodu bulunmaktadır.

Agac sınıfından miras alan sınıflardan biri MeyveAgaci sınıfıdır. Bu sınıfta ilaveten meyve özelliği ve ağacın
meyvesinin görüntülenmesini sağlayan meyvesi() metodu bulunmaktadır. Diğer alt sınıf (subclass) olan
about:blank 131/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

YaprakDokmeyenAgac ise Agac sınıfından farklı olarak igneTuru özelliğini içermektedir. Ayrıca, bilgi() metodu ile
listelenenlere igneTuru özelliği de eklenmiştir.

Sınıfların örnek kullanımı için önce temel sınıf olan Agac sınıfının sonrasında da MeyveAgaci ve
YaprakDokmeyenAgac sınıflarının birer örneği oluşturulmuş ve bu örnekler üzerinden sınıfların özellikleri ve
metotlarına erişim sağlanmıştır. Ekran görüntülerine kod bloğunun altında yer verilmiştir.

about:blank 132/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

7.4. Çok Biçimlilik (Polymorphizm)


Bir temel sınıfın bir metodunun, alt sınıflar tarafından kendi kullanım amaçlarına göre değiştirilmesine çok
biçimlilik (polymorphizm ya da method overriding) adı verilmektedir. Çok biçimliliği örneklemek için
evcilHayvanPasaportu sınıfının yanı sıra vahsiHayvanPasaportu sınıfı tanımlanmıştır. Temel sınıf ve alt sınıflar
incelendiğinde kisaBilgi metodunun değişik biçimlerde kullanıldığı görülebilecektir. Bu metot, hayvanPasaportu
sınıfında yalnızca hayvan türü ve adını döndürürken, evcilHayvanPasaportu sınıfında çip numarası, hayvan türü ve
adını, vahsiHayvanPasaportu sınıfında ise kıta, bolge ve ad bilgilerini döndürmektedir.

Çok biçimlilik için başka bir örnek vermek gerekirse, Sekil sınıfı ve bu sınıftan türetilen Kare ve Dikdortgen sınıfları
incelenebilir. Ana sınıfta yer alan alan ve cevre metotları Kare ve Dikdortgen sınıflarında farklı hesaplamalar yaparak
farklı değerler döndürmektedir. İlgili alt sınıfın alan() ve cevre() formülleri geçerli olmaktadır.

about:blank 133/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

7.5. Kapsülleme (Encapsulation)


Kapsülleme, tek bir sınıfın içine özelliklerin ve metotların gömülmesi işlemidir. Kapsülleme, özelliklerin ve
metotların tek bir sınıf içinde paketlenmesini ifade eder. Dış sınıfların bir sınıfın özellik ve metotlarına erişmesini ve

about:blank 134/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

bunları değiştirmesini de engeller, veri gizlemeye yardımcı olur ([Link], 2023). Python dilinde, diğer bazı
programlama dillerinde olduğu gibi özel (private) bir değişken tanımlamak için private sözcüğü kullanılmaz. Bunun
yerine Python sınıf özellikleri çift altçizgi (__) ön eki yardımı ile tanımlanır.

Aşağıda Calisan adında bir sınıf tanımlanmıştır. Bu sınıfın, KurumID özelliği ve f1() metodu özel (private)
tanımlanmıştır. Yani, eğer sınıfın bir örneği oluşturulursa ve ardından KurumID ve f1() metoduna erişilmek istenirse
sınıfın bu şekilde tanımlanmış olan özelliği ya da metodu yoktur şeklinde hata mesajı döndürülür. Sınıfın içindeki
f2() özel şekilde tanımlanmamıştır. Dolayısıyla, sınıfın bir örneği üzerinden f2 çağrılabilir. KurumID ve f1() için
erişim f2() üzerinden sağlanmıştır. Bu nedenle de kod bloğunun son satırı çalıştırıldığında, özel değişkenlerin
görülebilmesi sağlanmış olur.

Örneğin; aşağıdaki gibi bir Sinav sınıfı olsun. Bu sınıfın içinde gecmeNotu özel (private) şeklinde tanımlansın. Bu
özelliğin değerini gösterecek bir metot bir de değer atama için kullanılan setGecmeNotu() metodu tanımlanmıştır.
Sinav sınıfının bir s örneği yaratılmıştır. Goster metodu çağrıldığında __gecmeNotu değerinin 75 olduğu
görülecektir. Bu değişkene dışarıdan bir atama yapılmaya çalışılırsa, bu değişkenin değerini değiştirmeyecektir.
Değerin hala 75 olduğu görülebilir. Tanımlanan bu özel değişken değeri ancak setGecmeNotu çağrılırsa
değiştirilecektir.

about:blank 135/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

about:blank 136/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Python ile kapsülleme üzerine başka bir örnek de Film sınıfı üzerinden verilsin. Sınıf oluşturulurken bir filme özgü
başlık, tür ve puan gibi bazı özellikler özel (private) tanımlanmıştır. Dolayısıyla, sınıfın örneği oluşturulduktan sonra
bu özelliklerine erişim sağlanamayacak, değerleri değiştirilemeyecektir. Bu nedenle, her bir özelliğin değerini
görebilmek get_baslik(), get_tur() ve get_puan() metotları, her bir özelliğe değer atayabilmek içinse set_baslik(),
set_tur() ve set_puan() metotları oluşturulmuştur. set_puan() metodunda ekstra olarak puanın 1 ile 10 arasında olup
olmadığı kontrol edilmiştir. Eğer puan olarak atanan değer uygunsa atama işlemi gerçekleştirilecek, aksi takdirde
metot uyarı mesajı döndürecek şekilde ayarlanmıştır.

about:blank 137/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Bu sınıfın örnek kullanımında Film sınıfının bir örneği olan m1 baslik, tur ve puan değerleri sırasıyla “Buz Devri 3:
Dinazorların Şafağı”, “Çizgi Film” ve 9.5 olacak şekilde tanımlanmıştır. Ardından bu değerler; get_baslik(), get_tur()
ve get_puan() metotları yardımı ile yazdırılmıştır. Ardından m1’in 9.5 olan puanı 10 olarak değiştirilmiştir. m1’in
yeni puan değeri ekrana yazdırılmıştır. Son satırda, puan özelliğinin set_puan metodunda kontrol edilen değer aralığı
kapsamı dışında bir değer girilmiştir. Buna karşılık bekleneceği gibi Lütfen 1-10 arasında geçerli bir puan giriniz.
uyarısı döndürülmüştür. Eğer diğer m1’in başlık ya da türü değiştirilmek istenirse set_baslik() ve set_tur() metotları
kullanılabilecektir.

about:blank 138/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Bölüm Özeti
Bu bölümde, nesneye yönelimli programlamaya odaklanılmaktadır. İlk olarak, sınıf ve nesne kavramları ayrıntılı bir
şekilde açıklanarak, nesneye yönelimli programlamanın temelini oluşturan bu yapılar anlatılmıştır. Ardından, miras
alma/kalıtım konusu ele alınarak, sınıflar arasındaki hiyerarşik ilişkilerin nasıl kurulabileceği ve özelliklerin nasıl
paylaşılabileceği incelenmiştir. Çok biçimlilik ve kapsülleme konuları ile nesneye yönelimli programlama konusunda
daha derin bir anlayış kazandırmak hedeflenmiştir. Her bir özel kavram ile ilişkin örnek uygulamalar sayesinde,
okuyucular hem nesneye yönelimli programlamanın temel prensiplerini anlama fırsatı bulmakta hem de Python
dilinde bu prensipleri nasıl uygulayabileceklerini öğrenme şansını elde etmektedir.

Kaynakça
Amos, D. (2018). Object-Oriented Programming (OOP) in Python 3. [Link]
oriented-programming/

Breuss, M. (2017). Python Virtual Environments: A Primer. RealPython. [Link]


environments-a-primer/

Brownlee, J. (2016, May 10). How To Load Machine Learning Data in Python. [Link].
[Link]

Bureau, I. (2019). Difference between Compiler and Interpreter. Business Insider.


[Link]

Çobanoğlu, B. (2021). Herkes İçin Python (3rd ed.). Pusula 20 Teknoloji ve Yayıncılık A.Ş.

Costa, C. D. (2020, November 23). Top 16 Python Applications in Real-World. Medium.


[Link]

Deitel, H. M., & Deitel, P. J. (2010). C ve C++ (M. Zavrak, E. Aksoy, & H. N. Karaca, Trans.; 3rd ed.). Sistem
Yayıncılık.

GeeksforGeeks. (2016, May 16). Python OOPs Concepts. GeeksforGeeks. [Link]


oops-concepts/

GeeksforGeeks. (2020, January 18). How to Install PIP on Windows ? GeeksforGeeks.


[Link]

[Link]. (2020). Memory Management in Python. [Link]


in-python/

about:blank 139/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

[Link]. (2021, October 22). Top 10 Python Applications in Real World. GeeksforGeeks.
[Link]

Gupta, A. (2023). Top 10 Python IDEs in 2023: Choosing The Best One. [Link].
[Link]

Harris, C. R., Millman, K. J., Walt, S. J. van der, Gommers, R., Virtanen, P., Cournapeau, D., Wieser, E., Taylor, J.,
Berg, S., Smith, N. J., Kern, R., Picus, M., Hoyer, S., Kerkwijk, M. H. van, Brett, M., Haldane, A., Río, J. F. del,
Wiebe, M., Peterson, P., … Oliphant, T. E. (2020). Array programming with NumPy. Nature, 585(7825), 357–362.
[Link]

Hjelle, G. A. (2020). Python import: Advanced Techniques and Tips. [Link]

[Link]. (2023). Making kernels for IPython—IPython 3.2.1 documentation. [Link]


doc/3/development/[Link]

Jeevan, M. (2022). How to Select Rows and Columns in Pandas Using [ ], .loc, iloc, .at and .iat. KDnuggets.
[Link]

Jones, L. (2019). Pointers in Python: What’s the Point? – Real Python. [Link]

Koidan, K. (2021, July 15). Difference Between Python Modules, Packages, Libraries, and Frameworks.
[Link]. [Link]

Lutz, M. (2009). Learning Python (4th ed.). O’Reilly Media.

Lutz, M. (2011). Programming Python (4th ed.). O’Reilly. [Link]


python-second/0596000855/[Link]

Mathew, S. T. (2021). Python Fundamentals for Everybody—Type Conversion vs Type Coercion.


[Link]
34234e99c9c4

McKinney, W. (2010). Data Structures for Statistical Computing in Python. In S. van der Walt & J. Millman (Eds.),
Proceedings of the 9th Python in Science Conference (pp. 56–61). [Link]

McKinney, W. (2012). Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython (1st ed.).
O’Reilly Media.

Microsoft. (2022). How to create and manage Python environments in Visual Studio. [Link]
us/visualstudio/python/managing-python-environments-in-visual-studio?view=vs-2022

Panwar, P. (2022). Use existing Python packages with Spyder 5. [Link]


spyder5/

Pérez, F., & Granger, B. E. (2007). IPython: A System for Interactive Scientific Computing. Computing in Science
and Engineering, 9(3), 21–29. [Link]

Pozo Ramos, L. (2023). Python’s del: Remove References From Scopes and Containers.
[Link]

[Link]. (2023). Python Object Oriented Programming. [Link]


programming/object-oriented-programming

[Link]. (2023). PyInstaller Manual—PyInstaller 5.8.0 documentation. [Link]

Python Software Foundation. (2023a). IDLE. Python Documentation. [Link]

Python Software Foundation. (2023b). Python a programming language changes the world Final Production Content
Case Studies & Success Stories. [Link]
1-final-content-preview

[Link]. (2023a, February 15). Free Python Tutorial For Beginners: Learn Python. Python Land.
[Link]

about:blank 140/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

[Link]. (2023b, February 15). Welcome to [Link]. [Link]. [Link]

Sawant, S. (2021, February 17). Semicolon in Python—AskPython. [Link]


python

Singhal, B. (2017). Iris Dataset. Mendeley Data, V1. [Link]

[Link]. (2023). Pandas Difference Between loc[] vs iloc[]. [Link].


[Link]

[Link]. (2022). Home—Spyder IDE. [Link]

Statista. (2022). Most used languages among software developers globally 2022. Statista.
[Link]

team, T. pandas development. (2020). pandas-dev/pandas: Pandas (latest) [Computer software]. Zenodo.
[Link]

Uğuz, S. (2021). Makine Öğrenmesi: Teorik Yönleri ve Pyhton Uygulamaları İle Bir Yapay Zeka Ekolü (2nd ed.).
Nobel Akademik Yayıncılık.

Uzun, E. (2023). Temel Operatörler. [Link]

VanderPlas, J. (2016a). Basic Python Semantics: Variables and Objects. In Whirlwind Tour of Python. O’Reilly
Media, Inc.
[Link]

VanderPlas, J. (2016b). Built-In Data Structures. In Whirlwind Tour of Python. O’Reilly Media, Inc.
[Link]
[Link]

VanderPlas, J. (2016c). Defining and Using Functions. In Whirlwind Tour of Python. O’Reilly Media, Inc.
[Link]
[Link]

VanderPlas, J. (2016d). Iterators. In Whirlwind Tour of Python. O’Reilly Media, Inc.


[Link]
[Link]

VanderPlas, J. (2016e). Python Data Science Handbook: Essential Tools for Working With Data (1st ed.). O’Reilly
Media.

VanTol, A. (2019). Memory Management in Python – Real Python. [Link]


management/

vegibit. (2023). Type Coercion Vs Type Casting In Python. [Link]


python/

[Link]. (2023). [Link]. [Link]

[Link]. (2023a). Beginners Guide/Overview—Python Wiki.


[Link]

[Link]. (2023b). Python Implementations. [Link]

Ünite Soruları
Soru-1 :

Python ile bir sınıf oluşturulmak istenirse bunun içi Python dilindeki hangi özel kelime kullanılır?

about:blank 141/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(Çoktan Seçmeli)

(A) def

(B) define

(C) class

(D) sınıf

(E) function

Cevap-1 :

class

Soru-2 :

Aşağıda bir Araba sınıfı tanımlanmaktadır. Buna göre verilen seçeneklerden hangisi bu sınıfa ait bir özellik
(attribute) değildir?

(Çoktan Seçmeli)

(A) marka

(B) model

(C) motor_gucu

(D) yakit_turu

(E) bilgileri_goster

Cevap-2 :

bilgileri_goster

Soru-3 :

Aşağıdakilerden hangisi verilen Dikdörtgen sınıfına ait bir metottur (method)?

about:blank 142/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(Çoktan Seçmeli)

(A) en

(B) boy

(C) self

(D) alan_hesapla

(E) Dikdörtgen

Cevap-3 :

alan_hesapla

Soru-4 :

Ogrenci sınıfının bir nesnesi aşağıdaki seçeneklerden hangisinde doğru bir biçimde oluşturulmuştur?

(Çoktan Seçmeli)

(A) o1 = Ogrenci("Elif", "Kartal", "12345678")

(B) o1 = Ogrenci(Elif, Kartal, 12345678)

(C) o1 = def: Ogrenci("Elif", "Kartal", "12345678")

(D) o1 = öğrenci("Elif", "Kartal", "12345678")

(E) o1 = Ogrenci([Link]="Elif", [Link]="Kartal", [Link]="12345678")

Cevap-4 :

o1 = Ogrenci("Elif", "Kartal", "12345678")

Soru-5 :

Ogrenci sınıfı içinde bulunan bilgileri_goster adlı metot ne işe yarar?

(Çoktan Seçmeli)

about:blank 143/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(A) Ogrenci sınıfının tüm özelliklerini kaydeder.

(B) Ogrenci sınıfının tüm özelliklerini ekrana yazdırır.

(C) Ogrenci sınıfının adını ve soyadını ekrana yazdırır.

(D) Ogrenci sınıfının numara özelliğini ekrana yazdırır.

(E) Ogrenci sınıfının oluşturulmasında kullanılan Python program kodlarını ekrana yazdırır.

Cevap-5 :

Ogrenci sınıfının tüm özelliklerini ekrana yazdırır.

Soru-6 :

Calisan sınıfının bir nesnesinin oluşturulabilmesi için hangi bilgiler gerekecektir?

(Çoktan Seçmeli)

(A) Yalnızca ad.

(B) ad ve soyad.

(C) ad ve maas.

(D) soyad ve maas.

(E) ad, soyad ve maas.

Cevap-6 :

ad, soyad ve maas.

Soru-7 :

Aşağıdaki seçeneklerden hangisinde miras alma/kalıtım doğru bir şekilde açıklanmıştır?

(Çoktan Seçmeli)

(A) Miras alma/kalıtım, bir sınıfın başka bir sınıftan özelliklerini ve yöntemlerini alması işlemidir.

(B) Miras alma/kalıtım, bir sınıfın tüm özelliklerini ve yöntemlerini kaybetmesi işlemidir.

(C) Miras alma/kalıtım, yalnızca Python programlama dilinde kullanılabilen bir özelliktir.

(D) Miras alınan sınıfa alt sınıf (subclass), miras alan sınıfa ise üst sınıf (superclass) denir.

(E) Miras alma/kalıtım, bir sınıfın özelliklerini ve yöntemlerini tamamen değiştirmesi işlemidir.

Cevap-7 :

Miras alma/kalıtım, bir sınıfın başka bir sınıftan özelliklerini ve yöntemlerini alması işlemidir.

Soru-8 :
about:blank 144/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Aşağıdaki seçeneklerden hangisinde çok biçimliliğin/polimorfizmin doğru bir tanımı verilmektedir?

(Çoktan Seçmeli)

(A) Polimorfizm, bir sınıfın kendisine ait metotları kullanmasıdır.

(B) Polimorfizm, bir sınıfın başka bir sınıfa ait özellikleri miras almasıdır.

(C) Polimorfizm, farklı sınıfların aynı isimli metodları farklı şekillerde uygulamasıdır.

(D) Polimorfizm, sınıflar arasında özelliklerin ve yöntemlerin tamamen paylaşılmasıdır.

(E) Polimorfizm, sadece Python programlama dilinde kullanılabilen bir özelliktir.

Cevap-8 :

Polimorfizm, farklı sınıfların aynı isimli metodları farklı şekillerde uygulamasıdır.

Soru-9 :

Aşağıdakilerden hangisi kapsülleme (encapsulation) için doğrudur?

(Çoktan Seçmeli)

(A) Bir sınıfın, başka bir sınıfa ait tüm özelliklerini ve yöntemlerini kullanmasıdır.

(B) Belirli sınıf üyelerine erişimi kısıtlamak için özellik ve metotları bir araya getirmeyi sağlar.

(C) Yalnızca Python diline özgü bir uygulamadır.

(D) Yukarıdakilerin hepsi.

(E) Yukarıdakilerin hiçbiri.

Cevap-9 :

Belirli sınıf üyelerine erişimi kısıtlamak için özellik ve metotları bir araya getirmeyi sağlar.

Soru-10 :

Aşağıdaki seçeneklerden hangisi çalıştırılırsa hata mesajı döndürülür?

(Çoktan Seçmeli)

about:blank 145/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(A) [Link]

(B) [Link]

(C) [Link]

(D) [Link]

(E) [Link]

Cevap-10 :

[Link]

about:blank 146/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

8. NUMPY VE PANDAS KÜTÜPHANELERİ İLE


ÇALIŞMA
Bölümle İlgili Özlü Söz
Bir programın en önemli özelliği, kullanıcısının amacını gerçekleştirip gerçekleştirmediğidir.

Tony (C.A.R.) Hoare, Bilgisayar Programcısı

Kazanımlar
1. NumPy kütüphanesi ile çok boyutlu dizi ve matrislerin oluşturulması, matematiksel ve istatistiksel bazı
hesaplamalar gibi temel veri işlemlerini öğrenerek veri analizi becerilerini geliştirme fırsatı bulur.

2. pandas kütüphanesi'ndeki Serie'ler yardımı ile verilerin etiketli bir şekilde nasıl işlenebileceği ve
depolanabileceğini anlar.

3. pandas kütüphanesi'ndeki DataFrame'ler ile tablo benzeri veri yapılarını anlar ve DateFrame'lerin oluşturulması ve
DataFrame'ler üzerinde işlem yapma yeteneklerini geliştirir. Verinin nasıl düzenleneceği, birleştirileceği vb. işlemleri
detaylarıyla öğrenir.

4. Python ile verinin farklı formatlarda (CSV, Excel vb.) nasıl kaydedilebileceğini öğrenerek verinin dosyaya
yazılması becerilerini geliştirir. Aynı şekilde, pandas kütüphanesi ile farklı kaynaklardan (dosya, veri tabanı vb.) veri
okuma yetenekleri kazanır.

5. loc[] ve iloc[] sayesinde bir DataFrame'de veriye erişimdeki esnekliği kavrar, verinin bir bölümüne nasıl
erişileceğini ve spesifik hücrelerin nasıl işlenebileceğini bilir.

6. Yapılan karma örnekler sayesinde NumPy ve pandas kütüphaneleri ile çalışma konusunda pratik kazanır.

Birlikte Düşünelim
1. NumPy kütüphanesinin temel amacı nedir ve neden veri analizi sürecinde sıkça tercih edilir?

2. NumPy kütüphanesi içinde çok boyutlu dizilerin oluşturulmasının avantajları nelerdir?

3. E adında tek boyutlu 10 elemanı olan bir NumPy dizisi nasıl oluşturulabilir?

4. pandas kütüphanesindeki “Seriler” (Series) nedir ve nasıl oluşturulur?

5. Series veri tipinde bir A değişkeni birbirinden farklı veri türlerini içerebilir mi?

6. DataFrame nedir ve bir tabloyu nasıl temsil eder?

7. Gerçek bir veri setini DataFrame olarak okuyup, ardından veri setinde satır/sütun bazında eleman çağırma işlemi
nasıl gerçekleştirilebilir?

8. Verilen bir DataFrame'in bir sütununa ait değerler nasıl toplanabilir?

9. pandas kütüphanesiyle bir .csv dosyasına nasıl veri yazılabilir?

10. Bir .csv dosyası bir DataFrame olarak nasıl okunabilir?

11. pandas kütüphanesiyle bir Excel dosyasına nasıl veri yazılabilir?

12. Bir .csv dosyası bir DataFrame olarak nasıl okunabilir?

13. loc[] ve iloc[] nedir ve ne işe yarar? Aralarındaki farklar nelerdir?


about:blank 147/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

14. DataFrame içindeki verilere loc[] ve iloc[] kullanarak erişebilirsiniz? Hangi durumlarda hangi indeksleme
yöntemi tercih edilmelidir?

Başlamadan Önce
Günümüzde klasik programlama bilgisinin yanı sıra veri analizine ilişkin becerilerin kazanılması da oldukça
önemlidir. Veri analizi ve daha gelişmiş yapay zekâ, makine öğrenmesi ve veri madenciliği gibi alanlarda veri
okuma/yazma, veri üzerinde işlem yapma, veri analizi için verinin uygun formatta hazırlanması gibi pek çok ihtiyaç
ortaya çıkmaktadır. İşte kitabın bu bölümünde, özellikle veri analizinde araştırmacılar tarafından sıkça kullanılan
NumPy ve pandas kütüphanelerine yer verilmiştir.

Bu bölümde öncelikle NumPy kütüphanesi, bu kütüphanede yer alan NumPydizileri (ndarray) ve bu dizilerle
gerçekleştirilebilecek farklı işlemlere yer verilmiştir. Ardından ise pandas kütüphanesi ve pandas’ta yer alan Series
ve DataFrame gibi iki önemli veri yapısı anlatılmıştır. NumPy’da olduğu gibi pandas’ta da adı geçen veri yapılarına
ilişkin önemli temel özellikler, eleman çağırma, vb. örneklere yer verilmiştir. Özellikle DataFrame’ler veri analizi
konusunda ön plana çıktığından, bir veri seti üzerinde temel bir incelemenin nasıl yapılacağı konusunda açıklamalı
örnekler okuyucuya sunulmuştur. Bu bölümde yer alan her bir konu başlığı, okuyucuların makine öğrenmesi, veri
madenciliği gibi ileri düzey veri analizi içeren konulara daha kolay geçiş yapabilmesini sağlamak için okuyuculara
sağlam bir temel oluşturmayı hedefler.

8.1. NumPy ve Pandas Kütüphanelerinin Tanıtımı


NumPy ve pandas, Python dilinde özellikle veri bilimi çalışmalarında sıkılıkla kullanılan kütüphanelerdendir.
NumPy (Numerical Python), Python ile çok boyutlu dizileri saklamak ve işlemek için etkili bir yol sağlar
([Link] (Harris et al., 2020). NumPy, vektörlerin, matrislerin ve daha yüksek boyutlu veri setlerinin
verimli bir şekilde depolanmasına ve işlenmesine izin veren bir ndarray yapısı sağlar. Ayrıca basit eleman bazında
aritmetikten daha karmaşık doğrusal cebirsel işlemlere kadar bu veriler üzerinde çalışmak için okunabilir ve verimli
bir sözdizimi sağlar. pandas ise NumPy'dan çok daha yeni bir paket olup, aslında pandas üzerine inşa edilmiştir
([Link] (McKinney, 2010; team, 2020). pandas, R ve benzer dillerin kullanıcılarının aşina olduğu
bir DataFrame nesnesi biçiminde çok boyutlu verilere yönelik etiketli bir arabirim sunmaktadır. İşte bu bölümde,
her iki kütüphanenin önemli özellikleri örnekler eşliğinde sunulmuştur. Daha fazla detaylı bilgi için bknz. (Brownlee,
2016; Jeevan, 2022; McKinney, 2012; VanderPlas, 2016e)

8.2. NumPy Kütüphanesi


Eğer NumPy kütüphanesi ile çalışmak isteniyorsa, tıpkı daha önce math, random ve os modüllerinde yapıldığı gibi
import anahtar kelimesi kullanılarak NumPy’ın çağrılması gerekmektedir. Aşağıdaki kod yardımı ile bu sağlanabilir;
ancak kod satırını çalıştırıldığında hata alınabilir.

about:blank 148/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Ekran görüntüsünden de anlaşılabileceği gibi henüz makinenizde NumPy adlı bir modül bulunmamaktadır. NumPy 3.
parti modüller arasında yer almaktadır, Python dilinin standart kurulumu ile gelmez. Bu nedenle de Windows’ta
CMD açılarak aşağıdaki kodlar yardımı ile NumPy kurulabilir.

Ardından Spyder ekranına dönerek NumPy tekrar import edilirse, bu kez ilgili kod satırı düzgün çalışacaktır. NumPy
çalışmalarda sıklıkla kısa adı/takma adı np olarak çağrılır, bu nedenle bu bölümde de NumPy için np tercih edilmiştir.

Tek boyutlu, çok boyutlu NumPy dizileri araştırmacılar tarafından çokça tercih edilen Python nesnelerindendir.
Aşağıda tam sayılardan oluşan bir NumPy dizisi yer almaktadır.

NumPy dizisi tek bir veri tipindeki elemanları tutabilmektedir. Üstün gelen veri tipi diğerlerini de kendi veri tipine
dönüştürecektir. Örneğin; ilk kod satırındaki tüm elemanlar string, ikinci satırdakiler float olacaktır. Elemanların veri
tipinin yazılarak da dönüştürülmesi söz konusudur. İlgili örneğe son satırda yer verilmiştir. Elbette farklı veri tipleri
de dtype parametresine verilebilecektir. Bunun için NumPy’a ait detaylı dokümantasyon incelenebilir.

Bir NumPy dizisinde elemanlar çeşitli yollarla filtrelenebilir. Örneğin; A’nın 50’ye eşit olan elemanları aşağıdaki kod
satırları yardımı ile bulunabilir. [Link]() fonksiyonu ile A==50 koşulunun sağlanması halinde (True dönen)
elemanların indisleri dönecektir. B bir demet olarak tanımlanacaktır. [Link]() fonksiyonu yardımı ile NumPy
dizisine dönüştürülebilir. A ve B’nin son haline ilişkin ekran görüntüsü aşağıda verilmiştir.

about:blank 149/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

NumPy’da sayısal hesaplamalar için bazı hazır formlar tanımlanmıştır. Aşağıda sırasıyla (1) sıfırlardan oluşan bir
dizi, (2) sıfırlardan oluşan 2x2’lik bir matris, (3) birlerden oluşan 2x3’lük bir dizi, (4) 3x3’lük birim dizi, (5) 3x3’lük
10’lardan oluşan bir dizi oluşturulmuştur. Fonksiyonlara ilk değer olarak verilen değerin dizi boyutu ile ilişkili
olduğu görülebilir. Bu gibi tanımlamalar gerçekleştirilirken dtype ile sayıların veri tipi de belirlenebilmektedir.

random modülünde olduğu gibi NumPy ile de rastgele değerler elde etmek ve sorasında yeni bir dizi yaratmak
mümkündür. Aşağıdaki kod bloğunda ilk satırda verilen [Link]() fonksiyonu içindeki sayı üretilecek
rastgele sayıların bir başlangıç değerini belirler. Bu seed değeri için 1, 12, 123, 1000000 ya da farklı farklı değerler
verilebilir. Dolayısıyla sürekli aynı rastgele değerlerin elde edilmesi istenirse bu seed değeri değişmemelidir. İkinci
satırda yer alan kod, rastgele sayılar kullanarak 3x3’lük bir dizi oluşturur. Son örnek ise sayılarını normal dağılımdan
alan 2x3’lük bir dizi üretir.

about:blank 150/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

[Link]() fonksiyonu ile o an bellekte bulunan sayılardan oluşan belirlenen boyutta bir dizi üretilir.

Aşağıda verilen ilk örnekte, 3’e kadar sayılar rastgele seçilerek 10 elemanlı bir a dizisi oluşturulur. b ve c de benzer
şekilde yorumlanabilir.

b dizisi yeniden ele alınırsa, dizilere has birtakım özellikler şu şekilde açıklanabilir. ndim tahmin edileceği üzere
dizinin boyutunu, shape dizinin boyutlarında yer alan eleman sayısını, size toplamda kaç elemanlı olduğunu, dtype
ise dizinin elemanlarının veri tipini döndürür.

about:blank 151/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Listelerdeki elemanlara erişim ve bir listenin parçalara ayrılması işlemleri NumPy dizileri için de geçerlidir. Bunun
için aşağıdaki kod bloğu incelenebilir. A isminde yeni bir NumPy dizisi tanımlanmıştır. A ekrana yazdırıldıktan sonra
sırasıyla,

(1) A’nın 0 indekste bulunan ilk elemanı: 50,

(2) A’nın 3. indekste bulunan dördüncü elemanı: 200,

(3) A’nın son elemanı: 993,

(4) A’nın sondan 5. elemanı (unutulmamalıdır ki sondan başlarken indeks de -1’den başlamaktadır): 500,

(5) A’nın 0. ve 5. indeks değerleri arasındaki elemanları (5 dâhil değil): array([ 50, 100, 107, 200, 207]),

(6) A’nın 5. indeksten başlamak üzere dizi sonuna kadar olan tüm elemanları: array([ 500, 1010, 2035, 88, 993]),

(7) A’nın tersten -5. indeksten başlamak üzere dizi sonuna kadar olan tüm elemanları: array([ 500, 1010, 2035, 88,
993]),

(8) – (9) A’nın 0. indeksten başlayıp dizi sonuna kadar her seferinde 5’er 5’er ilerleyerek döndürdüğü elemanlar:
array([ 50, 500]),

(10) A dizisini ters çevirir: array([ 993, 88, 2035, 1010, 500, 207, 200, 107, 100, 50])

Bu işlemler tek boyutlu bir dizi üzerinde gösterilmiştir. Benzer düşünce yapısı 2, 3 ve çok boyutlu NumPy dizileri
için de düşünülebilir.

about:blank 152/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

[Link]() ile istenilen boyutta sayı dizileri üretmek mümkündür. Örneğin; aşağıdaki kod bloğunun başında
tanımlanan C, 1’den 15’e kadar (15 dâhil değil) olan sayıları içeren bir NumPy dizisidir. Eleman seçimi ve diziyi
bölme ile ilgili kodlar ve ekran görüntüleri aşağıda verilmiştir.

about:blank 153/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Verilen bir NumPy dizisinin boyutlarında yer alan eleman sayıları değiştirilebilir; ancak yeni şeklinin toplamdaki
eleman sayısı ile uyumlu olması gerekmektedir. Aksi halde hata mesajı döndürülecektir. Örneğin; 20 elemanlı bir
numpy dizisi ele alınsın. 2x10, 4x5, 5x4, 2 adet 5x2 ve 20x1 yeni oluşturulacak dizinin şekli için uygun
tanımlamalardır; ancak en son kod satırı çalıştırıldığında hata mesajı döndürülecektir. Çünkü 2x2’lik bir şekil, 20
elemanlı bir dizi için uygun değildir. Tüm ekran görüntüleri aşağıda paylaşılmıştır.

about:blank 154/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Tanımlanan iki NumPy dizisi, eksenler boyunca birleştirilebilmektedir. Örneğin; a ve b NumPy dizileri ele alınsın.
Verilen ilk örnekte tanımlanan a ve b dizisi varsayılan biçimde x-ekseni boyunca birleştirilmiştir. Bu işlem için
[Link]() fonksiyonu kullanılmaktadır.

a ve b benzer biçimde y-ekseni boyunca birleştirilmeye çalışırsa (axis=1) hata döndürülecektir; çünkü a ve b tek
boyutlu diziler olduğundan ancak yanana eklenebileceklerdir. Diğer seçenek 2 boyutlu dizilerde denenebilir.

about:blank 155/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Diğer eksen seçenekleri ile 2 ve daha fazla boyuttaki diziler kullanılarak çalışılabilir.

NumPy ile çalışılırken, dizilerin bölünmesine de izin verilmektedir. Bunun için, [Link]() fonksiyonu
kullanılmaktadır. Aşağıda verilen kod bloğunda 0-3 indeksleri arasındaki elemanlar A1’de (3. İndeks dâhil değil), 3-5
indeksleri arasındaki elemanlar A2’de ve kalanlar da A3’te yer alacaktır.

NumPy dizisinin bölünmesi gerçekleştirildikten sonra elde edilen A1, A2 ve A3 dizilerinin ekran görüntüsü aşağıda
verilmiştir.

Verilen bir NumPy dizisinin transpozesini almak için .T kullanılmaktadır. Örneğin; aşağıda tanımlanan 2x5’lik A
dizisi transpozesi alındıktan sonra 5x2’lik hale dönüşmüştür.

about:blank 156/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

[Link]() fonksiyonu bir NumPy dizisini dikey (vertical), [Link]() fonksiyonu ise yatay (horizontal) biçimde
bölmek için kullanılabilir. Bir önceki örnekte yer alan A NumPy dizisi [Link]() ve [Link]() fonksiyonları ile
sırasıyla bölünmüştür. Bu fonksiyonların döndürdüğü parçalar da a1, a2, a3 ve a4 olarak tanımlanmıştır.

NumPy dizileri ile temel matematiksel işlemleri yapabilmek mümkündür. Aşağıda yer alan kod bloğu şu şekilde
incelenebilir:

[Link]() kullanılarak 20 elemanlı tanımlanmış olan a NumPy dizisi için aşağıda açıklamalı biçimde örnekler
sıralanmıştır. Öncelikle dizi print() ile ekrana yazdırılır.

a = [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]

Ardından sırasıyla gelen ilk iki satırda dizinin tüm elemanlarına [Link]() ile 5 eklenmiştir: array([ 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]). Toplama için operatör ve fonksiyon ile verilen örnek kullanım
diğer matematiksel işlemler için de mevcuttur ([Link]() gibi).

about:blank 157/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Dizinin tüm elemanlarından 5 çıkarılmıştır: array([-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]).

Dizinin tüm elemanları 5’e bölünmüştür: array([0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8, 2. , 2.2, 2.4, 2.6, 2.8, 3. ,
3.2, 3.4, 3.6, 3.8]).

// sembolü kullanılarak gerçekleştirilen bölme işleminde sonuçlar en yakın tam sayıya yuvarlanarak verilmektedir:
array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3], dtype=int32).

Bir dizinin ters işaretli halini bulmak için -a ya da [Link]() fonksiyonu kullanılabilir: array([ 0, -1, -2, -3, -4, -5,
-6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19]).

Dizideki elemanların ters işaretlisinin mutlak değeri [Link]() ile bulunur: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19]).

Dizi elemanlarının kuvvetini bulmak içinse [Link]() fonksiyonu kullanılır array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81,
100, 121, 144, 169, 196, 225, 256, 289, 324, 361], dtype=int32).

Son örnekte ise dizi elemanlarının 2 tabanında eksponansiyelini göstermektedir. Elemanların kare kökü ise [Link]()
ile bulunabilmektedir.

Eksponansiyel ve logaritmik işlemler için tanımlanmış çeşitli fonksiyonlar bulunmaktadır.

Ayrıca dizi elemanlarının topluca değerlendirilmesi gereken dizinin minimum ([Link]() = 0) ve maksimum
([Link]() = 19) elemanlarının ve indeks değerlerinin ([Link]() = 0, [Link]() = 19) bulunması, elemanların
toplanması ([Link]() = 190), ortalamasının alınması ([Link]() = 9.5), ortanca değerin elde edilmesi ([Link]() =
9.5), elemanların varyans ([Link]() = 33.25) ve standart sapmalarının ([Link]() = 5.766281297335398)
hesaplanabilmesi için aşağıdaki fonksiyonlar kullanılabilmektedir.

Bir ondalıklı sayının virgülden sonra kaç basamak yuvarlanacağı ise [Link]() fonksiyonu yardımıyla elde edilir.
Aşağıdaki kod satırları çalıştırıldığında sırasıyla 3.797 ile 3.8 değerleri bulunur.

Örneğin; a dizisinin sıfırdan farklı elemanlarının sayısını hesaplamak için klasik programlama mantığı ile
düşünüldüğünde aşağıdaki gibi bir çözüm getirilebilir. Sıfırdan farklı elemanların sayısını tutacak bir say değişkeni

about:blank 158/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

tanımlanır. Ardından i, a dizisinin elemanlarını dolaşacak şekilde, eğer i != 0 koşulu sağlanırsa her iterasyonda say
değişkenine 1 eklenir. Böylelikle kod bloğunun sonunda ekrana 19 yazdırılır.

Yukarıdaki kod bloğu yerine aynı görevi yapmak için np.count_nonzero() fonksiyonu kullanılabilir.

Bir başka örnek olarak, a dizisinin 5’ten büyük elemanlarının toplamını bulmak düşünülsün. Bu örnek için de
yukarıdakine benzer klasik programlama mantığı ile bir çözüm geliştirilebilir. Elemanların toplamını tutacak bir
toplam değişkeni tanımlanması ile kodlamaya başlanır. Ardından i, a dizisinin elemanlarını dolaşacak şekilde, eğer i
> 5 koşulu sağlanırsa her iterasyonda toplam değişkenine i’nin o iterasyondaki değeri eklenir. Böylelikle kod
bloğunun sonunda ekrana 175 yazdırılır.

Oysa, Python ile aynı örnek tek satırda çözülebilir. Bunun için aşağıdaki kod satırı kullanılabilir.

Verilen kod satırımı içten dışa doğru okuyacak olursak a > 5 boolean bir ifade döndürür, yani a dizisinin
elemanlarından 5’ten büyükler için True, küçük eşit olanlar içinse False.

a[a > 5] ise a dizisinin köşeli parantezler içinde yer almakta olan boolean ifadeden True dönen elemanlarını
döndürecektir.

Son olarak [Link](a[a > 5]) çalıştırıldığında 175 döndürülür.

Aşağıda a dizisinin boolean ifadeler ile kullanıldığı farklı örneklere yer verilmiştir. İlk örnekte, a dizisinin 10’dan
küçük olan elemanlarının toplamı 45 elde edilir. Birleşik mantıksal ifadeler kullanılarak da bir dizi filtrelenebilir.
Aynı anda hem (a > 5), hem de (a < 10) koşulunu sağlayan a dizisi elemanlarının toplamı 30’dur. Altındaki örnekte
ise (a > 5) & (a < 10) koşulunun tersine örnek verilir (~ ((a > 5) & (a < 10))). Tersini alınması demek True’ların
False, False’ların ise True olması demektir. Bunun için ~ simgesi kullanılmıştır.

about:blank 159/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Son iki örnek ise daha önceki bölümlerde yer verilen any() ve all() fonksiyonları ile benzerlik gösterir. [Link]()
fonksiyonu ile eğer a dizisinin herhangi bir elemanı 100’den küçük ise True, aksi halde False döner. [Link]()
fonksiyonu ile eğer a dizisinin tüm elemanları 100’den büyük ise True, aksi halde False döner. Verilen bu örnek için a
dizisinin tüm elemanları (en az biri koşulu sağlanır) 100’den küçüktür. Bu nedenle True döner. En sondaki kod
satırında ise a dizisinin elemanlarının hiçbiri 100’den büyük olmadığından False döner.

a dizisindeki elemanların sıralanması da önceki bölümlerde verilen örneklere benzer şekildedir; yalnızca kullanılan
fonksiyon NumPy kütüphanesinden çağrılmaktadır. [Link]() fonksiyonu ile 0-30 arasındaki sayılar
kullanılarak (30 dâhil değil) 30 adet tamsayı elemanı olan dizi adlı bir NumPy dizisi tanımlanıyor ve print() ile
ekrana yazdırılıyor. Ardından, [Link]() fonksiyonu ile dizi varsayılan olarak artan düzende sıralanıyor; ancak bu
orijinal dizinin kendisinde herhangi bir değişiklik yaratmamaktadır. Oysa, [Link]() kod satırı çalıştırılırsa, artık dizi
artan sırada sıralanmış bir dizi olacaktır. Aşağıda ilgili ekran görüntüleri paylaşılmıştır.

about:blank 160/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

8.3. pandas Kütüphanesi - Series


pandas kütüphanesi NumPy gibi 3. parti bir modüldür ve mevcut Python modülleri ile bilgisayara yüklenmemektedir.
Bu nedenle de Windows’ta CMD komut ekranına yazılan aşağıdaki kod satırı yardımıyla pandas kütüphanesi
yüklenir.

Bu bölümün başında da belirtildiği gibi pandas kütüphanesi Series de pandas ile gelen veri yapıları arasındadır, tek
boyutlu etiketli özel bir dizidir. Ayrıca DataFrame adı verilen oldukça kullanışlı bir veri yapısı sunmaktadır. Aşağıda
kod dosyasına hem NumPy hem de pandas modüllerinin çağrılmasıyla başlanmıştır. NumPy’ın np şeklinde kısa adı
ile çağrılması gibi pandas için kullanılan yaygın takma ad pd’dir. Dolayısıyla, bu tanımlama yapıldıktan sonra pandas
içinden çağrılacak her türlü unsur için pd. kısaltması kullanılmalıdır. NumPy ve pandas modülleri çağrıldıktan sonra
a adlı, tamsayı veri tipinde bir pandas serisi tanımlanmıştır. a tanımlanırken index parametresine de 0’dan 8’e kadar
(8 dâhil değil) değer atanmıştır.

a serisinin iki önemli özelliği bulunmaktadır. İlki elemanların indeks değerleri, ikincisi ise elemanların değerleridir.

Aşağıda bir serinin elemanlarını çağırmak için kullanılan kod satırları yer almaktadır.

a[0], 0. indekste bulunan elemanı döndürür: 2

a[3], 3. indekste bulunan elemanı döndürür: 7

a[1:3], 1.’den 3. indekste bulunan elemana kadar olan değerleri döndürür. 3. İndeksteki eleman dâhil edilmez.

about:blank 161/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

a[0:5], 0’dan 5. indekste bulunan elemana kadar olan değerleri döndürür. 5. indeksteki eleman dâhil edilmez.

a[5:], 5. indekste yer alan elemandan serinin sonunda bulunan elemana kadar tüm elemanları döndürür.

a[:-1], serinin başından sonuncu elemana kadar (-1. indekste bulunan eleman) tüm elemanları döndürür, son eleman
dâhil edilmez.

a[-1:], serinin son elemanını indeks değeri ile döndürür.

a[0:5:2], 0. indeksten 5. indekse kadar 2’şer indeks ilerleyerek elemanları döndürür.

a[::5] ve a[0:[Link]] aynı işlem yapar. Serinin başından sonuna kadar 5’er indeks ilerleyerek elemanları döndürür.

a[::-1], serinin tersten yazdırılmasını sağlar.

about:blank 162/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Her zaman bir serinin indeks değerleri sayısal olmak zorunda değildir. Metinsel bir ifade de olabilir.

Eğer bir sözlükten seri oluşturulmak istenirse aşağıdaki kod satırları kullanılabilir.

Bir seriye ve serinin indeks değerlerine birer ad tanımlanabilir.

Serinin elemanlarının değeri değişebilir; ancak indeks değerleri değiştirilemezdir. İndeks değerinin değiştirilmesi
istenirse hata mesajı döndürülür.

about:blank 163/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Bir serinin elemanları farklı veri tipinde olabilir. Aşağıdaki örnekte e serisinin ilk elemanı tam sayı (int), ikinci
elemanının metinsel bir ifade (str), son elemanının ise bool olduğu görülebilir.

8.4. pandas Kütüphanesi – DataFrame


DataFrame, pandas kütüphanesinde tanımlanan iki boyutlu özel bir dizi türüdür. Aşağıda takmaAd, cins ve renk
sütunlarından oluşan iki satırlık bir DataFrame tanımlanmıştır. DataFrame’in satırlarına değerler [Link]()
fonksiyonu ile atanmıştır.

Aşağıda da öncelikle stock adında bir sözlük tanımlanmıştır. Sonrasında [Link]() kullanılarak DataFrame’e
çevrilmiştir. Bir DataFrame’in sütunlarına ve hücrelerinde yer alan elemanlara ulaşmak için farklı yollar
kullanılabilir. Örneğin; dataframeadı[“sütunadı”] ve dataframeadı.sütunadı şeklinde çağrılabilir. Bir DataFrame’in
sütunlarına erişme ve hücredeki değerleri çağırma konusunda temel birkaç örneğe aşağıda yer verilmiştir.

about:blank 164/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

DataFrame’e yeni bir sütun eklemek için aşağıdaki kod satırı kullanılabilir. Aşağıda da görüleceği gibi DataFrame’in
halihazırda 4 satırı olduğundan yeni eklenecek sütunun da 4 satırdan oluşması beklenir. Eğer satır sayıları uyuşmazsa
hata mesajı döndürülecektir. Serilerdekine benzer şekilde bir DataFrame’in indeksine ve sütunlarına birer ad
verilebilir.

veri DataFrame’indeki değerleri görmek için values özelliğinden yararlanılabilir. Ayrıca .T ile bir DataFrame’in
transpozesi alınabilir.

about:blank 165/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Bir DataFrame’in indeks değerleri, sütun değerleri ya da sütun adları arasında herhangi bir değerin olup olmadığı
aşağıdaki kod satırları ile kontrol edilebilir. Aşağıdaki kod satırları sırasıyla False, True, True, False, False, True
döndürür.

Bir DataFrame’in indeks değerleri değiştirilebilir ve farklı indeks değerine göre DataFrame yazdırılabilir. Bu yeni
düzen yeniden atama yapılmadığı sürece satırların sırasını yalnızca raporlamada değiştirecektir.

8.5. Dosya Okuma


Bu bölümde farklı dosya formatlarını okuma üzerine üç farklı örneğe yer verilmiştir.

Örnek 1: Bir .csv dosyasından veri okuma.

Örnek olarak kullanılacak veri seti .csv formatında [Link]


files/datasets/4r3cvfk6g4/files/794232f3-ff14-40d9-a4e6-7140b29eecb7/file_downloaded bağlantsında
bulunmaktadır. Öncelikle “Iris” veri seti indirilerek çalışma klasörüne kopyalansın (Singhal, 2017). Veriyi okumak
için pandas-tan read_csv() fonksiyonu kullanılacaktır. Kodların yazıldığı Python betik dosyasının ve veri setinin
çalışma klasöründe olması durumunda, veriyi okuyacak olan pd.read_csv() fonksiyonuna dosya yolu eklenmesine
gerek kalmayacaktır. Aşağıda verildiği gibi yalnızca veri dosyası adının yazılması yeterli olacaktır.

about:blank 166/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Bir DataFrame’den bir sütunun ya da sütunların çıkarılması istenirse aşağıdaki kod satırları tercih edilebilir.
Alternatif yollar da aşağıda sıralanmıştır.

Örnek 2: Bir Excel dosyasından veri okuma.

pandas ile bir Excel dosyası okunabilmesi için eğer yüklü değilse openpyxl modülü yüklenmelidir (CMD ekranından
pip install openpyxl). Bir önceki örnekte .xlsx uzantısı ile indirilen veri seti Excel formatında yine aynı dosya
konumuna kaydedilsin. Sonrasında, aşağıdaki kod satırları yardımı ile veri seti okunabilir. Bu örnekte usecols
parametresi ile veri okunurken ilk sütun hariç diğer sütunlar alınmıştır.

Örnek 3: İnternetteki bir dosyadan veri okuma.

about:blank 167/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

İnternette yer alan bir veri dosyasını okumak için verinin yer aldığı bağlantı (URL=[Link]
files/datasets/4r3cvfk6g4/files/794232f3-ff14-40d9-a4e6-7140b29eecb7/file_downloaded) gereklidir. Eğer yüklü
değilse requests modülü yüklenmeli (CMD ekranından pip install requests) ve çağrılmalıdır. Sonrasında ilgili
bağlantıda yer alan iris veri setinin okunması için aşağıdaki kod satırları kullanılabilir. Bir önceki örnekte olduğu gibi
usecols parametresi ile veri okunurken ilk sütun hariç diğer sütunlar alınmıştır.

8.6. Dosyaya Yazma


Bir önceki bölümde üzerinde çalışılan veri DataFrame’i .csv dosyası olarak kaydedilmek istenirse .to_csv()
fonksiyonu kullanılabilir. encoding parametresi için verilen değer (utf-8-sig), .csv dosyasında meydana gelebilecek
olası Türkçe karakter sorununun ortadan kaldırılabilmesi içindir. Benzer kod satırı bir Excel dosyasına veri yazmak
için de geçerlidir; ancak bu kez kullanılması gereken fonksiyon .to_excel() olacaktır.

about:blank 168/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

8.7. Bir DataFrame ile Temel İşlemler


iris veri seti okunduğunda Spyder editöründe Variable Explorer panelindeki iris nesnesine çift tıklanırsa, veri
aşağıdaki biçimde görülebilecektir. Veri seti iris çiçeğine ilişkin çanak ve taç yaprak uzunluk ve genişliği ile türlerini
içeren beş farklı değişkeni tutmaktadır. Okunduğu hali ile değişken adları/sütun adlarının İngilizcesi
(SepalLengthCm, SepalWidthCm, PetalLengthCm, PetalWidthCm, Species) mevcuttur.

Sütun adlarının öncelikle listelenmesi, sonra da değiştirilebilmesi için aşağıdaki kod satırları kullanılmaktadır.
Ardından sütun adları yeniden listelendiğinde sütun adlarının değiştirildiği görülebilecektir.

Veri setindeki indeks değerleri değiştirilebilir. 150 satırdan oluşan veri setinde varsayılan indeks değerleri 0’dan
149’a kadar olan sayılardır. Bunun yerine I1, I2, …, I150 şeklinde bir dizi atayabilmek için aşağıdaki kod bloğu
kullanılabilir. Önce ilgili indeks dizisi for döngüsü yardımı ile oluşturulmuş, ardından da iris için indeks değerleri
yerine atanmıştır.

Bu işlem sonrasında veri setinin ilk 5 satırını döndürmek için DataFrame’in head() fonksiyonu kullanılır. Parametre
olarak baştan kaç satır döndürüleceği bilgisini almaktadır. tail() fonksiyonu ise tahin edileceği gibi veri setinin
sondan 7 satırını döndürür.

about:blank 169/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

info() fonksiyonu ile DataFrame’in özet bilgisi elde edilebilir. Buna göre, iris veri setinin satır ve sütun sayısı, indeks
değerleri sütunların veri tipi ve eksik değer içerip içermediği görülebilir. Sütunların veri tipi .dtypes ile de
listelenebilir. İlgili kodlar ve ekran görüntüleri aşağıda verilmiştir.

.shape, .size ve .ndim ise sırasıyla satır ve sütun boyutlarını (150, 5), eleman sayısını (750) ve DataFrame’in
boyutunu (2) döndürür.

Eğer herhangi bir sütunda yer alan değerler değiştirilmek isteniyorsa aşağıdaki kod bloğu kullanılabilir. Bunun için
iris veri setindeki tur sütunu ele alınsın. "Iris-setosa", "Iris-versicolor", "Iris-virginica" olan kategoriler sırasıyla
"setosa", "versicolor", "virginica" olacak şekilde değiştirilmiştir. İlgili kod satırının öncesinde ve sonrasında
kategorilere ait frekans dağılımlarını bulmak mümkündür.

about:blank 170/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Veri setine ilişkin bir başka özet tablo ise .describe() foksiyonu ile elde edilir. Bu özet daha çok temel açıklayıcı
birtakım istatistiki bilgilerden oluşur. Aşağıdaki kod satırı çalıştırıldığında ekran görüntüsünden incelenebilecek olan
sayısal sütunların sayısı (count), ortalaması (mean), standart sapması (std), minimum (min) ve maksimumu (max) ile
1., 2. ve 3. kartil değerleri (sırasıyla 25%, 50%, 75%) elde edilir. Bir nesne (object) veri tipinde gözüken tur
sütununun da özet tabloda yer alabilmesi için describe() fonksiyonu include=”all” parametresi ile kullanılmalıdır. Son
halde özet tabloya tur sütunundaki tekil değer/kategori sayısı (unique), frekans dağılımı en fazla olan kategorinin adı
(top) ve sayısı (freq) da eklenir. Eklenen bu yeni bilgiler sayısal sütunlar için hesaplanmaz.

8.8. DataFrame ile loc[] ve iloc[] Kullanımı


Bir DataFrame’in satır ve sütun işlemlerini gerçekleştirirken loc[] ve iloc[] kullanılabilmektedir. İki ifadenin
benzerliklerinin yanı sıra farklılıkları da mevcuttur ([Link], 2023): loc[] bir DataFrame’den veri
seçilirken etiket tabanlı işlem gerçekleştirmektedir. Seçilmek istenen satır veya sütunun adının iletilmesi
gerekmektedir. loc[] kullanılırken iloc[]'tan farklı olarak, içinde belirtilen aralığın son öğesini de içerir. Ayrıca yine
loc[], iloc[]'tan farklı olarak boolean verisi kabul eder. iloc[] bir DataFrame’den veri seçilirken indeks tabanlı işlem
gerçekleştirmektedir. Seçilmek istenen satır veya sütunun tamsayı şeklinde ifade edilmesi gerekir. Bu yöntem, loc[]
aksine, içinde belirtilen aralığın son öğesini içermez, boolean verisi kabul etmez.

İşlem loc iloc


Tek satır seçmek [Link][“E2”] [Link][1]
Tek sütun seçmek [Link][: , “canakUz”] [Link][: , 0]
Çoklu satır seçmek [Link][[“I2”, “I3”]] [Link][[1 , 2]]
Çoklu sütun seçmek [Link][: , [“canakUz”, “tacGen”] ] [Link][:, [0 , 3]]
Belirli bir aralıktaki satırları seçmek [Link][“I1” : “I3”] [Link][0 : 3]
Belirli bir aralıktaki sütunları seçmek [Link][: , “canakUz” : “tacGen”] [Link][ : , 0 : 4]
Farklı satırları seçmek [Link][“I1” : “I7”: 2] [Link][0 : 8 : 2]
Farklı sütunları seçmek [Link][:, "canakUz" : "tacGen" : 2] [Link][:, 0 : 4 : 2]
Koşul ile kullanım [Link][ iris[“tacUz”] > 3.2 ] [Link][list(iris[“tacUz”]>3.2)]

Aşağıdaki komut satırları I6 indeks numarasına sahip satırı döndürür.

about:blank 171/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Aşağıdaki komut satırları çalıştırıldığında; I1, I2 ve I5 indeks numaralı satırlar döndürülür.

Aşağıdaki komut satırları çalıştırıldığında; tur sütunu döndürülür.

Aşağıdaki komut satırları çalıştırıldığında; I6, I7, …, I15 satırları döndürülür.

Aşağıdaki komut satırları çalıştırıldığında; I6 indeks numaralı satırın taç yaprak uzunluğu (tacUz) döndürülür.

Aşağıdaki komut satırları çalıştırıldığında; çanak yaprak genişliği (canakGen) ile tur sütunları döndürülür.

Aşağıdaki komut satırları çalıştırıldığında; I1, I2, …, I5 indeks numaralı satırların çanak yaprak genişliği (canakGen),
tac yaprak uzunluğu (tacUz) ve taç yaprak genişliği (tacGen) değerleri döndürülür.

Aşağıdaki komut satırları çalıştırıldığında; veri setindeki ilk 5 satır döndürülür.

Aşağıdaki komut satırları çalıştırıldığında; veri setindeki son 5 satır hariç I1, I2, …, I145 döndürülür.

Ayrıca çeşitli koşullar yardımı ile daha spesifik özellikteki satır/sütun işlemleri gerçekleştirilebilir.

Örnek 1: Aşağıda taç yaprak uzunluğu (tacUz) 1.5’ten küçük olan satırlar listelenmiştir. loc[] ve iloc[] kullanım
farkına dikkat edilmelidir. Satırların ikisi de aynı listeyi döndürecektir.

Örnek 2: Aşağıda çanak yaprak uzunluğu (canakUz) 7’den büyük ve çanak yaprak genişliği (canakGen) küçük olan
satırlar listelenmiştir. Bu örnekte de loc[] ve iloc[] kullanım farkına dikkat edilmelidir. Satırların ikisi de aynı listeyi
döndürecektir.

about:blank 172/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Örnek 3: Aşağıda türü (tur) “setosa” olan veya çanak yaprak genişliği (canGen) 4’ten büyük olan satırların uzunluğu
sırası ile a ve b değişkenlerine atanmıştır. Sonuçta her iki değişkenin değeri de 50 olur.

Örnek 4: Aşağıda verilen örnekte farklı filtreler uygulanarak A, B ve C adında 3 yeni DataFrame oluşturulmuştur.
Bu DataFrame’lerin satır ve sütunlarının boyutu .shape ile listelenmiştir.

Ardından [Link]() fonksiyonu yardımı ile A, B, C alt alta gelecek şekilde (yatay) birleştirilmiştir. axis parametresi
0 değerini almıştır. Son durumda D, 15 satır ve 3 sütundan oluşmaktadır.

Sonrasında aşağıdaki satır yardımı ile D’nin satır sayısı kadar rastgele sayı üretilmiştir ve bunlar bir pandas serisi
şeklinde D’nin olcum1 sütunu olarak (yeni bir sütun olarak) D’ye atanmıştır.

Yeni bir sütun ataması işlemi [Link] ile de gerçekleştirilebilir. Aşağıda D’nin satır sayısı kadar rastgele sayılarla a
adlı bir pandas serisi tanımlanmıştır. [Link]() fonksiyonunun axis parametresi 1 alınarak aD2’nin son sütunu
olarak atanmıştır. Atama sırasında DataFrame’in sütun adı olarak olcum2 olması tercih edilmiştir. D’nin son haline
ilişkin Spyder editöründeki “Variable Explorer” panelinden alınan ekran görüntüsü aşağıda paylaşılmıştır.

about:blank 173/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Örnek 5:DDataFrame’inde tur sütununun veri tipi object yerine kategori (category) olarak da belirlenebilir. Bunun
için aşağıdaki kod satırı çalıştırılmalıdır. İlgili sütun çağrıldıktan sonra sütuna .astype(“category”) denilerek bu
sağlanır. Sonrasında [Link] ile veri tipi kontrol edildiğinde veri tipinin kategori olarak değiştiği görülebilir.
Kategori veri tipindeki bir değişkenin kategorilerini görmek için sütun çağrıldıktan sonra .[Link] deyiminden
faydalanılır. Bu yolla kategori adları .cat.rename_categories() fonksiyonu ile sağlanır. Parametre olarak sütuna yeni
kategori adlarının verilmesi gerekmektedir.

Bölüm Özeti
Bu bölümde, Python dilini özellikle veri bilimi ile uğraşan araştırmacıların kullandığı, veri ile ilgili işlemlerde güçlü
araçlar sunan NumPy ve pandas kütüphanelerine odaklanılmıştır. İlk olarak, NumPy kütüphanesiyle başlayarak, çok
boyutlu dizilerin oluşturulması, matematiksel işlemler ve veri analizi için sağladığı temel yetenekler
detaylandırılmıştır. Ardından, pandas kütüphanesine geçilerek, pandas kütüphanesinin sunduğu Serie ve DataFrame
ile nesnelerin nasıl oluşturulacağı ve verinin nasıl etkili bir şekilde işlenebileceği incelenmiştir. DataFrame
konusunda, tablo benzeri veri yapılarının nasıl oluşturulup, bu yapılar ile çalışılabileceği gösterilmiştir. Verinin .csv
veya Excel gibi formatlarda nasıl kaydedilebileceği ile bu ve benzeri dosya formatlarından (veri kaynaklarından)
nasıl okunabileceği ele alınmıştır. Temel işlemler kısmında, DataFrame içindeki verinin filtrelenmesi, birleştirilmesi
gibi işlemler detaylı örneklerle anlatılırken, loc[] ve iloc[] yöntemleriyle verilere nasıl erişileceği ve işleneceği
açıklanmıştır.

Kaynakça
Amos, D. (2018). Object-Oriented Programming (OOP) in Python 3. [Link]
oriented-programming/

Breuss, M. (2017). Python Virtual Environments: A Primer. RealPython. [Link]


environments-a-primer/

Brownlee, J. (2016, May 10). How To Load Machine Learning Data in Python. [Link].
[Link]

Bureau, I. (2019). Difference between Compiler and Interpreter. Business Insider.


[Link]

Çobanoğlu, B. (2021). Herkes İçin Python (3rd ed.). Pusula 20 Teknoloji ve Yayıncılık A.Ş.

Costa, C. D. (2020, November 23). Top 16 Python Applications in Real-World. Medium.


[Link]

Deitel, H. M., & Deitel, P. J. (2010). C ve C++ (M. Zavrak, E. Aksoy, & H. N. Karaca, Trans.; 3rd ed.). Sistem
Yayıncılık.
about:blank 174/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

GeeksforGeeks. (2016, May 16). Python OOPs Concepts. GeeksforGeeks. [Link]


oops-concepts/

GeeksforGeeks. (2020, January 18). How to Install PIP on Windows ? GeeksforGeeks.


[Link]

[Link]. (2020). Memory Management in Python. [Link]


in-python/

[Link]. (2021, October 22). Top 10 Python Applications in Real World. GeeksforGeeks.
[Link]

Gupta, A. (2023). Top 10 Python IDEs in 2023: Choosing The Best One. [Link].
[Link]

Harris, C. R., Millman, K. J., Walt, S. J. van der, Gommers, R., Virtanen, P., Cournapeau, D., Wieser, E., Taylor, J.,
Berg, S., Smith, N. J., Kern, R., Picus, M., Hoyer, S., Kerkwijk, M. H. van, Brett, M., Haldane, A., Río, J. F. del,
Wiebe, M., Peterson, P., … Oliphant, T. E. (2020). Array programming with NumPy. Nature, 585(7825), 357–362.
[Link]

Hjelle, G. A. (2020). Python import: Advanced Techniques and Tips. [Link]

[Link]. (2023). Making kernels for IPython—IPython 3.2.1 documentation. [Link]


doc/3/development/[Link]

Jeevan, M. (2022). How to Select Rows and Columns in Pandas Using [ ], .loc, iloc, .at and .iat. KDnuggets.
[Link]

Jones, L. (2019). Pointers in Python: What’s the Point? – Real Python. [Link]

Koidan, K. (2021, July 15). Difference Between Python Modules, Packages, Libraries, and Frameworks.
[Link]. [Link]

Lutz, M. (2009). Learning Python (4th ed.). O’Reilly Media.

Lutz, M. (2011). Programming Python (4th ed.). O’Reilly. [Link]


python-second/0596000855/[Link]

Mathew, S. T. (2021). Python Fundamentals for Everybody—Type Conversion vs Type Coercion.


[Link]
34234e99c9c4

McKinney, W. (2010). Data Structures for Statistical Computing in Python. In S. van der Walt & J. Millman (Eds.),
Proceedings of the 9th Python in Science Conference (pp. 56–61). [Link]

McKinney, W. (2012). Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython (1st ed.).
O’Reilly Media.

Microsoft. (2022). How to create and manage Python environments in Visual Studio. [Link]
us/visualstudio/python/managing-python-environments-in-visual-studio?view=vs-2022

Panwar, P. (2022). Use existing Python packages with Spyder 5. [Link]


spyder5/

Pérez, F., & Granger, B. E. (2007). IPython: A System for Interactive Scientific Computing. Computing in Science
and Engineering, 9(3), 21–29. [Link]

Pozo Ramos, L. (2023). Python’s del: Remove References From Scopes and Containers.
[Link]

[Link]. (2023). Python Object Oriented Programming. [Link]


programming/object-oriented-programming

[Link]. (2023). PyInstaller Manual—PyInstaller 5.8.0 documentation. [Link]

about:blank 175/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Python Software Foundation. (2023a). IDLE. Python Documentation. [Link]

Python Software Foundation. (2023b). Python a programming language changes the world Final Production Content
Case Studies & Success Stories. [Link]
1-final-content-preview

[Link]. (2023a, February 15). Free Python Tutorial For Beginners: Learn Python. Python Land.
[Link]

[Link]. (2023b, February 15). Welcome to [Link]. [Link]. [Link]

Sawant, S. (2021, February 17). Semicolon in Python—AskPython. [Link]


python

Singhal, B. (2017). Iris Dataset. Mendeley Data, V1. [Link]

[Link]. (2023). Pandas Difference Between loc[] vs iloc[]. [Link].


[Link]

[Link]. (2022). Home—Spyder IDE. [Link]

Statista. (2022). Most used languages among software developers globally 2022. Statista.
[Link]

team, T. pandas development. (2020). pandas-dev/pandas: Pandas (latest) [Computer software]. Zenodo.
[Link]

Uğuz, S. (2021). Makine Öğrenmesi: Teorik Yönleri ve Pyhton Uygulamaları İle Bir Yapay Zeka Ekolü (2nd ed.).
Nobel Akademik Yayıncılık.

Uzun, E. (2023). Temel Operatörler. [Link]

VanderPlas, J. (2016a). Basic Python Semantics: Variables and Objects. In Whirlwind Tour of Python. O’Reilly
Media, Inc.
[Link]

VanderPlas, J. (2016b). Built-In Data Structures. In Whirlwind Tour of Python. O’Reilly Media, Inc.
[Link]
[Link]

VanderPlas, J. (2016c). Defining and Using Functions. In Whirlwind Tour of Python. O’Reilly Media, Inc.
[Link]
[Link]

VanderPlas, J. (2016d). Iterators. In Whirlwind Tour of Python. O’Reilly Media, Inc.


[Link]
[Link]

VanderPlas, J. (2016e). Python Data Science Handbook: Essential Tools for Working With Data (1st ed.). O’Reilly
Media.

VanTol, A. (2019). Memory Management in Python – Real Python. [Link]


management/

vegibit. (2023). Type Coercion Vs Type Casting In Python. [Link]


python/

[Link]. (2023). [Link]. [Link]

[Link]. (2023a). Beginners Guide/Overview—Python Wiki.


[Link]

[Link]. (2023b). Python Implementations. [Link]

about:blank 176/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

Ünite Soruları
Soru-1 :

dizi adında bir NumPy dizisi şöyle verilmektedir.

Buna göre aşağıdaki seçeneklerden hangisinde [Link](dizi[1:8:3]) işleminin sonucu doğru bir şekilde verilmektedir?

(Çoktan Seçmeli)

(A) array([0.6 , 0.03, 0.49, 0.56, 0.09, 0.2 , 0.36])

(B) array([0.6 , 0.56, 0.36])

(C) 0.03

(D) 0.6

(E) 0.9

Cevap-1 :

0.6

Soru-2 :

dizi adında bir NumPy dizisi şöyle verilmektedir.

Buna göre, array([0.03, 0.49, 0.56]) ekran görüntüsünü elde edebilmek için aşağıdaki seçeneklerden hangisi
kullanılmalıdır?

(Çoktan Seçmeli)

(A) dizi[2:5]

(B) dizi[2:4]

(C) dizi[3:4]

(D) dizi[1:4]

Cevap-2 :

dizi[2:5]

Soru-3 :

Aşağıdaki kod bloğu ile aynı görevi yapan seçenek hangisidir?

about:blank 177/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(Çoktan Seçmeli)

(A) lst=[Link](lst)

(B) lst=list([Link](lst))

(C) lst=list([Link](lst))

(D) lst=list([Link](lst))

(E) lst=[Link](lst)

Cevap-3 :

lst=list([Link](lst))

Soru-4 :

dizi adında bir NumPy dizisi şöyle verilmektedir.

Buna göre, (0.7, 0.9) aralığındaki sayıların toplamının elde edilmesi için gerekli olan kod satırı hangi seçenekte doğru
bir biçimde ifade edilmiştir?

(Çoktan Seçmeli)

(A) [Link](dizi[(dizi >= 0.7) & (dizi <= 0.9)])

(B) [Link](dizi[(dizi > 0.7) & (dizi < 0.9)])

(C) [Link](dizi[(dizi > 0.7) & (dizi < 0.9)])

(D) [Link](dizi[(dizi > 0.7) %&% (dizi < 0.9)])

(E) [Link](dizi[(dizi > 0.7) , (dizi < 0.9)])

Cevap-4 :

[Link](dizi[(dizi > 0.7) & (dizi < 0.9)])

Soru-5 :

pandas’ta bir DataFrame oluşturmak için hangi seçenek kullanılabilir?

(Çoktan Seçmeli)

(A) pd.create_df()

(B) [Link]()

(C) pd.make_df()

(D) pd.new_df()
about:blank 178/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(E) pd.def_df()

Cevap-5 :

[Link]()

Soru-6 :

pandas'da verileri bir DataFrame'den belirli bir sütuna göre nasıl seçebilirsiniz?

(Çoktan Seçmeli)

(A) df.select_column()

(B) df.get_column()

(C) [Link]("sütun_adı")

(D) [Link]("sütun_adı")

(E) df["sütun_adı"]

Cevap-6 :

df["sütun_adı"]

Soru-7 :

Bir [Link] adlı .CSV dosyası pandas ile bir DataFrame'e kaydedilmek isteniyor. Bunun için aşağıdaki seçeneklerden
hangisi kullanılabilir?

(Çoktan Seçmeli)

(A) df = pd.read_csv("[Link]")

(B) df = [Link]("[Link]")

(C) df = pd.read_excel("[Link]")

(D) df = pd.import_file("[Link]")

(E) df = pd.create_dataframe("[Link]")

Cevap-7 :

df = pd.read_csv("[Link]")

Soru-8 :

Aşağıdakilerden hangisi ya da hangileri pandas’a özgü veri yapılarındandır?

(Çoktan Seçmeli)

(A) DataFrames

(B) DataFrames, Series ve Tuples

(C) Series ve Dictionaries

(D) DataFrames ve Series

about:blank 179/180
9.10.2023 22:46 Ders : PYTHON PROGRAMLAMA - eKitap

(E) Tuples, Series ve Dictionaries

Cevap-8 :

DataFrames ve Series

Soru-9 :

Bir DataFrame’in ilk ve son satırlarını döndürebilmek için aşağıdaki seçeneklerde verilen hangi iki fonksiyon
kullanılabilir?

(Çoktan Seçmeli)

(A) head()-tail()

(B) start()-stop()

(C) begin()-end()

(D) read()-tail()

(E) head()-end()

Cevap-9 :

head()-tail()

Soru-10 :

Bir veri DataFrame’inde belirli bir hücrenin seçimi aşağıdaki seçeneklerden hangisinde doğru şekilde
gerçekleştirilmiştir?

(Çoktan Seçmeli)

(A) veri.get_cell(2, 3)

(B) [Link][2, 3]

(C) [Link][2, 3]

(D) [Link](2, 3)

(E) [Link][2][3]

Cevap-10 :

[Link][2, 3]

about:blank 180/180

You might also like