Python3-Programlama Dilinin Temelleri

bilgelikevi

Python programlama dilinin bilinmesi gereken temel noktaları detaylı ve basit örnekler açıklayan kitabımız sizlerle. Pdf olarak indirmek için www.elharezmibilgelikevi.com sitemizi ziyaret ediniz.

3

"Selamünaleyküm Dünya"


Önsöz:

Lütufkâr ve merhametli Allah adına, bu eser

Kıbrıscıklı Sefer Oğlu Zafer tarafından

yazılmıştır.

Allah’a şükürler olsun ki O’nun

iyilikseverliğine ve korumacılığına sığınabildim.

O’nun emirlerine uydum. Şükürler olsun ki

görevimi yapmak için O’nun değerli ve sürekli

yardım severliğinden yararlandım. O’nun

kudretli, eksilmeyen yüceliğini ve saygın

büyüklüğünü kabul ederim. O Muhammed’i

(Sallallâhu Aleyhi ve Sellem) Allah’ın elçisine

yakışır bir görevle görevlendirdi.

Ne zaman haklılık zayıflasa, doğru yolda

ilerlemek çaresiz kalsa, O’nun yardımları

yetişti.


YAZAR HAKKINDA

Bolu ili doğumlu

Atatürk Üniversitesi Erzincan Eğitim

Fakültesi İlköğretim Matematik Öğretmenliği

mezunu

Bir devlet okulunda Matematik Öğretmenliği

yapmakta

Bu kitap ticari kullanımlar için değildir. Yazar dışında kimse gelir elde

edemez.

Bu eser Creative Commons Alıntı-GayriTicari-Türetilemez 4.0 Uluslararası

Lisansı ile lisanslanmıştır.

Bu eserin paylaşılması, Ticari olarak kullanılması ve üzerinde değişiklik

yapılması lisans koşullarına aykırıdır.

Kitabın içinde bulunan bilgilerin parça parça alınması ve dağıtılması yasaktır.

Kitap bir bütün halinde ve sadece yazar tarafından sitelerde indirilme olarak

verilmektedir.

Kitabın pdf olarak ya da başka bir şekilde kopyalanıp dağıtılması yasaktır.

Sadece yazar tarafından verilen kişilerin kullanma hakkı vardır.

Bu kitabın videoya çekilmesi ve yayınlanması kul hakkına girmektedir. Yazar

dışında kimseye bu konuda izin yoktur.

Kodlama kaynaklarım için www.elharezmibilgelikevi.com adresini ziyaret

ediniz.

3


İçindekiler

Python Nedir?............................................................................................9

Python Kurulumu………………………………………………….….…10

Visual Studio Code Kurulumu……………………………………….….13

Vscode İçine Python Yükleme……………………………………….….16

Python Dosyası Oluşturma………………………………………….…..17

Selamün Aleyküm Dünya (İlk Proje)…………………………………...19

Veri Türlerinin Şeması……………………………………………....…..22

Karakter Dizisi (String)………………………………………………….23

Print Fonksiyonunun Parametreleri

Artı…………………………………………………………........25

Yıldız………………………………………………………….….25

Separator………………………………………………………….26

End………………………………………………………..…..….27

Kaçış Dizileri ……………………………………………….……….…..28

\’ veya \" ………………………………………………….….…28

\t ………………………………………………….……….….….28

\n……………………………………………………………….…29

\r……………………………………………………………….…29

\b……………………………………………………….…….…..29

r………………………………………………………………..…30

Sayılar Dizisi ( Number)……………………………………..……….....32

Integer………………………………………………………..…..32

Long Integer…………………………………………………...…33

Float…………………………………………………………..….33

Complex………………………………….………………….…...33

Değişkenler……………………………………….……………….…..…34

Sayı ve Karakter Veri Tipi Dönüşümleri………………………….…..…37

Kullanıcı Veri Girişi İnput()…………………………………………......39

eval()………………………………………………………….…..40

exec()……………………………………………………………..42

.fotmat()…………………………………………………….….…42

Biçimlendirme Türleri……………………………….……44

Koşullu Drurumlar

İf……………………………………………………………….…49

Else…………………………………………………………...…..50

Elif………………………………………………………….….…51

Nesned if……………………………………………….…….…..52

And ve or Kullanımı………………….……………….…….……53

Döngüler

While…………………………………………………………..…55

For………………………………………………….…………….57

https://www.youtube.com/c/ELHarezmiBilgelikEvi

ZAFER ÇOPUR

4


Döngülerde kullanılan Fonksiyon ve Nesneler

Range………………………..……………………………...…....60

Not,True,False………………………………………………...….62

Pass…………………………………………………………....….63

Continue…………………………………………………..…..….63

Break……………………………………………………..…...….64

Listeler(List)……………………………………………….…………….65

Len ………………………………………………….……………65

İstenilen Liste Öğelerine Erişme………………….………..…….65

Listeleri Aynı Yapma………………………………………..……67

Liste İçinde Liste…………………………………………………67

Karakter Dizisini Liste Yapma………………………….………..68

İfadeleri Liste İçine Alma……………………………………...…69

Liste Metoları………………………………………………….…69

Appent…………………………………………………….70

Insert………………………………………………………70

Extend…………………………………………………….70

Remove…………………………………………………...71

Pop……………………………………………………...…71

Sort………………………………………………………..71

Reverse…………………………………………………....72

Index……………………………………………………....72

Count……………………………………………………...72

Copy……………………………………………………....73

Clear……………………………………………………....73

Demetler ( Tuple)……………………………………..………………....74

Demet Metotları

Count…………………………………………………...…75

Index………………………………………………...….....75

Sözlük (Dictionary)………………………….…………….……............76

Sözlük Metotları

Keys……………………………………………….………77

Values…………………………………………….……….78

Items…………………………………………….………...78

Get……………………………………………….………..78

Copy…………………………. …………………………..78

Clear…. …………………………………….…………….79

Pop…………………………. …………………………….79

Popitem…………………………. ……………………….79

Setdefault………………………. ………………………...80

Update…………………………. ………………………...80

Fromkeys….……………………. ………………………..80

https://www.youtube.com/c/ELHarezmiBilgelikEvi

ZAFER ÇOPUR

5


Küme (Set)……………………………………………….……………..81

Küme Metotları

Add……………………………………………………….82

Clear………………………………………………………83

Copy………………………………………………………83

Update…………………………………………………….83

Remove………………………………………………...…83

Discard……………………………………………………84

Pop………………………………………………………..84

Union……………………………………………………...84

Intersection………………………………………………..85

Intersection_update……………………………...………..85

Isdisjoint…………………………………………………..85

Difference……………………………………………...….86

Difference_update…………………………………..…….86

Issubset……………………………………………...…….86

Issuperset………………………………………………….87

Symmetric_difference…………………………………….87

Symmetric_difference_update……………………………87

Karakter Metotları

Capitalize………………………………………………...…...…..88

Title…………………………………………………..…………..88

Count…………………………………………………….……….88

Upper……………………………………………………………..89

Lower…………………………………………………………….89

Swapcase…………………………………………..……………..89

Center…………………………………………………………….89

Zfill……………………………………………………………….90

Replace…. ……………………………………………………….90

Startswith……………………………………………..………….90

Endswith…. …………………………………………………...…90

Isupper…. ……………………………………………………..…90

Isalpha……………………………………………………………91

Islower….. …………………………………………………….…91

Isdigit……………………………………………………………..91

Isalnum………………………………………….………………..91

Find……………………………………………………………….91

Rfind…. ………………………………………………………….92

Index…………………………………………...…………………92

Rindex……………………………………………………………92

Join………………………………………………………….……92

Split……………………………………………………...……….93

Translate ve Maketrans…………………………………………..93

https://www.youtube.com/c/ELHarezmiBilgelikEvi

ZAFER ÇOPUR

6


Veri Tipi Dönüşümleri……………………………………….…………..94

Listeyi Demet Yapma…………………………………….………94

Listeyi Küme Yapma……………………………………..………94

Demeti Liste Yapma……………………………………………...94

Demeti Küme Yapma…………………………………………….94

Kümeyi Liste Yapma……………………………..………………94

Kümeyi Demet Yapma………………………………...…………94

Hata Ayıklama

Yazım Hatası ( Error)………………………………………...…..95

Mantık Hatası ( Bug) ………………………………………….....95

İstisnai Hatalar (Exception)………………...…………………….96

Try ve Except………………………………………….….97

Try , Except ve As………………………………………...99

Try ,Except ve Else…………………………………..….100

Try ,Except ve Finally…………………………………...100

Raise…………………………………………………..…101

Assert………………………………………………….....101

Fonksiyonlar………………………………………………..………..…102

Parametre ve

Argümanlar…………………………………………………...…103

Çoklu Sayıda İsimsiz ve İsimli Parametreler…………....105

Fonksiyon İçinde Fonksiyon……………………………………106

Return………………………………………………...…………107

Lambda Fonksiyonları……………………………………….….108

Fonksiyonlarda Değişken Kullanımı………………………..…..109

Gömülü Fonksiyonlar

Map………………………………………………...……112

Filter…. ……………………………………………...….114

Reduce………………………………………..………….115

Zip…………………………………………………….....115

Modüller

Kendi Modülünü Oluşturma…………………………………….116

Modül İsimin Kısaltma………………………………………….117

Modülden Fonksiyon ve Sınıf Çağırma…. …………………….117

Modül İçindeki Fonksiyonları Görme……………………….….118

Derlenmiş Modül Dosyaları…………………………………….118

Dahili Modüller

Os Modülü……………………………………………….119

Dadetime Modülü………………………………………..126

Time Modülü…………………………………………….131

Random Modülü……………………………………...….135

Math Modülü…………………………………………….138

Re Modülü (Düzenli İfadeler)…………………………...143

Merakarakterler………………………..….146

Json Modülü…. …………………………………………159

https://www.youtube.com/c/ELHarezmiBilgelikEvi

ZAFER ÇOPUR

7


Pip…………………………………………………………..…………..162

Örnekler:

Dikdörtgenin Çevre ve Alan Hesabı…………………..…….…..165

İki Sayı Arasındaki Sayıların Toplamı……………………....….166

Girilen Sayıların Toplamı ve Ortalaması…………………….….167

Girilen Sayıların Tek Çift Adedini

Belirleme………………………………………………………..168

Dairenin Alan ve Çevre Hesabı……………………………..…..170

Vize Final Not Geçme Hesabı……………….………………….171

Sayı Tahmin Oyunu…. …………………………………………172

Asal Sayı Bulma………………………………………………...174

Girilen Sayıya Kadar Asal Sayıları

Yazdırma…………………………………………………….….177

Yılın Kaçıncı Gününde Olduğumuzu Bulma…………………...179

Beden Kitle İndeksi Hesaplama………………………………..182

Hipotenüs Hesaplama…. …………………………………..….183

Mükemmel Sayı…. ………………………………..……….….184

Ömer Hayyam Üçgeni ……………………………….………..185

Sayıları 2’lik,8’lik ve 16’lık Tabanda Yazma…. ………………189

Girilen Bir Cümleyi Tersten Yazmak……………………….….190

Çift Doğal Sayıları Toplama……………………………….…..190

Fibonacci Dizisi…………………………………….……..……191

Alfabetik İsim Sıralama…. …………………………………….192

Takvim Oluşturma…. ……………………………….………….193

İkinci Dereceden Denklemin Köklerini Bulma……………..…..194

Atm Makinesi…. ……………………………………………….195

Sezar Şifreleme Algoritması……………………………………197

https://www.youtube.com/c/ELHarezmiBilgelikEvi

ZAFER ÇOPUR

8


Python Nedir?

Python üst düzey basit sözdizimine sahip, öğrenmesi kolay, okunabilirliği

destekleyen, nesne yönelimli yorumlanabilir bir script dilidir. Python, ayrıca

yorumlanabilir, interaktif ve nesne odaklı bir programlama dilidir.

1990 yılında geliştirilmeye başlanmış ve Guido Van Rossum tarafından

Hollanda’nın Amsterdam şehrinde ilk adımları atılmıştır. Python adını aslında

bir yılan türü olan “piton”dan değil Guido Van Rossum’un en sevdiği İngiliz

komedi grubu olan Monty Python’s Flying Circusadlı gösterisinden almıştır.

Python’u diğer programlarla kıyaslarsak:

Daha kolay öğrenilir,

Diğerlerine göre çok daha hızlı olduğu için zaman kaybı oluşturmaz,

Ayrı bir derleyici ihtiyacı duymaz,

Daha düzenli bir kod dizilimine sahiptir,

İnsanlar okuyabilir ve anlayabilir.

Açık kaynaklıdır ve bu durum Python’u ücretsiz yapar. Sade olması

yüzünden diğer programlara göre çok basittir bu sayede zaman kaybı

yapmadan hızlı öğrenilebilir. Karmaşık dilleri basitleştirilebilir ve bana göre

en güzel özelliği aklınıza gelecek herhangi bir fikri çabucak oluşturabilirsiniz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

ZAFER ÇOPUR

9


Python Kurulumu

https://www.python.org/downloads/ sitesine tarayıcımızdan girelim.

Programın son sürümü karşımıza gelecektir. İşletim sisteminize göre buradan ilgili

dosyayı indiriniz.

İndirdiğiniz dosyayı bilgisayarınızdan bulduktan sonra bilgisayarınıza kurunuz.

Ekranın en alt kısmında yer alan Add Python 3.5 to PATH ifadesinin yer aldığı

kutucuğu işaretliyoruz. Bu seçeneği mutlaka işaretlemeniz gerekiyor. Böylece

Python ortam değişkeni olarak tanımlanmaktadır. "Customize installation"

seçeneğini seçiyoruz. Çünkü Python'u "Install Now" seçeneğinde belirtilen klasör

yoluna değil de kendi istediğim yere kurmak istiyorum.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

10

ZAFER ÇOPUR


Yukarıda bulunan ekran geldiğinde, tüm seçeneklerin işaretli olduğuna dikkat

ediniz. Daha sonra next yazısına tıklayarak ilerleyiniz.

Yukarıda bulunan ekran karşınıza geldiğinde, size uygun başka seçenekler varsa

onları da seçebilirsiniz. Daha sonra Install yazısına tıklayarak ilerleyiniz.

Kurulum işlemi başlıyor. Programın yüklenmesini bekliyoruz.

11

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Kurulum işlemi sona erdi. Close yazısına tıklayarak ekranı kapatabilirsiniz.

Programın yüklendiğini cmd ekranını açarak kontrol edelim. Arama bölümünde

cmd yazarak komut istemi uygulamasını bulalım ve tıklayalım.

Komut istemi uygulamasında ‘python –version’ yazalım ve enter tuşuna basalım.

Python 3.8.2 şeklinde uyarı verdi. Böylece yüklü olan python versiyon numarası

karşımıza çıkmış oldu. Komut istemi bölümünden de python ile ilgili çalışmalar

yapılabiliyor. Ancak biz python programını kullanmak için Visual Studio Code

programını kullanacağız.

Eğer programın kurulma aşamasında Add Python 3.5 to PATH seçeneğini

işaretlememişseniz komut yazdığınızda hata alacaktınız.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

12

ZAFER ÇOPUR


Visual Studio Code Kurulumu

Visual Studio Code , hızlı ve hafif olmanın yanında Mac OS X, Linux ve

Windows işletim sistemlerinde CoreCLR ve ASP.NET 5 uygulamaları geliştirmek

ve diğer dilleri desteklemek için sunulan ücretsiz bir kod düzenleme yazılımıdır.

Kurulum yapıldığında basit bir metin editörü görüntüsü ile karşımıza çıkan ürün,

eklentiler sayesinde Node JS, Ruby, Python, C/C++, C#, Javascript gibi birçok

programlama dilini desteklemektedir.

Hata ayıklama özellikleriyle, gelişmiş web ve bulut uygulamaları üstünde kodları

düzenlemeye, yeniden tanımlamaya ve optimize etmeye yarar.

Kitabımızda anlattığımız kod yazılımlarını bu program üzerinden yapacağız.

Şimdi kurulumuna geçelim.

https://code.visualstudio.com/ internet sitesini tarayıcımızda açalım.

İşletim sisteminize göre dosyayı indiriniz ve indirdiğiniz dosyayı kurmak için

çalıştırınız.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

13

ZAFER ÇOPUR


Yukarıdaki gibi işaretledikten sonra ileri yazısına tıklayınız.

Yükleme yeri otomatik olarak seçiliyor. Farklı bir yere yüklemek isterseniz

‘browse…’ yazısına tıklayınız ve kurulum yapılacak yeri seçiniz. Daha sonra

‘ileri’ yazısını tıklayınız.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

14

ZAFER ÇOPUR


Yukarıdaki gibi işaretledikten sonra ‘ileri’ yazısına tıklayınız.

Böylece kurulumu bitirmiş olduk.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

15

ZAFER ÇOPUR


Vscode İçine Python Yükleme

Visual Studio Code içinde Python kullanmak için bir defaya mahsus eklenti olarak

Python yüklemek gerekiyor. Bunun için vscode programını açalım.

Python eklentisini yüklemek için menüden

extensions bölümünü tıklayalım.

Eğer Paython programı karşımıza çıkmazsa search

yazan yerden aratalım. Daha sonra install yazısına

tıklayarak eklentimizi yükleyelim.

Aynı zamanda Python indent isimli eklentiyi de

yükleyelim.

Bu eklenti, kod yazarken enter tuşuna

bastığımızda otomatik olarak girdi yapmamızı

sağlıyor. Böylece bizlere kolaylık sağlamış olacaktır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

16

ZAFER ÇOPUR


Proje Dosyası Nasıl Oluşturulur?

Projelerimizi yapabilmemiz için klasör oluşturmamız gerekiyor. Vscode programı

ile farklı programlama dilleri kullanabiliyoruz. Python programını kullanırken

dosyalarımızın nereye kayıt olacağını oluşturalım. Vscode programını açalım.

Programın üstünde yer alan ‘file’ menüsünden

‘open folder…’ seçeneğine tıklayalım.

Oluşturduğumuz Python projelerinin

nereye kayıt olacağını seçelim. Ben F

bölümünde bütün Paython

dosyalarının yer aldığı klasörü seçtim.

İçine aynı zamanda Paython

projelerimin yer alacağı klasör

oluşturdum.

‘Python projelerim’ isimli klasörü seçtikten sonra ‘klasör seç’ yazısına tıklıyoruz.

Klasörümün içinde ‘ilk projem’

isminde bir klasör daha oluşturdum.

Bu klasörü seçtikten sonra ‘Klasörü

Seç’ yazısına tıklıyoruz.

Farklı bir çalışma yapacağım zaman

yine burada farklı bir klasör

oluşturabiliriz. Böylece bütün

projelerim aynı klasör içinde

saklanmış olacaktır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

17

ZAFER ÇOPUR


‘İlk projem’ isminde klasör oluşturmuştum. Gördüğünüz gibi artık projemiz

bu isimle karşımıza çıkmış oldu. Eğer sizde sol tarafta bu şekilde

görünmüyorsa ‘explorer’ seçeneğine (kırmızı ok) tıklamanız gerekiyor.

‘İlk projem’ yazısına tıkladığımızda içindeki dosya ve klasörleri görebiliriz.

Şu an projemiz boş olduğu için içinde bir şey olmayacaktır.

Projemizin içinde Python dosyası oluşturmak için kırmızı ok ile

gösterdiğimiz ‘new file’ menüsüne tıklayalım.

Hemen alt kısımda bir kutu çıkacaktır. Kutuya ilk dosyam.py ismini verdim.

Noktadan sonra py yazdığım an, ön tarafta Paython sembolünün çıktığına

dikkat ediniz. Böylece Paython dosyası oluşturmuş olduk.

Sağ tarafta ilk dosyam ismini verdiğim dosya oluştu. Artık içine kodları

yazabiliriz. 18

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Selamünaleyküm Dünya

Oluşturduğumuz projemizin içine ilk kodumuzu yazacağız. Kodlarımızın

çalıştığını denetlememiz için terminal ekranımızı açmamız gerekiyor.

Eğer sizde açık değilse üstte bulunan menülerden ‘terminal --> new terminal’

yolunu izleyerek açınız.

Vscode ekranımızda aşağıdaki kodları yazıyoruz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

19

ZAFER ÇOPUR


Kodlarımızı yazdıktan sonra mutlaka dosyamızı kayıt edelim. Yoksa kodlarımızın

çalıştığını anlayamayız. Kısa yoldan Ctrl ve S tuşuna basmanız yeterlidir. Ya da

‘File ----> Save’ yolunu kullanabilirsiniz.

Ya da sağ yukarıda bulunan

zamanda çalıştırılır.

tuşuna basarsanız kodlarınız kayıt edilir ve aynı

Şimdi bir de dosya adını yazarak nasıl çalıştırabiliriz ona bakalım.

Eğer ekranınızda aşağıdaki gibi bir hata karşınıza çıkıyorsa, bu ekranda install

yazısına tıklayarak eklentinin yüklenmesini sağlamanız gerekiyor. Kurulum işlemi

otomatik olarak başlayacaktır. Terminal ekranında bunu göreceksiniz.

Vscode programında kod yazarken terminal ekranı aşağıdaki gibi görünmektedir.

En alt satırın sonunda dikdörtgen şekli bulunmaktadır. Oraya fareyle tıklayıp yazı

yazabiliyoruz.

Aşağıdaki gibi kodları yazacağız. Python ilkdosyam.py kodunu yazdık.

Biliyorsunuz ilk projemde dosyamın adını ilkdosyam.py yapmıştım. O yüzden

dosyamdaki kodların çalışması için bu şekilde yazdım. Kodumuzu yazdıktan sonra

enter tuşuna basıyoruz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

20

ZAFER ÇOPUR


Gördüğünüz gibi terminal ekranında yazdırdık. İlerleyen derslerimizde print

fonksiyonun özelliklerini daha detaylı olarak inceleyeceğiz.

Terminal ekranında çalışmalar yaptığımızda bir çok yazı çıktığını görüyoruz.

Çalışma yaptığımızda o yazıların silinmesini ve sadece yaptığımız çalışmanın

yazılarının çıkmasını istiyorsak oraya ‘cls’ yazarak enter tuşuna basmamız yeterli

olacaktır.

Programımızı tamamen kapatıp yeniden açarsak son yazdığımız kodların hafızada

kaldığını göreceksiniz. Çünkü dosyamızı kaydetmiş ve öyle çalıştırmıştık. Tekrar

dosyamızı açınca içindeki bilgiler karşımıza çıkmış oldu.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

21

ZAFER ÇOPUR


Veri Türleri

Pythonda 5 adet veri türü bulunmaktadır.

1-String (Karakter)

a-Integer

b-Float

c-Long Integer

d-Complex

2-Number (Sayılar)

3-List (Listeler)

4-Tuple(Demetler)

5-Dictionary(Sözlükler)

6-Sets(Kümeler)

Değiştirilebilen Veri Türleri:

List, Dictionary

Değiştirilemeyen Veri Türleri:

String, Tuple

https://www.youtube.com/c/ELHarezmiBilgelikEvi

22

ZAFER ÇOPUR


Karakter Dizisi ( String)

Selamünaleyküm Dünya ifadesi bir karakter dizisidir.

Elimizde olan verilerin hangi tip bir veri olduğunu bilmemiz önemlidir.

Selamünaleyküm Dünya ifadesi karakter dizisi olduğu için tırnak içinde yazmamız

gerekiyor. Eğer tırnak içinde yazmazsak hata verecektir.

Yukarıda gördüğünüz gibi ‘ilk projemizi yazıyoruz…’ cümlesi tırnak içinde

olmadığı için terminal ekranımızda hata alıyoruz.

Bir verinin karakter dizisi olduğunu anlamak için veri tipini sorgulama yapabiliriz.

Bunun için type kodunu kullanacağız. Şimdi aşağıdaki gibi kodumuzu yazalım ve

çalıştıralım.

Burada class ‘str’ şeklinde bir ifadenin çıktığını görüyoruz. Str ifadesi string

ifadesinin kısaltılmış olarak yazılmasıdır. Böylece ifademizin string olduğunu

görmüş olduk.

Python bize üç farklı tırnak seçeneği sunmaktadır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

23

ZAFER ÇOPUR


Karakter dizimizi üç farklı tırnak içinde yazarak terminalde nasıl sonuç verdiğine

bakalım.

Sonuçların hepsinin aynı olduğunu görebiliyoruz. Ancak bu tırnakların özel

durumlara göre kullanım alanları vardır.

Python programı, ilk tırnak sembolünü okuduktan sonra aynı tırnak sembolüne

kadar okumaya devam eder. Aynı tırnak sembolüne geldiğinde karakter dizisinin

orada son bulduğunu anlar.

Bu şekilde bir cümle yazdığımızda terminal ekranında hata ile karşılaşırız. Çünkü

program tırnak içinde sadece Selamünaleyküm Dünya ifadesini algılamaktadır.

Dünya’nın içinde bulunan tek tırnağı programın algılaması için dışardaki tırnakları

çift tırnak olarak yapmalıyız.

Aynı zamanda tek tırnak içinde çift tırnaklı ifadeleri gösterebiliriz. Böylece

tırnaklar farklı olduğu için karakterlerimiz program tarafından okunacaktır.

Yukarıda yazdığımız örnekleri aynı zamanda üç tırnakla da yapabiliriz. Ancak üç

tırnak işaretinin birden fazla satıra yayılmış karakter dizilerinin tanımlanmasında

daha çok kullanılır. Aşağıdaki gibi kodumuzu yazalım.

Tırnak içerisine tek bir harf yazmamız, hiçbir şey yazmamamız ya da boşluk

bıraktığımız durumlarda yine aynı şekilde karakter dizisi ifade edildiğini

söylememiz gerekiyor. Boşluklar bir karakter dizisi olarak algılanmaktadır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

24

ZAFER ÇOPUR


Print Fonksiyonunun Parametreleri

Artı

İki tane karakter dizisini birleştirmemizi sağlar.

Kodumuzda EL ile Harezmi kelimelerini tırnak ile karakter olarak tanımladık ve

daha sonra aralarına + işaretini yerleştirdik. Bu + sembolü toplama olarak değil iki

karakteri birleştirme olarak algılandı. Ancak arada boşluk bırakmadan birleştirdi.

Bunu aşmak için + yerine virgül sembolü, ‘EL’ den sonra ya da ‘Harezmi’ den önce

boşluk koymak veya araya bir boşluk karakter eklemeliyiz.

Kodumuzu yazarken aralara + sembolü yerleştirmiştik. Ancak + kullanmadan da

yazabiliriz. Python bu şekilde yazılan kodlarda otomatik olarak arada + sembolünün

olduğunu algılamaktadır. Ancak araya + yazmanız kodların okunması için daha iyi

olacaktır.

Yıldız

Tekrar eden karakterleri çoğaltmamızı sağlar. Mesela www ifadesinde w harfi 3

defa tekrar etmiştir. Bunu Paython programında çarpma ile şu şekilde yazabiliriz.

Şimdi bir web sitesi adresini yazmaya çalışalım.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

25

ZAFER ÇOPUR


Burada kullandığımız yıldız sembolü aslında çarpma işlemi olarak geçmektedir.

Ancak burada matematiksel bir işlem olarak algılanmadığını fark etmişsinizdir.

Birleştirme yaparken farklı veri tipleri bile olsa hepsini bir araya getirmek

istiyorsanız araya virgül kullanmanız yeterli olur.

Sep

Türkçede ayırıcı olarak geçmektedir. Elemanların arasına ayıraç yazmamızı

sağlar. Şimdi 1’den 6’ya kadar sayıları yazarken aralarında - koymayı kodlarla nasıl

yapabiliriz onu göreceğiz. Bunun için separator (ayırıcı) kodunu kullanacağız.

Yukarıda gördüğünüz gibi sayılarımızı virgül kullanarak birbirinden ayırdık.

Ancak kodun sonunda sep şeklinde bir ifade yazdık. Bu separator kodunun

kısaltılmış halidir. Burada ayırıcımız - olacağını ifade etmek için tırnak içinde –

ifadesini yazdık. Sep değerinin bu olacağını ifade ettik. Böylece terminal ekranında

sayıların ayrıldığını gördük.

Bu yöntemle aşağıdaki gibi çok farklı semboller araya yerleştirebiliriz.

Şimdi sayıları alt alta olacak şekilde yazmayı deneyelim. Alt satıra geçmek için \n

kodunu kullanıyoruz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

26

ZAFER ÇOPUR


End

Türkçede son anlamına gelmektedir. Yazdığımız elemanlarının sonuna sembol

eklememizi sağlar.

Biraz önceki örneğimizde sayıları alt alta yazarken yanına – yazdıralım. Bunun

için \n ifadesinin önüne – yazmamız yeterli olacaktır. Çünkü amacımız – yazdıktan

sonra alt satıra inmesidir. Yalnız aşağıdaki gibi end (bitiş) kodu eklemezsek en

sonda bulunan 6 sayısına – eklenmeyecektir. Çünkü sep kodu aralık demek olduğu

için sona eklemeyecektir.

Yaptığımız çalışmaları yıldız kullanarak yapabiliriz. Aşağıdaki gibi kodumuzu

yazalım.

Daha önceki çalışmamızda elemanları virgül kullanarak yazmıştık. Bu

elemanların arasında istediğimiz sembolü yerleştirebiliyorduk. Şimdi ise bir

karakter dizisi tanımladık ve her bir elamanın arasına istediğimiz sembolü

yerleştirebildik.

Aynı olayı karakter dizisi olmayan yani sayı olanlara uygularsak nasıl bir sonuç

verecek bakalım.

Yıldız sembolü sayıların önüne konduğuna terminal ekranında hata verdiğini

gördünüz.

Karakter dizileri yıldızlı parametrelerle birlikte kullanılabiliyor.

27

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Karakter dizileri ile işlemler yaparken tırnakların öneminden bahsetmiştik.

Orada Selamünaleyküm Dünya’nın Güzel İnsanları şeklinde cümleyi terminalde

yazdırmak için, çift tırnak içine almamız gerektiğini belirtmiştik. Eğer tek tırnak

içine alırsak Dünya’nın kelimesindeki tek tırnakla çakışıyordu. Ancak kaçış

dizileri sayesinde bu ifadeyi tek tırnak içinde yazabiliyoruz.

\’ veya \" İşaretinin kullanımı

Kaçış Dizileri

Yukarıda ifade ettiğimiz cümleyi tek tırnak içinde aşağıdaki gibi yazalım.

Cümlemizi yazarken tırnak ile ayırmış olduğumuz Dünya kelimesine dikkat

edin. Tırnak yerine \’ işaretini kullandık. Böylece Python kodu okurken orayı

atlayarak geçecektir. Terminalde çıktı olarak baktığımızda bunu görmektesiniz.

Bu olay çift tırnak içinde aynen geçerlidir. Aşağıdaki örneği inceleyiniz.

Yalnız cümle içinde \ sembolü göstermek istiyoruz. Eğer yukarıdaki gibi

yazarsak terminal ekranında çıktı olarak görünse de problem olarak karşımıza

çıkmaktadır. O halde bu sembolü çıkarmak için \\ şeklinde iki defa yazmalıyız.

Böylece hata ortadan kalmış olacaktır.

\t İşaretinin Kullanımı

Kullanıldığı yerde tab tuşuna basma etkisi oluşturmamızı sağlar.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

28

ZAFER ÇOPUR


\n İşaretinin Kullanımı

Konulduğu yerden itibaren bir alt satıra geçmeyi sağlar.

\r İşaretinin Kullanımı

Bu işaretin kullanıldığı yerden itibaren gelen kelime, satır başı olarak devam

eder.

Örneğimizde \r kodu kestiğimiz yerden sonra gelen kelime satır başına gelmiş

oldu. Burada sanki cümleten kelimesi silinmiş gibi görünebilir ama aslında

silinmedi. Kestiğimiz yerden sonra gelen cümle cümleten kelimesinin üzerine

yazılmış oldu. İkinci örneği vererek bunu daha iyi anlayacaksınız.

Yukarıda gördüğünüz gibi kesme olayımız evi kelimesi oldu. Evi kelimesi satır

başına geldi ama diğer cümlenin üzerine yazılarak gitti.

\b İşaretinin Kullanımı

Yazıldığı yerin sol tarafındaki karakteri silmeyi sağlar.

Yukarıdaki örnekte bilgelik derken k harfinin silindiğine dikkat ediniz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

29

ZAFER ÇOPUR


r İşaretinin Kullanımı

Bu komut \n gibi bütün kaçış dizilerinin etkisini kapatmamızı sağlar.

Kodumuzu yazmadan önce mavi renkte r harfini yazdığımızı görüyorsunuz.

Daha sonra kurulum yeri olarak aidat ve nisan ayı yolu yazıyor. Ancak orada \a

ve \n kaçış dizileri mevcut durumda. Eğer en başa r harfi yazmasaydık bu kaçış

dizileri görevini yerine getirecek ve terminalde farklı bir çıktı olarak karşımıza

dönecekti. Yani r olmasaydı aşağıdaki gibi terminalde çıktı oluşacaktı.

r harfini kullanmamız bize kolaylık sağlamış oldu. Tabii r kullanmadan da

farklı şekillerde bunu çözebilirsiniz. Dersimizin başında \ sembolünü yazdırmak

için \\ iki defa yazmanız gerekiyor demiştik. O halde yukarıdaki örneği aşağıdaki

gibi yaparsanız da hata vermeyecektir.

\ işaretini yazarken çok dikkat etmeniz gerekiyor. Kaçış dizilerinin ne

olduğunu ezbere bilmiyorsanız da vscode programı bu konuda size yardımcı

olabiliyor.

Bu örnekte \a ve \n yazarken farklı renkte yazdığına dikkat ediniz. Eğer böyle

bir durum görüyorsanız hemen kodunuzu düzeltmeniz kaçınılmazdır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

30

ZAFER ÇOPUR


Kaçış dizilerini aşağıdaki tabloda görebilirsiniz.

KAÇIŞ DİZİSİ

ANLAMI

\’ Karakter dizisi içinde tek tırnak işaretini kullanabilmemizi

sağlar.

\” Karakter dizisi içinde çift tırnak işaretini kullanabilmemizi

sağlar.

\\ Karakter dizisi içinde \ işaretini kullanabilmemizi sağlar.

\n Yeni bir satıra geçmemizi sağlar.

\t Karakterler arasında sekme boşluğu bırakmamızı sağlar.

\u UNICODE kod konumlarını gösterebilmemizi sağlar.

\U UNICODE kod konumlarını gösterebilmemizi sağlar.

\N Karakterleri UNICODE adlarına göre kullanabilmemizi

sağlar.

\x Onaltılık sistemdeki bir sayının karakter karşılığını

gösterebilmemizi sağlar.

\a Destekleyen sistemlerde, kasa hoparlöründen bir ‘bip’ sesi

verilmesini sağlar.

\r Aynı satırın başına dönülmesini sağlar.

\v Destekleyen sistemlerde düşey sekme oluşturulmasını

sağlar.

\b İmlecin sola doğru kaydırılmasını sağlar

\f Yeni bir sayfaya geçilmesini sağlar.

r

Karakter dizisi içinde kaçış dizilerini kullanabilmemizi sağlar.

Karakter Metotları

Karakter verilerimizde kullanacağımız bazı metotlar bulunmaktadır. Bu

metotları anlatmak için bazı kavramları öğrenmemiz gerekiyor. O yüzden

bütün veri tipleri anlatıldıktan sonra metotlara tekrar geri döneceğiz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

31

ZAFER ÇOPUR


Python programında sayılarla işlemler yaptırırken 4 tip verimiz

bulunmaktadır. Bunlar Tam sayılar (Integer), Büyük Tam sayılar ( Long

Integer), Ondalıklı Sayılar (Float) ve Karmaşık Sayılardır (Complex).

Integer:

Sayılar Dizisi (Number)

Sayı dizilerini komutlara yazarken tırnak işareti kullanmıyoruz. Eğer tırnak

içinde yazarsak karakter olarak algılanmaktadır. Aşağıdaki gibi kodumuzu

yazalım ve terminalde nasıl çıktığını görelim.

Matematiksel işlemlerden bazılarının nasıl yapıldığını kodlayalım.

Tam sayılar, sayma işleminde kullandığımız sayıların önüne (-) ya da (+)

sembolü getirilen sayılardan ve sıfır sayısından oluşmaktadır. Sayıların

önünde eğer işaret yoksa (+) olarak ifade edilmektedir. Yukarıdaki sayı

doğrusunda bazı tam sayılar gösterilmiştir.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

32

ZAFER ÇOPUR


Long Integer:

Python 2 sürümünde tam sayıların belirli bir değerinden sonra long integer

değeri başlar. Bu sayı 32-bit sistemlerde 2^32-1, 64-bit sistemlerde 2^64-1

tam sayısına denk gelmektedir. Ancak Python 3 ile integer değeri artık

kapasitenizin imkan verdiği değere kadar (bir nevi limitsiz) büyük

olabilmektedir.

Float:

Ondalık sayılar içinde virgül bulunduran sayılardır. Mesela 2,45 veya -2.45

gibi. Yalnız programda virgül yerine nokta kullanmanız gerekiyor. O halde

2,45 yerine 2.45 şeklinde yazarsak doğru bir yazım olacaktır.

Complex:

Matematik ileri konularında gördüğümüz karmaşık sayıları program içinde

de kullanabiliyoruz. Bu veri tipine 6+3j gibi sayıları örnek verebiliriz. Python

programı bu sayılarla işlem yapmak isteyenler için imkan sunmuştur.

Gömülü sistemlerde sıkça kullanılmaktadır. Gerçek ve sanal olmak üzere iki

kısmından oluşan sayı tipidir.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

33

ZAFER ÇOPUR


Değişkenler

Programlamada değişken dediğimizde bilgileri bilgisayarın hafızasında

tutmak için yapmış olduğumuz tanımlamalar olarak ifade edebiliriz.

Değişkenler sayesinde istediğimiz bilgileri hafızaya kayıt edebilir ve daha

sonra istediğimiz zaman kullanabiliriz.

Matematik dersinde değişken kavramını cebirse ifadeler konusu içinde

öğretiyoruz. Örnek olarak;

x=3 olduğuna göre x+5 ifadesi neye eşittir?

şeklinde sorular çözüyoruz.

Bu cümlede anlatılmak istenen x harfi gördüğünüz yere 3 yazmanızdır. O

halde x+5 cümlesinde x yerine 3 yazdığımızda 3+5 şeklinde bir ifade olur ve

cevabı 8 olarak buluruz.

Buna benzer mantıkla biz de Python dilinde değişkenler oluşturacağız.

Aşağıdaki gibi kodumuzu yazalım ve terminal ekranında nasıl çıktı

verdiğine bakalım.

x adında bir değişken oluşturduk ve değerine 3 olsun dedik.

Terminal ekranında x değerini yazdırdık.

Daha önce karakter ve sayı dizilerini görmüştük. Karakter dizilerini

yazarken tırnak içinde yazmamız gerektiğini söylemiştik. Değişkenlere

karakter dizisi atarken bu olaya yine dikkat ediyoruz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

34

ZAFER ÇOPUR


Oluşturulan değişkene dikkat ederseniz terminal ekranında çıkmıyor.

Değişkene atadığımız değerin çıkması için print fonksiyonu içerisine

yazıyoruz. Bu ifadeler çıkmasa bile hafızada sürekli olarak tutulmaktadır.

Kodlarımızı yazdığımızda bazen hafıza durumundan dolayı değişken ataması

yapamayacağız durumlarla karşılaşabiliriz.

Bir önceki sayfamızda x isminde bir değişken oluşturmuştuk. Değişken ismi

verirken bazı kurallara dikkat etmeniz gerekiyor.

Bu kurallar;

• Programlamaya özgü anahtar kelimeleri kullanamazsınız. (while, for vb.)

• Değişken adları sayı ile başlayamaz. (2ceviz vb.)

• Değişken isimleri özel karakter içermez. (-, +, *, vb.)

• Değişkenler birden fazla kelimeden oluşuyorsa, kelimeler birleşik yazılmalıdır

ya da aralarına _ (altçizgi) karakteri kullanılmalıdır. (zafer_copur)

• Python dili büyük-küçük harfe yazımında duyarlıdır. (Zafer ya da zafer farklı

değişkenlerdir.

• Değişken isimlerinde Türkçe karakter kullanmayın. ( çopur yerine copur)

Birinci maddede yer alan anahtar kelimelere ulaşmak için aşağıdaki kodu

yazınız ve terminal ekranında inceleyiniz.

Eşit Değişkenler Oluşturma:

Yukarıdaki örnekte görmüş olduğunuz gibi üç tane değişken oluşturduk ve

hepsine aynı anda 50 değerini atadık. Ayrı ayrı çıktı aldığımızda hepsinin de

50 değerini verdiğini gördük.

Değişkenlere Farklı Değer Verme:

Örneğimizde değişkenler arasına virgül koyarak sırayla yazdık. Atadığımız

değerlerde aynı şekilde virgülle yazıldı. Karakter dizisi yazarken tırnak içine

aldığımıza dikkat ediniz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

35

ZAFER ÇOPUR


Değişkenleri kullanarak dört işlem yaptırmaya çalışalım. Değişken olarak

elma , armut ve muzun 1 kg fiyatlarını alalım. Daha sonra hepsinden 1 kg alan

bir kişinin kaç lira ödeyeceğini hesaplatalım.

4 kg elma ve 3kg armut aldığımızda kaç lira ödeyeceğimizi hesaplatalım.

Yukarıdaki yaptığımız alış verişte 50 lira para verseydik ne kadar para üstü

alırdık şeklinde bir işlem yaptıralım.

Parantezlere dikkat ederseniz program işlem önceliğine göre algıladı ve

otomatik olarak bize cevabı verdi. Print fonksiyonun parantezi ile işlem

parantezi birbirinden ayrılmış oldu. Kodları yazarken parantezlere dikkat

edelim.

Global ve Local Değişkenler

Fonksiyonlar konusuna geçtiğimizde bu kavramlar daha ayrıntılı olarak

anlatılacaktır. Buraya kadar olan değişken kavramı bizim için şu an yeterlidir.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

36

ZAFER ÇOPUR


Sayı ve Karakter Veri Tipi Dönüşümleri

Python ile etkileşimli programlar yazdığımızda kullanıcıdan gelen değerleri

farklı veri tiplerine çevirmemiz gerekiyor. Diğer veri tiplerini görmedik ama

sayı ve karakter veri tipi dönüşümlerini bilirsek bazı konuları daha rahat

anlayabiliriz.

Tam Sayıyı Ondalık Sayıya Çevirme:

Örnek olarak 75 sayısını ondalık sayıya çevirelim. Ondalık sayıya çevirmek

için float fonksiyonunu kullanıyoruz. Bunun için float(75) şeklinde kodumuzu

yazmamız gerekiyor.

Örnekte gördüğünüz gibi 75 sayımızı 75.0 şeklinde yazarak ondalık sayı

şekline çevirmiş olduk.

Ondalık Sayıyı Tam Sayıya Çevirme

Örnek olarak 75.2 sayısını tam sayıya çevirelim. Tam sayıya çevirmek için

int fonksiyonunu kullanacağız. Bunun için int(75.2) şeklinde kodumuzu

yazmamız gerekiyor.

Yalnız burada yuvarlama işlemi yapmıyor. Tam kısım 75 olduğu için sadece

oradaki sayıyı çıktı olarak bize veriyor.

Sayıları Karaktere Çevirme:

Örnek olarak 75 sayısını karaktere (string) çevirelim.

a isminde bir değişken tanımladık ve 75 sayısını değişkenimize atadık.

Terminalde yazdırırken a değişkenimize str fonksiyonuyla karakter haline

getirdik.

37

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Karakterleri Sayıya Çevirme:

Örnek olarak 75 sayısını karakter olarak tanımlayalım ve int fonksiyonu ile

sayıya çevirelim.

a isminde bir değişken tanımladık ve 75 sayısını tırnak içinde yazarak

karakter haline getirdik. Değişkenimize bu değeri atadık. Terminalde

yazdırırken a değişkenimize int fonksiyonuyla sayı haline getirdik.

Karakterleri sayıya çevirirken içerisinde sadece rakamların olmasına dikkat

edin. Rakamdan başka bir şey yazdığınızda hata verecektir.

Karakterleri Ondalık Sayıya Çevirme:

Ondalık sayıya çevirmek için float fonksiyonunu kullanıyoruz. Yukarıdaki

örneğimizde int yerine float yazarak bunu sağlayabiliriz.

Karakterleri ondalık sayıya çevirirken rakam ve nokta dışında başka bir şey

yazmayınız. Bunlar dışında bir şey yazdığınızda hata verecektir.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

38

ZAFER ÇOPUR


Kullanıcı Veri Girişi Input()

Bir uygulama yaptığımız zaman kullanıcıdan bazı bilgileri girmesini istiyoruz. Bu

bilgileri almak için input() fonksiyonunu kullanıyoruz. Kullanıcı bilgiyi girdiği

zaman biz bunu string ( karakter dizisi) olarak alıyoruz. Daha sonrada bu veriyi

istediğimiz veri tipine dönüştürmemiz gerekiyor. Bir önceki dersimizde bundan

bahsetmiştik.

Şimdi aşağıdaki gibi kodumuzu yazalım.

Öncelikle girilen sayı adında bir değişken oluşturduk. Bu değişkene kullanıcıdan

gelen değeri atayabilmek için input() fonksiyonunu yazdık. İnput içine ise lütfen

sayı giriniz şeklinde ifade kullandık. Amacımız lütfen sayı giriniz dediğimiz yere

kullanıcının sayı girmesini sağlamak. Kullanıcı buraya sayı girdiği an, bizim girilen

sayı isimli değişkenimiz o sayı olacaktır. Daha sonrada print komutu ile bu değeri

yazdırmaya çalıştık.

Şimdi kodumuzu çalıştıralım ve terminal ekranından bir sayı girelim. Aşağıdaki

gibi bir görüntü karşınıza çıkacaktır.

Cümlemizin sonunda oluşan dikdörtgenin içine sayı giriniz ve enter tuşuna

basınız.

Şimdi aşağıdaki kodu yazalım ve input fonksiyonunda oluşan sayının veri tipinin

ne olduğunu görelim. Veri tipini öğrenmek için type kodunu kullanıyorduk.

Terminal ekranında gördüğümüz gibi str olarak cevap geldiğini görüyoruz.

Buradan da gördüğümüz gibi input fonksiyonundan aldığımız her verinin tipi string

yani karakter dizisidir.

39

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Yalnız biz örneğimizde kullanıcının sayı girmesini istedik. O halde bunu bizim

sayıya (integer) dönüştürmemiz gerekiyor.

1. satırda kullanıcıdan aldığımız değeri girilen sayı isminde değişkene aktardık.

2. satırda int komutu ile girilen sayı ismindeki değişkene atanan sayıyı integer

yaptık ve daha sonra bunu girilen sayı değişkenine aktardık.

3. satırda terminalde yazdırdık.

4. satırda son durumda sayımızın integer olup olmadığını terminale yazdırdık.

Burada girilen sayı değişkenine dikkat edelim. Normalde değişkenler aynı isimde

olmaması gerekiyordu ama biz aynı ismi kullandık. Çünkü program önce birinci

satırı okuyacaktır. Birinci satırda aldığı değer ikinci satırı okurken başka bir değere

dönüşecektir. Bundan sonra artık bizim girilen sayı değişkenimiz artık ikinci satırda

yazan olacaktır. Program artık ilk değeri tutmayı bırakacak ve ikinci satırdaki değeri

hafızaya alacaktır.

Şimdi kodumuzu çalıştıralım ve terminal ekranına bakalım.

Sayımızı 15 olarak girdik. Veri tipi gördüğünüz gibi int olarak çıktı. Daha önce str

olarak yanıt geldiğini biliyorsunuz. Böylece girilen sayıyı artık sayı olarak işlem

yaptırabiliriz.

eval() Fonksiyonu:

Bu fonksiyon kullanıcıdan aldığımız bilgileri işlememizi sağlar. Bu kod ile basit

bir hesap makinesi bile yapabilirsiniz. Aşağıdaki kodları inceleyelim.

Terminal ekranında 4+6 şeklinde işlemimizi yazdık. Sol tarafta kodlarımıza

baktığımızda bu girilen değer input ile alındı. Bu değeri işlem adında değişkene

aktardık. Daha sonra eval fonksiyonu ile işlem değişkenindeki değeri hesapladık ve

cevap değişkenine aktardık. Cevabımızı da print komutu ile terminale yazdırdık.

Bunun gibi çok farklı işlemleri hemen hesaplatabiliyoruz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

40

ZAFER ÇOPUR


Biraz önceki kodumuzda bu sefer kullanıcının bir cümle yazmasını sağlayalım.

Terminal ekranında print("Selamünaleyküm") şeklinde bir cümle yazdık.

Python bu şekilde kullanıcının girdiği yazıyı işleme tabii tuttu ve çıktı olarak

verdi. Alt tarafta none yazısına şimdilik girmeyeceğiz o yüzden ona

odaklanmayalım.

Burada gördüğünüz gibi kullanıcı bize Python komutuyla bir yazı

gönderebildi. O halde bu şekilde çok farklı kodlar bize gönderebilir. Eğer bir

web sitesinde böyle bir kod kullanırsak güvenlik açığı olacaktır.

Bir örnek üzerinde bunu anlatmaya çalışalım. Aynı kodun içerisinde bu sefer

dosya oluşturma open ("deneme.txt", "w") kodunu yazacağız. Yani kullanıcı bu

kodu bizim yaptığımız uygulama içinde bize gönderecek. Bu bir Pyhon kodudur.

Aşağıda sol tarafta dosya adlarına baktığımızda sadece ilkdosyam.py

görünmektedir.

Şimdi terminal ekranında kodu girelim ve tekrar dosya isimlerinin olduğu yere

bakalım. Çalışmayı kaydedip kodu öyle girmeniz gerekiyor. Yoksa kod

çalışmayacaktır.

Gördüğünüz gibi dışarıdan bir kullanıcı uygulamanızda dosya oluşturmayı

başardı. O halde yazdığınız programda kullanıcılar, eğer bir web üzerinde çalışan

bir uygulama yapmışsanız sizin bütün bilgilerinizi ele geçirebilir. Sonrasını siz

düşünün.

41

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


exec() Fonksiyonu:

Değer döndüren ifadeleri eval() ile işletebiliriz ama bir ifade (expression)

olmayan, yani değer döndürmeyen komutları çalıştırmak

için exec() fonksiyonuna ihtiyacımız var.

eval ve exec fonksiyonlarının çalışma mantıkları aynı diyebiliriz. Ancak eval

ile yapamadığımız bazı şeyleri exec ile yapabiliriz.

Örnek olarak değişken ataması yapalım. Bunu eval fonksiyonu ile

yapamıyoruz. Aşağıdaki gibi kodu yazalım ve terminalde çalıştıralım.

Özetle eval ve exec kodları ilk başta kullanışlı gibi görünseler de çok sık

kullanılmamalıdırlar. İşe yaradığı durumlar olabilir ama bir probleminiz varsa

farklı kodlarla bunları çözmenizi tavsiye ederim. Aynı zamanda bu fonksiyonlar;

• Kodu okumayı zorlaştırır.

• Kodu test etmeyi ve hataları bulmayı zorlaştırır.

• Güvenlik açığı oluşturur.

.format() fonksiyonu:

Bu fonksiyon sayesinde yazmış olduğumuz karakter dizisi içinde istediğimiz

yerde yazılar yazdırabiliriz. Bunun dışında farklı biçimlendirme türleri de

bulunmaktadır.

Basit bir örnekle çalışma mantığını anlamaya çalışalım. Aşağıdaki gibi

kodumuzu yazalım.

Karakter dizimizi yazarken mavi renkte süslü parantez kullandığımıza dikkat

edin. Burada amacımız format fonksiyonundan alacağımız ifadeyi yazdırmaktır.

Karakter dizimiz bittikten sonra .format() fonksiyonunu yazdık. Yani zafer

şeklinde yazılan karakter dizisini içeride yazmış olduğum karakter dizisinin mavi

renkteki parantezine göster şeklinde ifade kullanmış olduk. Bunun gibi

istediğimiz kadar kelimeyi yazdırabiliriz.

42

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Format fonksiyonu ile bir form kontrol ekranı yapalım.

1.,2. ve 3. satırda kullanıcıdan input fonksiyonu sayesinde bilgileri alıyoruz.

Bu bilgiler değişkenlere aktarıldı.

5. satırda print komutunda üç tırnak kullanarak çıktılarımızda yazıların alt alta

olmasını sağladık.

Kullanıcının girdiği bilgileri ekranda çıkarmak için mavi renkte yazılmış süslü

parantezleri ilgili yerlere yerleştirdik.

10. satırda dikkat ederseniz üç tırnaktan sonra .format() komutunu yazdık.

Komutun içinde önce hangi bilgiyi yazdırmak istiyorsak o değişkenin adını

yazdığımıza dikkat edin. Daha sonra diğer değişkenlerin adını virgül koyarak

sırayla yazdık.

Terminal ekranında çalıştıralım. Yalnız çalıştırırken sırayla bilgilerin bizden

girilmesi istenecektir. Hepsini yazdıktan sonra neler olduğunu görelim.

Bu fonksiyonu isterseniz aşağıdaki gibi sadece f harfi yazarak kullanabilirsiniz.

Parantez içlerine değişkenlerin adını yazdığımıza dikkat edin.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

43

ZAFER ÇOPUR


Parantez içinde girilen kelimeleri sıra olmadan da alabiliriz.

Format fonksiyonumuzda ilk sırada çok ve ikinci sırada dünya yazdık. Çok

dediğimiz ifade fonksiyon içinde 0. sırada olmaktadır. O yüzden mavi süslü

parantez içinde sıfır yazarak aslında bunu çağırmış olduk. Bu şekilde sırası

olmadan da yazabiliriz.

Aynı olayı daha farklı bir şekilde yapabiliriz. Bu sefer değişkeni format

fonksiyonu içinde atayabilir ve değişkenle değerimizi istediğimiz yere

yazdırabiliriz.

Biçimlendirme Türleri

Parantez içine yazılan farklı semboller sayesinde yazılarımızı değişik türlerde

biçimlendirebiliriz.

:< , :> , :^ , :

Format fonksiyonuyla çağırdığımız sayı veya karakterlerin önüne veya

arkasına istediğimiz kadar boşluk oluşturmamızı sağlar.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

44

ZAFER ÇOPUR


1. ve 2. satırda mavi parantez içine yazılan ifadeler aslında aynı şeyi ifade

etmektedir. Eğer format fonksiyonu içinde yazdıracağınız ifadeler aynı sırada

kullanılacaksa 1. satır gibi kodlarınızı kullanabilirsiniz. Burada eğer yazdırılan

kelime olursa boşluk sağ tarafta, sayı olursa sol tarafta oluyor.

3. satırda format içinde yazılan sırayla olacağı için sadece iki nokta ile

başladım. Orada küçüktür sembolü kullandığım için hem kelime hem de sayıdan

sonra boşluk bıraktı.

4. satırda büyüktür sembolü kullandığım için kelime ve sayıdan önce boşluk

bıraktı.

5. satırda kelime ve sayı girilen boşluk değerine göre ortalandı.

:=

Format fonksiyonu içinde - işareti ile yazılan sayının arasına boşluk

koymamızı sağlar.

:+

Normal sayıların işaretinin artı olarak çıkmasını sağlar. Eksi sayı yazıldığında

aynısı çıkmaktadır.

:-

Yazdırılacak sayının negatif olduğunu vurgulamak için kullanılır. Pozitif değer

içinde kullanırsanız o zaman işaretsiz yazacaktır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

45

ZAFER ÇOPUR


:, , :_

Sayının bölüklerine virgül veya alt çizgi koymamızı sağlarlar.

:b , :d , :o , :x , :X

Girilen sayıları farklı tabanlarda yazmamızı sağlarlar. Şu an kullandığımız

sayılar onluk sayma sistemi yani onluk tabanda yazılan sayılardır. Bunları farklı

biçimlere çevirmemiz gerekebilir. Format fonksiyonuyla bunu yapabiliriz.

:b ikilik tabanda :d İkilik tabanı onluk tabanda :o sekizlik tabanda

:x onaltılık tabanda küçük harf :X onaltılık tabanda büyük harf

:e , :E

Girilen sayıları bilimsel şekilde yazmamızı sağlar. e+ yada E+ ifadeleri 10

tabanında şeklinde okunur. Sonraki gelen 03 ise 10 üssü3 demektir. Yani e den

önce gelen sayıyla bu 10 üssü 2’yi çarp manasındadır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

46

ZAFER ÇOPUR


:f

Girilen sayıyı ondalık sayı olarak yazmamızı sağlar. Eğer f den önce .2 gibi bir

ifade olursa ondalık kısımda iki basamak alır.

:%

Sayıları yüzde şeklinde yazmamızı sağlar. Eğer ondalık olarak cevap

yazılmasını isterseniz :.0% şeklinde yazmanız gerekiyor.

:c

Unicode karakterine dönüştürür.

:g , :G

Girilen ifadeleri genel formatta yazmamızı sağlar.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

47

ZAFER ÇOPUR


Format fonksiyonunda biçimlendirme için kullandığımız kısa yolları burada

görebilirsiniz.

:< Sağ tarafa boşluk koyar

:> Sol tarafa boşluk koyar

:^ Ortalar

:= Eksi işaretle sayının arasına boşluk koyar

:+ Pozitif sayıysa önüne + işareti yazdırır

:- Yalnızca negatif değerler için Eksi işareti kullanın

: Kelimelerden sonra veya sayılardan önce boşluk koyar

:, Basamakların bölüklerine virgül koyar

:_

Basamakların bölüklerine alt çizgi koyar

:b İkili biçim

:c Değeri karşılık gelen unicode karakterine dönüştürür

:d Ondalık biçim

:e Bilimsel format, küçük harf e ile

:E Büyük harf E ile bilimsel format

:f Ondalık sayı şeklinde getirir

:g Genel format

:G Genel format (bilimsel gösterimler için büyük harf e kullanarak)

:o Sekizli biçimi

:x Hex biçimi, küçük harf

:X Hex biçimi, büyük harf

:n Sayı biçimi

:% Yüzde biçimi

https://www.youtube.com/c/ELHarezmiBilgelikEvi

48

ZAFER ÇOPUR


İf

Koşullu durumları ifade etmek için üç adet deyim vardır. Bunlar if, else ve eliftir.

Bu ifade eğer anlamına gelmektedir. Mesela eğer okula geldin ise şeklinde bir

cümleye başladığımızı düşünelim. Böylece bir koşula bağladığımız durum oluştu.

Kod yazarken eğer ifadesi de aynı bu şekilde ifade edilmektedir.

Mesela;

Koşullu Durumlar(İf-Else-Elif)

İf Ahmetin_yasi <5 gibi bir ifade yazdığımızda, bunu eğer Ahmet’in yaşı 5’ten

küçük ise gibi okuyoruz. Daha sonra kodumuza, böyle bir durum oluştuğunda

Ahmet süt içsin yazabiliriz. Python böyle bir durumla karşılaşırsa, Ahmet süt içsin

diye bize çıktı verecektir.

Şimdi koşullu durumlarda kullanabileceğimiz işaretleri görelim.

İşaret Anlamı

> Büyüktür

< Küçüktür

>= büyük eşittir

<= küçük eşittir

== eşittir

!= eşit değildir

Python programında nasıl if’li bir cümle yazabiliriz inceleyelim.

1. satırda yaşınız değişkenini oluşturduk. Yalnız kullanıcıdan input ile alacağımız

bilgiyi sayıya çevirmek için int kodunu kullandık.

2. satırda if’li bir cümle nasıl yazılır görüyorsunuz. İf’ten sonra parantezin içine

hangi durumun inceleneceğini yazdık. Buradaki parantez yazılmadığı zamanda

olabiliyor. Sonrasında iki nokta üst üste sembolünü kullandık. Enter’e basıp alt

satıra iniyoruz.

3. satırda bir girdi yani biraz boşluk oluştu. Böylece yazacağımız print

kodumuzun if koşuluna bağlanmış oldu. Biraz sonra neden böyle dediğimi bir örnek

üzerinde anlatacağım.

49

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Kodumuzu çalıştıralım ve terminal ekranında 18’den küçük bir sayı girelim.

Gördüğünüz gibi kodumuz çalıştı. Şimdi 3. maddede girdi oluştuğundan

bahsetmiştim. Kodumuzu girdi olmadan çalıştıralım.

3. maddemizde print yazısına dikkat edin. Boşluk olmadan yazıldığı için hata

verdi. İf şeklinde ifadeyle başladığımız için girdili bir ifade yazılması isteniyor.

Şimdi aşağıdaki gibi kodumuzu yazalım. Cevap olarak önce 55 daha sonra 9

giriyoruz.

İki farklı cevapta da Hoş Geldiniz yazısı karşımıza çıktı. O halde girdinin

önemini görmüş olmalısınız.

Else

Bu ifadeyi değilse şeklinde okuyabiliriz. İf koşulunu sağlamayan bir durum

varsa o zaman else’yi kullanıyoruz.

Mesela Ahmet’in yaşı 5’ten küçük ise süt içsin şeklinde bir cümle

kullandığımızda hemen aklımıza, ya Ahmet’in yaşı 5’ten küçük değil ise

şeklinde bir cümle gelebilir. Bu örnekte olduğu gibi değil ise şeklinde bir ifade

olduğunda biz else koşul ifadesini kullanacağız.

O halde else koşul ifadesi if koşul ifadesi olmadığı durumlarda bize yardımcı

oluyor.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

50

ZAFER ÇOPUR


Bunu detaylı incelemek için aşağıdaki kodu yazalım.

4. maddede else iki nokta şeklinde kodumuzu yazdık ve alt satıra geçtik. Yine

girdi oluşturarak print komutuna giriş serbest yazdık. İf ve else yazılarının aynı

hizada olduğuna dikkat ediniz. Terminal ekranına 18’den büyük bir sayı yazarak

kodun çalıştığını görelim.

Elif

Elif ifadesinin kullanılması için önce if ifadesinin kullanılması gerekiyor.

İfademizde birden fazla koşul varsa if’ten sonra elif kullanmamız gerekiyor.

Kullanıcının cinsiyetini yazmasını isteyelim. Kodumuzu yazarken sadece if

koşulunu kullanacağız.

Sorumuzun cevabını kullanıcı üç farklı şekilde girebilir. Biz kullanıcıya e ya

da k yazmasını istedik. Ancak kullanıcı bakalım farklı bir harf girdiğimde ne

olacak diye düşünebilir. O yüzden orada else koşulu kullandık. Şimdi terminalde

e ve k olmak üzere iki farklı cevabı yazalım.

Birinci durumda e yazdığımızda bize iki tane çıktı verdiğini görüyorsunuz.

Normalde kullanıcı doğru yazdı o yüzden else koşulunun ekranda çıkmaması

gerekiyordu. İkinci durumda ise k yazdığımızda çıktımız doğru çalıştı.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

51

ZAFER ÇOPUR


Bu örnekte gördüğümüz gibi else komutu bir üstteki if ifadesini kendisine aldı.

Diğer if ifadesini hiç okumadı. Eğer biz burada ikiden daha fazla if koşulu

kullansaydık daha büyük sıkıntılar oluşacaktı.

Böyle bir durumda bize elif koşulu yardımcı olacaktır. İf koşulundan sonra elif

koşulu yazarsak böylece else hangi if koşuluna bağlandığını anlayacaktır.

Şimdi kodumuzu aşağıdaki gibi yazalım. Terminalde harfleri girelim.

Gördüğünüz gibi else koşulundan önce birden fazla koşul varsa elif koşulunu

kullanmanız gerekiyor.

İç İçe Geçmiş İf Koşullu ifadeler ( Nesned İf)

Bazı durumlarda if-eğer bize yeterli gelmeyebilir. Böyle durumlarda iç içe if

koşullu ifadeleri kullanmamız gerekiyor.

Basit bir şifreli giriş yapmaya çalışalım. Kullanıcı adı ve şifresini yazmasını

istediğimiz kişinin bilgilerine göre sisteme giriş yapmasını sağlayalım. Eğer

bilgileri yanlışsa hangi bilginin yanlış olduğunu ona söyleyelim.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

52

ZAFER ÇOPUR


Aşağıdaki kodu yazalım.

1. ve 2. satırda kullanıcıdan bilgileri aldık ve değişkenlere aktardık.

3. ve 8. satırdaki if ve else koşullarının aynı hizada olduğuna dikkat ediniz. Bu

ikisi birbirine bağlıdır. 3. satırda kullanıcı adı elharezmi ise içerideki kodları

çalıştır 8. satırda ise böyle değilse hatalı kullanıcı adı yazdır diyoruz.

4. satırda bulunan if ifadesi dikkat ederseniz 3. satırdaki if ifadesinin içindedir.

Yani 3. satırdaki kullanıcı adı elharezmi olduğunda bu satırdaki if ifadesi

çalışmaya başlayacaktır. Kullanıcı adını doğru yazan bir kişinin şimdi şifresi

araştırılacak. Şifresi 12345 ise başarılı giriş yaptınız değilse hatalı şifre girdiniz

şeklinde yazı yazdıracaktır. Dikkat ederseniz 4. satırdaki if ile 6. satırdaki else

aynı hizadadır. Böylece hangi else’nin kime ait olduğunu rahat bir şekilde

anlayabilirsiniz.

Koşul İfadelerinde And ve Or Operatörleri

And ifadesi ve anlamında, or ifadesi ise veya anlamında kullanılmaktadır. Ve

ifadesi aynı anda gerçekleşen olaylarda, veya ifadesi ise olaylardan en az

birisinin olması durumunda kullanılmaktadır. And ve or ifadeleri mantıksal

işleçlerdir. Bir de not ifadesi vardır. İlerleyen derslerimizde not ifadesini detaylı

göreceğiz.

Ve ile ilgili bir örnek verelim. Tasarladığımız oyunda karakterimizin 50 puan

alması aynı zamanda bitiş kapısına gelmesi gerekiyor. Bu ikisi aynı anda olması

gerekiyor. O halde kodumuzu yazarken 50 puan aldığında ve kapıya geldiğinde

şeklinde ifade kullanmamız gerekiyor.

Veya ile ilgili bir örnek verelim. Tasarladığımız oyunda karakterimizin mermi

ya da bombaya değdiğinde oyunun bitmesini istiyoruz. O halde burada iki tane

durumdan birisinin olması oyunu bitirecektir. Bu olayın kodunu yazmak için

mermi veya bombaya değdiğinde şeklinde ifade kullanmamız gerekiyor.

Bir önceki nesned if çalışmamızda kullanıcı girişi yaptırmıştık. Aynı çalışmayı

şimdi and operatörü ile yaptırmaya çalışalım.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

53

ZAFER ÇOPUR


Aşağıdaki kodu yazalım.

1. ve 2. satırda kullanıcıdan bilgileri aldık ve değişkenlere aktardık.

3. satırda kullanıcı adı ve şifreyi and operatörü ile bir araya getirdik. Burada

parantezlerin nasıl yazıldığına dikkat edin. Böylece iki bilgi bizim istediğimiz

gibi olursa ancak giriş yapılabilir.

Şimdi birden fazla kullanıcının giriş yapmasını tasarlayalım. Sadece kullanıcı

adını isteyelim. Aşağıdaki gibi kodumuzu yazıyoruz.

2. satırda iki tane kullanıcı adı tanımladık. Kodumuzun arasına or (veya) ifadesi

yerleştirerek bunlardan birisinin olması bize yeterli anlamını kullandık. Böylece

bunlardan herhangi birinin girilmesinde kullanıcı girişi yapılacaktır.

Or ifadesi sadece bir tanesinin aynı olması gibi bir anlam çıkmasın. Yaptığımız

çalışmaya göre bütün ifadelerde doğru olursa yine geçerli olmaktadır. Yani en az

bir tanesi aynı olması yeterlidir anlaşılması gerekiyor. Mesela aşağıdaki gibi

kodu girelim. Bütün sorulara kodumuzda bulunan değerlerin cevaplarını

yazalım. Hepsi doğru olduğunda seçildiniz yazacaktır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

54

ZAFER ÇOPUR


İki tane döngü vardır. Bunlar; while ve for döngüleridir.

Döngü Nedir?

Bu dersimize kadar kodlarımızın bir kez çalıştığına dikkat etmişsinizdir. Bazı

durumlarda aynı kodların birden fazla çalışmasını isteyebiliriz.

Mesela bir zikir programı yapıyoruz. Ekranımızda 1000 defa Allahu Ekber

yazılmasını istiyoruz. Eğer bunu kodlama çalışmamızda 1000 defa yazmaya

kalkarsak çok uzun zaman ve dosyanın boyutu artacaktır. Bunu kısa yoldan yapmak

için döngülerden yararlanırız.

Ya da kullanıcı girişi olan bir web site yaptık diyelim. Kullanıcı adı ve şifreyi

sürekli olarak yanlış giren bir kişiye şifreyi tekrar girmesi gerektiğini belirten

ifadeyi sürekli olarak çıkartabiliriz.

While

Döngüler (While,for)

Yazılan koşul doğru olduğu sürece while bloğu içerisinde tanımladığımız kod

satırlarını tekrarlatabiliriz.

Şimdi aşağıdaki kodu yazalım.

1. satırda zikir adında bir değişken oluşturduk. Değerine 1 sayısını atadık.

2. satırda while döngüsü içinde zikir 1’e eşit olursa ifadesini kullandık.

3. satırda while döngüsü içindeki şart gerçekleşmişse ekranda Allahu Ekber

yazmasını istedik.

Koşulumuz gerçekleştiği için terminal ekranında sonsuza kadar Allahu Ekber

yazdığını göreceksiniz. Böylece sonsuz bir döngü oluşturmuş olduk.

Kodumuzu durdurana kadar çalışmaya devam edecektir. Bunun için terminal

ekranına tıklıyoruz Ctrl ve C ( Ctrl+C) tuşlarına aynı anda basıyoruz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

55

ZAFER ÇOPUR


Şimdi ekranımıza istediğimiz sayıda Allahu Ekber yazdıralım. Bunun için

aşağıdaki kodu yazalım.

1. satırda zikir değişkenimiz 1 sayısına eşit olsun istedik.

2. satırda zikir değişkenimizin sayısının 5’ten küçük olma durumunda while

döngüsünün çalışmasını istedik.

3. satırda zikir değişkenimizin 1’er 1’er artmasını için +=1 şeklinde ifade

kullandık. Yani başlangıçta zikir değişkeni 1’e eşitti. Döngü içine girildiğinde bu

değişken önce 2 oldu. Bu sayı 5’ten küçük olduğu için döngü yine çalıştı ve bu

sefer değişkenimiz 3 oldu. Bu şekilde değişken 5 olduğunda döngüye tekrar

girmeyeceği için artık kodumuz duracaktır.

Terminal ekranında 4 defa Allahu Ekber yazdığına dikkat edin.

Aynı mantıkla ekranımızda sayıları yazdıralım. Bunun için aşağıdaki kodu

yazalım.

a isminde oluşturduğumuz değişkenimiz, 10’dan küçük olduğunda 1 artmasını

istedik. Yalnız bir önceki çalışmamızdan farklı olarak print komutunu arttırma

komutundan önce kullandık. Bunu yapmamızın amacı a değişkenindeki 1

sayısını ekrana yazdırmaktı. Eğer a değişkenini önce arttırıp sonra yazdırsaydım

ekranda 1 sayısı gözükmeyecekti.

Sayımızın 2 artarak yazılması için +=2 olacak şekilde yazmamız gerekiyor.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

56

ZAFER ÇOPUR


Sayıları yazdırdığımızda tek ya da çift olduklarını belirtmek için aşağıdaki

kodu yazalım.

While döngüsü içerisinde if ve else koşul ifadelerini kullanarak çalışmamızı

gerçekleştirdik.

3. satırda a%2==0 şeklinde bir ifade geçtiğini görüyoruz. % sembolünün

anlamı bölme işleminde kalanı bulmaktır. Yanı a değişkeninde bulunan sayıyı

2’ye böldüğümüzde kalan 0’ a eşit mi şeklinde bir ifade olmaktadır. Eğer kalan 0

(sıfır) olursa bu sayı her zaman 2’ye tam olarak bölünebilmektedir. Matematikte

kullandığımız bu kuralı biz de kodlamada kullandık.

4. satırda eğer 3. satırdaki durum gerçekleşmişse ekrana a değişkeninin

değerini ve sonrasında çift sayıdır ifadesini yazdır dedik. Burada f harfi olarak

format fonksiyonunun kısaltılmış halini kullandık.

5. satırda kalan 0 değilse anlamını kullanmak için else ifadesini kullandık.

6. satırda ekrana tek sayı ifadesini yazdırdık.

7. satırda a değişkenini 1 arttırarak işleme devam etik. Döngü içerisinde bu

arttırma işlemini yaptığımıza dikkat edin. Bunu if’le aynı hizada olduğundan

dolayı anladık.

Terminal ekranımızda kodumuzun düzgün çalıştığını görmektesiniz.

For

For döngüsü while döngüsünden sonra çıkmıştır. Bir döngü yaptırmak

istediğimizde ikisini de kullanabiliyoruz. Ancak kodları yazarken for döngüsü

kodların daha düzenli ve daha okunaklı yazılmasını sağlıyor diyebiliriz.

Örnekleri inceledikçe siz de hangi döngüyü kullanacağınızı seçebilirsiniz.

For döngülerini bir eleman grubundaki (list, tuple, dictionary, set ya da string)

her bir elemana ulaşmak için kullanırız.

For döngüsünün kalıbını öğrenmek için örneklerimizi incelemeniz anlamında

yardımcı olacaktır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

57

ZAFER ÇOPUR


1. satırda isim adında bir değişken oluşturduk ve EL HAREZMI karakterini

tanımladık.

2. satırda for döngüsü yazdık. İsim değişkeninin içindeki elemanları harf

ismindeki değişkene aktar dedik.

Burada kullanılan in Türkçe olarak içinde demektir. O yüzden isim

değişkeninin içinde şeklinde ifade oluştu. İsim değişkeninin içindeki yazılan her

şeyi almak için harf isminde bir değişken oluşturduk ve for döngüsü ile her şeyi

bunun içine aktardık.

3. satırda harf değişkenimizin içine yerleştirdiğimiz her şeyi ekranda yazdırdık.

Terminal ekranında gördüğünüz gibi değişkenimizin içinde yazan bütün

elemanları tek tek yazdırmış olduk.

Dikkat ederseniz EL HAREZMİ ifadesi içerisindeki boşlukla beraber 10 tane

karakter içermektedir. For döngüsü o yüzden 10 defa tekrar etmiş oldu.

Yukarıda bulunan örnekte her harfi iki defa yazdırmak istersek aşağıdaki gibi

kodu yazmamız gerekiyor.

Print yazdırma komutunda 2 ile çarpma şeklinde yazmamız bunu sağladı.

İsterseniz 2 yerine farklı sayılar yazabilirsiniz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

58

ZAFER ÇOPUR


Sayılarla benzer bir örnek yapalım.

1. satırda sayı isminde bir değişken oluşturduk ve 123456 şeklinde bir karakter

yazdık.

2. satırda for döngüsü kullandık.

3. satırda ekrana yazdırırken sonuç değişkenini önce int yaptık. Yani sayıya

çevirdik ve daha sonra 5 ile çarptık. Böylece 123456 diye yazmış olduğumuz

sayımızın her rakamı 5 ile çarpılmış oldu. Eğer int olarak yazmasaydık aşağıdaki

gibi olurdu.

Sayı değişkenimizin içine sayıları yazarken tırnak içine aldığımızı fark

etmişsinizdir. Yani sayıları karakter dizisine çevirerek işlem yaptık. Bu şekilde

yapmasaydık hata alacaktık.

Gördüğünüz gibi int ( tam sayı ) olan değişkenlerde döngü kuramıyoruz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

59

ZAFER ÇOPUR


Range,Not,True,False,Pass,Break,Continue

Range

Kelime anlamı olarak aralık demektir. Mesela 0 ile 10 arasındaki sayıları range

yazarak hızlıca ekranda yazdırabiliriz.

1. satırda for döngüsü kalıbımıza göre bir i değişkeni tanımlandı. Bu i değişkeni

range fonksiyonunun içindeki ifadeye göre değer alması sağlandı.

2. satırda bu değerler terminal ekranına yazdırıldı.

Terminal ekranına dikkat ederseniz 0’dan başladı ancak 10 sayısını almadı.

Kodlama yaparken buna dikkat edelim.

Eğer sayınızın 0’dan başlamasını istiyorsanız

range içine 0 yazmanıza gerek yoktur.

Yukarıda sayıları 1’er arttırarak yazdık. Mesela şimdi 2’şer arttırarak nasıl

yazabileceğimizi görelim.

Range fonksiyonu içerisine 3,12,2 şeklinde ifade yazdık. Yani 3 ile 12 arasındaki

sayıları 3’ten başlayarak 2’şer arttır ve bu sayıları al dedik. Print komutu ile ekrana

bu değerleri aldığını yazdırarak gördük.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

60

ZAFER ÇOPUR


Geriye doğru saydırma işlemi için aşağıdaki kodu yazalım.

Range fonksiyonu içerisine 10’dan 0’a doğru 1’er azalt şeklinde ifade yazmış

olduk. Orada bulunan -1 ifadesi çıkarma olmaktadır.

Aşağıdaki gibi kodumuzu yazalım ve range fonksiyonunun nasıl işlediğini

görelim.

For döngüsü belirli sayıda işlemi yaptırmak için kullanılıyor demiştik. Burada

bulunan range sayesinde i değişkenine 0,1,2,3 değerlerini gönderdik. Yani 4 defa

tekrar olacak ifadesi yapmış olduk. For döngüsünün içinde yer alan print komutu

böylece 4 defa tekrarlanmış oldu. Daha önceki çalışmalarımızda i değerlerini

yazdırmıştık. Burada ise i yerine i sayısı kadar Allahu Ekber yazdırdık.

Daha önce print fonksiyonunda yıldızlı parametre özelliği kullanmıştık. Range

içinde yıldız kullanabiliyoruz. Şimdi aşağıdaki gibi kodumuzu yazalım.

range fonksiyonunu print içine yazarken önüne yıldız sembolü yerleştirdik.

Böylece yıldızdan gelen ifadenin elemanlarının yan yana yazılmasını sağladık.

Şimdi bu sayıların arasına sep komutu ile virgül yazalım.

Print fonksiyonunu anlattığımız derste yaptığımız çalışmayı daha kısa olarak

range kodu ile yapabildik.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

61

ZAFER ÇOPUR


Not, True, False

Kodlarımızın içinde not ifadesini kullandığımızda istediğimiz ifadenin tam

tersi anlamı çıkmaktadır. Mesela not elma şeklinde yazarsak elma değil anlamı

çıkmaktadır.

True (doğru) ve False (yanlış) ifadeleri Pythonda boolean değerleri olarak

geçmektedir.

Veri tipi sorgulandığında bool olarak geçmektedir. Aşağıdaki terminalde veri

tipini görmektesiniz.

Şimdi hepsini birlikte kullanabileceğimiz bir sayı tahmin oyunu yapalım.

1. satırda while döngüsü kullandık. İçine True mantıksal değerini atadık.

Böylece while döngüsünün açık olduğunu ve döngünün içine girebileceğimizi

ifade etmiş olduk. Eğer oraya False ifadesi kullansaydık döngü içine

giremeyecektik.

2. satırda terminal ekranında bir sayı girilmesini istedik.

3. satırda dikkat ederseniz not ifadesi kullandık. Yani girilen sayı 5’e eşit

değilse olarak cümle değişmiş oldu. İnput sayesinde girilen sayı karakter dizisi

ile alınmıştı bunu sayıya çevirmek için int komutunu kullandık.

4. satırda eğer 5’ten farklı bir sayı girilmişse tekrar deneyin yazısı çıkacaktır.

5. satırda if yerindeki cümlemiz sağlanmazsa anlamındaki elseyi kullandık.

6. satırda 5 sayısı girilirse doğru tahmin şeklinde ekrana yazdırdık.

Terminal ekranında while

döngüsü sonsuza kadar çalıştığı

için sürekli olarak sayı girmemiz

istenecektir. Kodların durması

için terminalde herhangi bir yere

tıkladıktan sonra Ctrl+C tuşuna

basmayı unutmayın.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

62

ZAFER ÇOPUR


Pass

Türkçede geçmek anlamında kullanılır. Pyhton üzerinde kullandığımızda yine

aynı anlamda kullanılmaktadır. Kodumuzda yazdığımız bir yerin dikkate

alınmadan geçilmesini istiyorsak bu deyimi kullanıyoruz.

3. satırda girilen yaş 18’den küçük olduğunda geçmesini istedik.

Terminal ekranına baktığımızda yaşı 19 girdiğimizde geçiş yapılmasını

isteyerek teşekkür etti. Ama 18’den küçük girdiğimizde pass dediğimiz için if

yazılı bloğu atlamış oldu ve sadece teşekkür yazısını çıkardı.

Continue

Türkçede devam etmek anlamındadır. Python üzerinde kullandığımızda

döngünün en başına tekrar dönmemizi sağlar. Daha önce pass ile ilgili bir örnek

vermiştim. Aynı örneği yazalım ve ikisi arasındaki farkı da görmüş oluruz.

Continue yazılan kodumuzun terminal ekranına baktığımızda yaşımızı 6

yazdığımızda Teşekkürler yazısını bize çıkarmadı. Çünkü döngünün en başına

tekrar dönmesini istedik. O yüzden bize tekrar yaşımızı girmemiz gerektiğin

söyleyen kod çalıştı. Pass yazdığımız yer ise sadece yazıldığı yerdeki if

komutunun geçilmesini sağladı.

For döngüsü ile bir örnek yapalım.

6’ya kadar sayılar yazılırken 4’ e geldiğinde döngünün başına git dediğimiz

için print komutu çalışmadı. 4 sayısı yazılmadığı için sıradaki sayıyla devam etti.

Peki burada continue yerine pass yazsaydık 4 sayısı yazar mıydı?

63

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Break

Türkçede ara, kırılma gibi anlamlara gelmektedir. Python üzerinde ise içinde

bulunduğu döngüden çıkmamızı sağlar. Önceki derslerimizde sayı tahmin oyunu

yapmıştım. Orada sayıyı doğru tahmin etsek bile tekrar sayı girmemiz

isteniyordu. O yüzden Ctrl+C tuşuna basmanızı istemiştim. Şimdi aynı oyunu

tekrar yapalım ve bu sefer break sayesinde oyunun nasıl sonlandığını görelim.

7. satırda else’nin içine break yazarak doğru tahmin olduğunda programı

sonlandırmış oldum. Böylece döngünün içinden çıktık diyebiliriz.

Aşağıdaki kodu yazalım ve başka bir örneği inceleyelim.

Bu örneğimizde range komutlu ile 100’e kadar sayı yazılmasını istedim. Ama

orada eğer 4’e kadar gelirsen break komutu ile döngüden çık dedim. Böylece

diğer sayılar yazılmamış oldu.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

64

ZAFER ÇOPUR


Listeler (List)

Türkçe’mizde kullanılan liste kavramını az çok biliyorsunuzdur. Mesela ev

kazananların listesi dediğimiz zaman ne anlama geldiğini anlamışsınızdır.

Programlamada listeler birden fazla veri türünü bir arada bulunduran, köşeli

parantez ile gösterilen ve öğeleri değiştirilebilen veri türlerindendir.

Öncelikle liste oluşturmanın nasıl olduğunu görmek için aşağıdaki kodumuzu

yazalım.

1. satırda elemanlar isminde bir liste adı oluşturduk. Listenin adını yazdıktan

sonra eşittir (=) sembolünü yazıyoruz. Daha sonra listemizin içinde olması

gerekenleri köşeli parantez içine yazmamız gerekiyor. Aynı zamanda aralarına

virgül yazıyoruz.

2. satırda print fonksiyonunu çalıştırıyoruz. Terminal ekranında köşeli parantez

şeklinde çıktı verdiği için liste olduğunu anlıyoruz.

Len()

len() fonksiyonu, İngilizce lengthin (uzunluk) kısaltılmış halidir. Şimdi yukarıda

yazdığımız listenin içinde kaç tane eleman yazıldığını len fonksiyonuyla bulalım.

2. satırda a değişkeni tanımladık. Daha sonra len(elemanlar) şeklinde yazarak

elemanların uzunluğunu sorguladı. Bulduğumuz değeri a değişkenine gönderdik.

3. satırda değişkenimizin değerini terminalde yazdırdık.

İstenilen Liste Öğelerine Erişme

Listemizin içinde yer alan elemanlar 0’dan başlayarak sıralanır. Aşağıdaki

kodumuzu yazalım.

2. ve 3. satırda elemanlar yazısından sonra köşeli parantez içinde sayı yazdık.

Böyle bir durumda köşeli parantez kullanmak öğenin seçilmesi demektir. İçine

yazdığımız 0 sayısı da listenin 0. sıradaki öğenin alınması demektir.

65

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Liste öğelerinde 0’dan başlayarak istediğimiz yere kadar öğeleri seçebiliriz.

2. satırda ilk iki elemanı almak için 2 sayısının önüne : (iki nokta) sembolü

yaptık. Böylece ilk iki öğemizi yazdırmış olduk.

Eğer buradaki gibi iki noktadan sonra sayı yazmazsak bütün öğeler

yazdırılacaktır.

Liste öğelerini istediğimiz sıradan istediğimiz aralıklarla yazdırabiliriz.

1. satırda a isminde bir liste tanımladık.

2. satırda print fonksiyonunun içine a listesini yazdır derken içerisine şart

koyduk. 5:10:2 şeklinde yazarken 5. öğeden 10. öğeye kadar 2 atlayarak yaz

şeklinde ifade etmiş olduk.

Terminal ekranımızda 5. öğemiz 6 olduğu için ilk altı sayısı çıktı ve daha sonra

2’şer atlayarak 10’a kadar sayılar yazıldı. Unutmayın listelerde 0. öğe ilk öğedir.

Liste öğelerini baştan sona kadar istediğiniz aralıklarla yazmak isteseniz

aşağıdaki gibi kodlarımızı yazabilirsiniz.

2. satırda ::2 şeklinde yazarak tüm öğelerden en baştan başlayarak 2’şer yaz

dedik.

Liste öğelerini tersten istediğimiz aralıklarda yazmak istersek aşağıdaki gibi

kodlarımızı yazmalıyız.

Bir önceki kodumuzdan tek farkı 2’nin önüne eksi yazmamızdır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

66

ZAFER ÇOPUR


Listemizi tersten yazmak için aşağıdaki kodu yazalım.

2. satırda listemizi -1 olarak tanımladığımızda tersten yazdırmış olduk.

Listeleri Aynı Yapma

Tanımlamış olduğum bir listenin öğelerini başka bir listenin öğeleri olarak da

tanımlayabiliriz. Aşağıdaki kodları yazalım.

1. satırda a isminde bir liste oluşturduk.

2. satırda b isminde bir liste oluşturduk ve a listesinin bütün elemanlarına eşit

olsun şeklinde ifademizi yazdık.

3. ve 4. satırda listelerimizi yazdırdık.

Terminal ekranına baktığımızda her iki listenin de öğelerinin aynı olduğunu

görmüş olduk.

Liste İçinde Liste

Aşağıdaki kodu yazalım ve nasıl olduğunu inceleyelim.

1. satırda listeye ait olan öğeleri köşeli parantez içinde gösteriyorduk. Şimdi bu

satırda iç içe iki tane köşeli parantez kullanılmaktadır. Buradan liste içinde liste

olduğunu anlayabiliyoruz.

2. satırda elamanlar adındaki listemizin uzunluğunu alıyoruz ve 3. satırda bunu

terminale yazdırıyoruz. Ekranımızda 4 tane şeklinde cevap çıkıyor. Demek ki

içeride bulunan liste bir öğe olarak kabul edilmektedir. İçinde 4 tane ya da farklı

sayıda öğe bulunması önemli değildir.

4. ve 5. satırlarda listemizin 2. ve 3. sıradaki öğelerini yazmasını istedik.

Özellikle 3. öğemizin nasıl çıktığına ayrıca dikkat edin.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

67

ZAFER ÇOPUR


Liste içinde bir çok liste olduğu durumları kullanabiliyoruz.

1. satırda elemanlar adında bir liste oluşturduk. İçinde 3 tane öğe olmasına

karşın her öğede de elemanlar bulunmaktadır. Yani liste içinde liste oluşturmuş

olduk.

2. satırda a değişkenine elemanlar listesinin 0. öğesinin 1. elemanını aktardık.

Bu kalıbı nasıl yazdığımıza dikkat edin. Böylece liste içinde her hangi bir

listeden nasıl öğe seçtiğimizi görmüş olduk.

3. satırda elemanlar listesinin 2. öğesinin 3. elemanını b değişkenine aktardık.

4. ve 5. satırda hangi elemanları aldığımızı ekrana yazdırdık.

Listelerde öğeler 0’dan başlamaktadır. Buna dikkat ederek hangi öğeyi nasıl

aldığımıza dikkat edin.

Karakter Dizisini Liste Yapma

Aşağıdaki kodu yazalım ve nasıl olduğunu inceleyelim.

1. satırda karakter dizimizi a değişkenine aktardık.

2. satırda list komutunun içine a yazarak karakterimizin listeye çevrilmesini ve

o şekilde terminal ekranına yazdırılmasını istedik.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

68

ZAFER ÇOPUR


İfadeleri Liste İçine Alma

Şimdi birden fazla karakter dizisini tek bir liste içinde gösterelim. Bunun için

aşağıdaki kodu yazalım.

1., 2. ve 3. satırlarda liste içine alınacak öğeleri değişkenlere gönderdik.

4. satırda list komutunun içine değişkenleri nasıl yazdığımıza dikkat edin. List

ifadesinin () parantezinin dışında değişkenlerinde () parantezi bulunmaktadır.

Liste Metotları

Liste metotlarını görmek için aşağıdaki gibi kodumuzu yazıyoruz.

Listeyle alakalı metotlar karşımıza çıktı. Burada __komutadı__ şeklinde

olanlar dışında komutlarımız var. Şimdi bunları göreceğiz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

69

ZAFER ÇOPUR


Append

Listenin sonuna bir tane eleman eklememizi sağlar.

1. satırda sayılar isminde liste tanımladık. Öğe olarak 1,2,3,4 yazdık.

2. satırda listeye eleman eklemek için yazdığımız kalıbımıza dikkat edin. Önce

listenin adını yazdık ve noktayla append koduna bağladık. Daha sonra parantez

içinde 5 yazarak bu sayıyı listeye ekle dedik.

3. satırda terminalde bakmak için yazdırdık.

Insert

Listede istediğimiz yere yeni bir öğe eklememizi sağlar.

1. satırda listemizi tanımladık.

2. satırda liste komutumuzu yazdık. İnsert komutunun içinde 3, elma ifadesini

kullandık. Yani listenin 3 numaralı yere elma öğesini ekle dedik. Listede ilk

öğesi sıfır şeklinde ifade edilirdi buna dikkat edelim.

Extend

Listeleri genişletmemizi sağlar. Yani başka bir listedeki öğeleri diğer bir listenin

sonuna eklememizi sağlar.

1. ve 2. satırda iki tane liste tanımladık.

3. satırda sayılar listesine ekleme yapacağımız için önce sayılar yazdık. Extend

kodunda harfler listesi yazarak bu listenin öğelerinin gideceğini ifade ettik.

4. satırda terminal ekranında yazdır diyerek kodumuzun nasıl çalıştığını

gördük.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

70

ZAFER ÇOPUR


Remove

Listede istediğimiz elemanı silmeyi sağlar.

2. satırda remove içine 3 yazarak bu öğenin silinmesini istedik.

Pop

Listede istediğimiz sıradaki öğeyi siler. Eğer sırasını belirtmezsek son öğeyi

siler.

2. satırda pop kodumuzun içine 0 yazdık. Yani sıfırıncı sıradaki öğeyi sil dedik.

Listemizde sıfırıncı olan 1 değeri olduğu için o silindi.

Burada pop kodumuza bir sıra numarası yazmadık. Böylece son sıradaki

sayımız silinmiş oldu.

Sort

Listenin elemanlarını alfabetik sıraya göre dizilmesini sağlar.

1. satırda 3 ile 4 farklı olacak şekilde listemizi tanımladık.

2. satırda sort komutu ile bunun düzeltilmesini istedik.

Aynı zamanda kelime yazdığımızda baş harfe göre düzenli olarak yazılacaktır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

71

ZAFER ÇOPUR


Reverse

Listedeki elemanların tersten yazılmasını sağlar.

Terminal ekranında görüldüğü gibi listemiz tersten yazıldı.

Index

Listedeki elemanlar sıralanırken 0. sıra ile başlıyor demiştik. Bu sıralar

sayıların index numarası olarak geçmektedir. Bu komut sayesinde istenilen liste

öğesinin index numarasını tespit edebiliyoruz.

2. satırda print fonksiyonunda index içinde 2 öğesinin listenin kaçıncı sırasında

olduğunu yazdırmak istedik.

Terminal ekranında 1 olduğu cevabı geldi. Unutmayın listelerde ilk öğe 0.

sıradadır yani index olarak 0’dır.

Count

Listenin içinde istediğiniz elemandan kaç tane olduğunu sorgulamanızı sağlar.

1. satırda aynı sayılardan fazla olacak şekilde listemizi tanımladık.

2. satırda count komutuyla 4 sayısından kaç tane var diye sorguladık.

Terminal ekranında yazdırdığımızda 6 tane olduğunu görmüş olduk.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

72

ZAFER ÇOPUR


Copy

Listeyi kopyalamamıza yarıyor. Yalnız kopyayı gönderdiğimiz listenin bütün

elemanları değişmektedir.

1. ve 2. satırda listelerimizi tanımladık.

3. satırda sayılar listesine harfler listesini kopyala dedik.

4. satırda terminal ekranında sayılar listesini çıktı aldırdık. Böylece sayıların

harfler listesine dönüştüğünü gördük.

Clear

Listedeki öğeleri silmemizi sağlar.

1. satırda listemizi tanımladık.

2. satırda sayılar listemizi silme kodu yazdık.

3. satırda terminal ekranında listemizi yeniden yazdık.

Terminal ekranında görüldüğü gibi içi boş bir liste oluştu. Böylece listenin

silindiğini görmüş olduk.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

73

ZAFER ÇOPUR


Demetler (Tuple)

Programlamada demetler birden fazla veri türünü bir arada bulunduran, parantez

ile gösterilen ve öğeleri değiştirilemeyen veri tiplerindendir.

Öncelikle demet oluşturmanın nasıl olduğunu görmek için aşağıdaki kodumuzu

yazalım.

1.satırda liste yazma mantığıyla aynı şekilde demet oluşturuyoruz. Arasındaki fark

burada normal parantez kullanmamızdır.

2. satırda terminale yazdırdığımızda parantez içinde öğelerin çıktığını

görüyorsunuz. Böylece demet olduğunu anlayabiliyoruz.

Demetleri aynı zamanda parantez olmadan da yazabiliyoruz. Araya virgül

koyduğumuzda zaten program onun demet olduğunu anlamaktadır. Çıktı

aldığımızda aynı şekilde çıktı verdiğini görüyoruz.

Yalnız ikinci durumda bir öğesi bulunan bir demet yazmak istersek program onu

değişken tanımlamak gibi algılayacaktır. Ama sağına bir virgül yazarsak yine demet

olarak algılar.

Demetlerde listelerdeki gibi değişiklik yapamıyoruz. Ancak listelerdeki gibi

öğelerine ulaşabiliyoruz. Bunun için listelerdeki kodları aynı şekilde kullanmamız

yeterli olacaktır. Yapı olarak zaten birbirine benzemektedir.

Listelerdeki kodları aynı şekilde kullandığımızda demet olarak çıktı vermektedir.

Çünkü elemanları demet olarak tanımlamıştık.

74

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Demet Metotları

Liste metotlarını görmek için aşağıdaki gibi kodumuzu yazıyoruz.

dir komutu içinde demet metotlarını görmek için İngilizce olarak tuple yazmamız

gerekiyor.

Burada aynı liste metotlarında olduğu gibi __komutadı__ şeklinde özel demetler

dışında iki tane demetimiz bulunmaktadır. Şimdi bunları göreceğiz.

Count

Listenin içinde istediğiniz elemandan kaç tane olduğunu sorgulamanızı sağlar.

Aşağıdaki kodumuzu yazalım.

1. satırda demet tanımladık.

2. satırda count komutuyla 2 sayısından kaç tane olduğunu bulduk.

İndex

Öğenin kaçıncı sırada olduğunu bulmamızı sağlar. Aşağıdaki kodumuzu yazalım.

1. satırda demetimizi tanımladık.

2. satırda 2 sayısının kaçıncı sırada olduğunu bulduk.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

75

ZAFER ÇOPUR


Sözlük (Dictionary)

Programlamada sözlükler birden fazla veri türünü bir arada bulunduran, süslü

parantez ile gösterilen ve öğeleri değiştirilebilen veri tiplerindendir.

Sözlükler keys(anahtar) ve value(değer) gibi iki kısımdan oluşur. Value kısmı

bütün veri türlerini içerebilir fakat keys kısmı sadece string (Karakter) ve int (Tam

sayı) tipinde olabilir.

Aşağıdaki gibi kodlarımızı yazarak sözlük veri tipinin nasıl yazıldığını

inceleyelim.

1. satırda a isminde biz sözlük tanımladık. Sözlük tanımlarken süslü parantez

içinde anahtar ve değerini yazacağımızı ifade etmiştik. Daha sonra bir karakter

dizisi şeklinde bir anahtar kelimemiz Python yazdık. Python kelimesinin değerini

karakter dizisi olan yılan şeklinde belirmiş olduk. Yalnız araya iki nokta üst üste

sembolünü yerleştirdiğimize dikkat edin. Böylece sözlük yapımız tamamlanmış

oldu.

2. satırda print fonksiyonu içine a sözlüğünde Python anahtarını çalıştır dedik.

Köşeli parantez içinde yazdığımıza dikkat etmelisiniz.

Terminal ekranında cevap olarak yılan ifadesi çıkmış oldu.

Örneğimizde sadece bir tane anahtar kullandık. Eğer birden fazla anahtar

kullanacaksak araya virgül koymamız gerekiyor. Yazacağımız bu anahtar ve

değerlerini yan yana ya da alt alta yazabiliyoruz. Sözlük yapılarında alt alta yazmak

işimizi daha da kolaylaştıracaktır. Aşağıdaki kodlarımızı yazarak bunu görelim.

Aynı kodu iki farklı şekilde nasıl yazdığımıza dikkat edin. Sağ tarafta bulunan kod

alt alta olduğu için bize daha kolaylık sağlamaktadır. Gerçek bir sözlük

yazdığımızda yan yana yazılan bir ifadede istediğimizi bulmak çok zor olacaktır.

76

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Anahtar ve değerlerin hangi veri tiplerinde olması gerektiğini söylemiştim.

Şimdi bir örnek üzerinde hepsini inceleyelim.

Burada anahtar dediğimiz yerde yazan bütün ifadeler ya sayı ya da karakter

dizisidir. Value dediğimiz ifadeler ise bütün veri tiplerinden olmaktadır.

Sözlük Metotları

Sözlük metotlarını görmek için aşağıdaki gibi kodumuzu yazıyoruz.

dir komutu içinde sözlük metotlarını görmek için İngilizce olarak sözlüğün

kısaltılmış hali dict yazmamız gerekiyor.

Burada __komutadı__ şeklinde özel sözlük dışında olan komutları göreceğiz.

Keys

İngilizce çevirisi anahtarlar demektir. Sözlük içindeki bütün anahtarları

almamızı sağlar.

2. satırda kodumuzun nasıl yazdığını diğer veri metotlarında görmüştük.

Terminal ekranımızda keys yazarak bütün değerlerimizi göstermiştir.

77

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Values

İngilizce çevirisi değerler demektir. Sözlük içindeki bütün değerleri almamızı

sağlar.

Terminal ekranımızda values şeklinde yazarak değerleri göstermektedir.

Items

Anahtar ve değerlerin hepsini bize vermektedir.

Get

Bu metot olmak anlamında kullanılmaktadır. Yani aradığımız bir anahtar olup

olmadığına bakar. Eğer öyle bir anahtar yoksa bizim istediğimiz bir ifadeyi

geriye döndürür.

Burada a sözlüğüne get metoduyla 4 sayısını gönderdik. Sözlükte olmayınca

geriye bize yazdığımız yazı dönmüş oldu.

Copy

Bir sözlüğü başka bir sözlüğe kopyalamamızı sağlar.

2. satırda b sözlüğüne a sözlüğü kopyala şeklinde ifademizi nasıl yazdığımıza

dikkat edin.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

78

ZAFER ÇOPUR


Clear

Sözlüğün içindeki verileri silmemizi sağlar.

a sözlüğünün içindeki verilerin terminal ekranında olmadığını görüyorsunuz.

Eğer sözlüğün tamamını silmek isterseniz del komutunu kullanmanız

gerekiyor.

2. satırda del ifadesinden sonra sözlüğün adını yazdık.

3. satırda terminal ekranında yazdırmak istedik ancak öyle bir ifade olmadığı

şeklinde hata verdi.

Pop

Sözlük içinde bir öğeyi silmemizi sağlar.

2. satırda a sözlüğünün içinde anahtarı 2 olan öğeyi sil dedik. Böylece anahtar

ve değeri tamamen silinmiş oldu.

Popitem

Önceki Python sürümlerinde rastgele bir değer sildiği ifade edilmektedir.

Ancak şu an kitabı yazdığım son sürümde böyle bir durum olmamaktadır. Şu an

en son öğeyi silmektedir.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

79

ZAFER ÇOPUR


Setdefault

Sözlüğe bir anahtar değer gönderir. Eğer anahtar değer yoksa sözlüğe

eklememizi sağlar.

2. satırda 4 şeklinde yazarak anahtarı sözlüğe gönderdik. Sözlükte bu olmadığı

için ekleme yaptı.

Terminal ekranına yazdırdığımızda sözlüğümüze eklenmiş olduğunu gördük.

Update

Sözlüğü güncellememizi sağlar.

1. satırda sözlüğümüzü tanımladık.

2. satırda update yazdıktan sonra parantez içinde süslü parantez yazarak liste

oluşturduk. Listemizi yeni bir listeyle güncellememiz gerekiyor. Yoksa hata

alırız. Orada 1 anahtar ifadesinde aa ile güncelle dedik. Aynı zamanda 4 anahtar

değerini de eklemek istediğimizi belirttik.

Terminal ekranında güncellenmiş olarak sözlüğümüz karşımıza çıktı.

Fromkeys

Verilen anahtarlara aynı değerleri hızlıca atamamızı sağlar.

1. satırda a sözlüğü oluşturduk. İçine sadece anahtarlarımızı yazdık.

2. satırda sözlük içine eklenecek değeri yazdık.

3. satırda c isimli bir sözlük olacağını belirttik. İçinde a ve b ifadelerini

birleştirerek yaz dedik.

Terminal ekranında gördüğünüz gibi yeni bir sözlük oluştu.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

80

ZAFER ÇOPUR


Küme (Set)

Programlamada küme birden fazla veri türünü bir arada bulunduran, süslü

parantez ile gösterilen ve öğeleri değiştirilebilen veri tiplerindendir.

Matematik dersinde gördüğümüz kümelerle ilgili işlemleri bu veri tipinde

yapabiliriz.

Aşağıdaki gibi kodlarımızı yazarak küme veri tipinin nasıl yazıldığını

inceleyelim.

1. satırda a isimli bir küme tanımladık. Burada da sözlükte olduğu gibi süslü

parantez kullandık. Ancak sözlükten farkı burada anahtar ve değer

bulunmamaktadır. Öğeler virgülle birbirinden ayrılmıştır. Eğer okul derslerinden

kümeleri hatırlarsanız zaten bu şekilde yazılması gerektiğini bilirsiniz.

2. satırda kümemizi terminal ekranında yazdırdık.

Kümelerde elemanlar virgülle birbirinden ayrılır. Şimdi yukarıda yazmış

olduğumuz kümenin eleman sayısını bulalım. Aşağıdaki gibi kodumuzu yazıyoruz.

Uzunluğu hesaplamak için len komutunu daha önce kullanmayı öğrenmiştik. Bu

sayede kümenin eleman sayısını hesaplamış olduk.

Kümelerde her elemandan bir tane yazılması gerekiyor. Programda böyle yazsak

hata almıyoruz ancak eleman sayısına baktığımızda böyle olduğunu görebiliyoruz.

1. satırda a isimli kümemizin içinde iki tane 1 öğesi bulunmaktadır. Şu an 4 öğe

varmış gibi görünüyor.

2. satırda uzunluğu ölçmek için kodumuzu yazdırdığımızda çıktı olarak 3 öğe

olduğunu görmekteyiz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

81

ZAFER ÇOPUR


Boş küme tanımlarken kod olarak a={} şeklinde yazarsak program bunu

sözlük olarak algılamaktadır. Boş küme oluşturmak için a=set() şeklinde

yazmamız gerekiyor.

1. satırda a isminde bir boş küme tanımladık.

2. satırda boş kümenin eleman sayısını yazdırdık. Terminalde 0 cevabını almış

olduk.

Küme Metotları

Küme metotlarını görmek için aşağıdaki gibi kodumuzu yazıyoruz.

dir komutu içinde küme metotlarını görmek için İngilizce olarak set yazmamız

gerekiyor.

Burada __komutadı__ şeklinde özel sözlük dışında olan komutları göreceğiz.

Add

Kümeye elaman eklememizi sağlar.

1. satırda a kümesi tanımladık.

2. satırda a kümesine 5 öğesini ekledik.

3. satırda terminal ekranında yeni kümemizi yazdırdık.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

82

ZAFER ÇOPUR


Clear

Kümenin içindeki elemanları silmemizi sağlar.

Terminal ekranımızda a kümesinin boş küme olduğunu söyleyen ifade çıktı.

Copy

Kümeyi kopyalamamızı sağlar.

1. satırda a kümesi tanımladık.

2. satırda b kümesini boş küme olarak tanımladık.

3. satırda a kümesini kopyalayarak b kümesine aktardık.

4.satırda b kümesini terminalde yazdırdık.

Update

Kümeyi güncellememizi sağlar.

3. satırda b kümesinin elemanlarını a kümesine göndererek a kümesini

güncellemiş olduk.

Remove

Kümeden istediğimiz elemanı silmemizi sağlar.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

83

ZAFER ÇOPUR


Discard

Remove metodu gibi kümenin içindeki elemanları silmemizi sağlar. Ancak

küme içinde bu eleman yoksa remove terminalde hata verir. Discard kullanırsak

hata vermez. Yani ikisi arasındaki tek fark bu diyebiliriz.

Küme içinde 5 olmadığı için silemedi ama kümeyi aynen yazdı. Remove

olsaydı terminalde hatayla karşılaşırdık.

Pop

Kümenin ilk elemanını silmemizi sağlar.

Union

Kümelerde birleşme özelliğidir. Kümelerin bir araya gelmesini sağlar.

Birleşme adı üzerinde kümeleri bir araya getirmek demektir. İki kümenin

elemanlarını birleştirirken aynı elemanlar varsa bir defa yazmak zorundasınız.

Terminal ekranında nasıl birleştiğini görüyorsunuz.

Üç tane kümeyi birleştirmek için iki farklı yol vardır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

84

ZAFER ÇOPUR


Intersection

Kümelerde kesişim özelliğidir. Kümelerde ortak olan elemanları bulmamızı

sağlar.

a ve b kümesinde ortak olan elemanlar 3 ve 5’tir.

Üç tane kümenin kesişimini bulmak için iki farklı yol vardır.

Intersection_update

Kümelerde kesişim özelliğidir. Yukarıda anlattığım intersection özelliğinden

farkı, kümeyi ortadan kaldırmaktadır. Yerine kesişim kümesini yazmaktadır.

4. satırda a kümesiyle b kümesinin kesişimini al ve bu değeri a kümesi olarak

belirle dedik.

5. satırda a kümesini terminale yazdırdığımızda a kümesinin artık kesişim

kümesi olduğunu görüyoruz.

Isdisjoint

Kesişimin boş küme olup olmadığını kontrol eder.

4. satırda a ve b kümelerinin kesişimi boş küme mi? diye sorgulandı. Cevap

boş küme değil olduğu için terminalde False (Yanlış) ifadesi yazdı.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

85

ZAFER ÇOPUR


Difference

Kümelerde fark özelliğidir. Kümenin içinden çıkartılan kümeyle ortak olan

elemanları atma işlemidir.

a kümesinin içinden b kümesiyle ortak elemanları çıkardığımızda geriye

kalanlar 1,2 ve 4’tür. Bu örnek üzerinden fark işlemini anlamaya çalışınız.

Lütfen okuldaki matematik ders notlarınıza çalışınız.

Differnce_uptdate

Kümelerde fark özelliğidir. Yukarıda anlattığım özellikten farkı kümeyi

ortadan kaldırmaktadır, yerine fark kümesini yazmaktadır.

Terminal ekranında da gördüğünüz gibi iki kümenin farkını aldı ve bu fark

kümesini a kümesinin yerine yazdı. Böylece a kümesi değişmiş oldu.

Issubset

Kümenin diğer kümenin alt kümesi olup olmadığını kontrol eder.

4. satırda a kümesi b kümesinin alt kümesi olup olmadığını sorguladık. Yani a

kümesinin her elemanı b kümesinin içinde var mı? diye sorguladı. Cevap doğru

olduğu için terminal ekranında True (Doğru) cevabı yazdı.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

86

ZAFER ÇOPUR


Issuperset

Alt kümenin tam tersidir. Kümenin diğer kümeyi kapsayıp kapsamadığını

kontrol eder.

4. satırda b kümesi a kümesini kapsayıp kapsamadığını sorguladık. Yani b

kümesinin içinde a kümesi var mı? diye sorguladı. Cevap doğru olduğu için

terminal ekranında True (Doğru) cevabı yazdı.

Symmetric_difference

İki kümenin simetrik farkını döndürür. Yani iki kümeyi birleştirip, ortak

elemanlarının dışarıya atıldığında geriye kalan elemanların oluşturduğu kümedir.

a kümesini ve b kümesini bir araya getirdikten sonra ortak olan 3 ve 5

elemanları atıldığında geriye kalan sayılar terminal ekranında çıkmış oldu.

Bu kodu daha hızlı olarak ^ sembolü kullanarak yazabiliriz.

Symmetric_difference_update

İki kümenin simetrik farkını bulur ve çağrılan kümenin yerine bu kümeyi

yerleştirir.

4. satırda b kümesi önce yazdığı için b kümesi yeni küme olacaktır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

87

ZAFER ÇOPUR


Karakter Metotları

Karakter metotlarını görmek için aşağıdaki gibi kodumuzu yazıyoruz.

dir komutu içinde karakter metotlarını görmek için str yazmamız gerekiyor.

Burada __komutadı__ şeklinde özel sözlük dışında olan komutlarından bazılarını

göreceğiz.

Capitalize

Karakter dizisindeki ilk harfi büyük harf yapmamızı sağlar.

Title

Karakter dizisindeki küçük harfle başlayan bütün kelimelerin baş harfini büyük

harf yapmamızı sağlar.

Count

Karakter dizisi içinde istediğimiz karakterden kaç tane olduğunu görmemizi

sağlar.

a harfinden kaç tane olduğunu sorguladık. Yalnız küçük harf olarak yazdığımız

için büyük harfi görmezden geldi. Eğer büyük küçük harfleri saymasını isterseniz

bütün harfleri aynı büyüklük yapan metodu kullanıp sonra saydırma işlemi

yaptırmanız gerekiyor.

88

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Upper

Karakter dizisi içindeki küçük harfleri büyük harf yapar. Yalnız karakter

dizileri değiştirilemez yapıdadır. Burada sadece görüntü olarak bu şekilde çıktı

vermektedir. Aşağıda iki türlü çıktı aldım bunu görebilirsiniz.

Lower

Karakter dizisindeki büyük harfleri küçük harf yapar. Yalnız sadece görüntüde

böyle olmaktadır.

Swapcase

Karakter dizisindeki büyük harfleri küçük harf, küçük harfleri büyük harf

yapar.

Center

Belirli sayıda belirlediğimiz boşluğun tam ortalayacak şekilde karakter dizimiz

yazacaktır.

Karakter dizimiz 5 harften oluşmaktadır. Biz 13 harf olacak şekilde tanımladık.

O yüzden 4 soldan 4 sağdan olmak üzere boşluk olacak ve tam ortasında 5 harfli

ALLAH yazacaktır.

Bunu daha net görmek için aşağıdaki gibi kodumuzu yazalım.

Kodumuzda 13 sayımızın yanında boşluklarda – sembolünün yazmasını

istedik. Böylece toplamda 13 sayısının nerede olduğunu görebiliyoruz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

89

ZAFER ÇOPUR


Zfill

Karakter dizisinin önüne sıfır yazmamızı sağlar.

9 harf olarak belirledik. Harezmi kelimemizin dışında kalan boşluklara 0

yazıldı.

Replace

Karakter dizisi içindeki bir karakteri farklı bir karakterle değiştirmemizi sağlar.

Startswith

Karakter dizimizin istediğimiz karakter ile başlayıp başlamadığını

belirlememizi sağlar. Eğer belirttiğimiz harfle başlarda True, başlamazsa False

çıktısı bize verir.

Endswith

Karakter dizimizin istediğimiz karakter ile bitip bitmediğini kontrol etmemizi

sağlar. Eğer istediğimiz harfle biterse True, bitmezse False çıktısı bize verir.

Isupper

Karakter dizimizin hepsinin büyük harf olduğunda True değerinin dönmesini

sağlar.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

90

ZAFER ÇOPUR


Isalpha

Karakter dizimizin harflerden oluşup oluşmadığını kontrol etmemizi sağlar.

Yalnız tek bir kelime yazmamız ve içinde sadece harf olması gerekiyor. Eğer

böyle olursa True, olmazsa False şeklinde çıktı vermektedir.

Islower

Karakter dizimizin hepsinin küçük harf olduğunda True değeri döndürülmesini

sağlar.

Isdigit

Karakter dizimizin sadece sayılardan oluşup oluşmadığını kontrol etmemizi

sağlar.

Isalnum

Karakter dizimizin içinde harf ve sayı dışında bir şey olup olmadığını kontrol

etmemizi sağlar.

Find

Karakter dizimiz içinde belirlediğimiz bir harfin kaçıncı sırada olduğunu

bulmamızı sağlar. Aynı zamanda harfimizi belirli sayı aralıklarında da

sorgulayabiliriz. Harflerin sırasına bakarken soldan sağa doğru bakmaktadır.

Eğer olmayan bir harf ararsanız terminal ekranında -1 yazacaktır.

Harfin birden fazla olma durumunda en soldaki harfe bakacaktır.

91

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Rfind

Karakter dizimiz içinde belirlediğimiz bir harfin kaçıncı sırada olduğunu

bulmamızı sağlar. Aynı zamanda harfimizi belirli sayı aralıklarında da

sorgulayabiliriz. Harflerin sırasına bakarken sağdan sola doğru bakmaktadır.

i harfine bakmasını istedik. Sağda bulunan i harfinin 22. sırada olduğunu bize

vermiş oldu. Burada index sayıları soldan itibaren değer almaktadır buna dikkat

ediniz. Eğer olmayan bir karakter ararsanız terminal ekranında -1 yazacaktır.

Index

Find metodu ile aynı görevi yapmaktadır. Find metodunda olmayan bir

karakteri arattırdığımızda terminalde -1 yazıyordu ama index metodunda hata

verecektir.

Rindex

Rfind metodu ile aynı görevi yapmaktadır. Tek farklı olmayan karakter

aratıldığında hata mesajı çıkmaktadır.

Join

Karakter dizimizin her harfinin arasına ayıraç koymamızı sağlar. Bu metot aynı

zamanda liste veri tipindeki elemanların arasında ayıraç koymamızı da sağlar.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

92

ZAFER ÇOPUR


Split

Karakter dizimizin içinde yazılan cümlenin kelimelerini liste içinde yazmamızı

sağlar.

Karakter dizimizi istediğimiz yerlerinden liste şeklinde öğelere ayırabiliriz.

Split içinde ayırmak istediğimiz sembolü yazmamız yeterli olacaktır.

Translate ve Maketrans

Bu iki metodu birlikte kullanacağız. Kodumuzu yazalım ve daha sonra nasıl

kullanıldığını anlatalım.

1. ve 2. satırda büyük harfler olarak Türkçe kullanılan ama İngilizce de onun

yerine yazabileceğimiz harfleri karakter olarak atadık. Sırasına dikkat edelim.

3. satırda kural isminde değişkenimize Türkçede bulunan karakterleri

İngilizce'de bulunan karakterleri atadığımızı belirttik. Maketrans metodu bize bu

imkânı sunuyor.

4. satırda kelimemizi değişkene aktardık.

5. satırda kelimemizi translate (çevirme) metoduna tabii tuttuk. Neye göre

çevireceğimizi belirtmek için parantez içinde kural yazdık. Böylece kelimemiz

bizim belirlediğimiz kurala göre değişecektir.

Terminal ekranına baktığımızda Türkçede kullandığımız harflerin değiştiğini

göreceksiniz.

93

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Veri Tipi Dönüşümleri

Sayı ve karakter veri tiplerinde dönüştürmeyi görmüştük. Şimdi list ( liste) , set

(küme) ve tuple (demet) veri türlerini birbirine dönüştürmeyi göreceğiz. Bunun için

sadece isimlerini yazmamız yeterli olacaktır.

Listeyi Demet Yapma

1. satırda a listesi tanımladık.

2. satırda demet yapmak için tuple (demet) kodunu kullandık. Tupleden sonra

parantez içinde çevrilmesini istediğimiz değişkenin adını yazdık.

Bu mantıkla bütün dönüşümleri rahat yapabiliriz.

Listeyi Küme Yapma

Demeti Liste Yapma

Demeti Küme Yapma

Kümeyi liste yapma

Kümeyi Demet Yapma

https://www.youtube.com/c/ELHarezmiBilgelikEvi

94

ZAFER ÇOPUR


Programlama uzun ve karışık bir süreçtir. Programlama hatalarına bug ( böcek)

adı verilmektedir. Bu hataları bulma ve düzeltme işlemine debugging (ayıklama,

onarma) denilir.

Programlamada 3 hatadan bahsedebiliriz.

1-Yazım hatası (Error)

2-Mantık hatası (Bug)

3-İstisnai hatalar(Exception)

Yazım Hatası

Hata Ayıklama

Kodlarımızı yazarken belki bir parantezi yazmayı unutabiliriz. En ufak bir yazım

hatasından dolayı yaptığımız program çalışmayacaktır. Örnek olarak aşağıdaki kodu

yazalım.

Print komutunu yazarken parantez kullanmadığım için terminal ekranında Syntax

Error hatası aldık. Aynı zamanda hatanın nasıl düzeltileceği şeklinde bir öneri

sundu.

Mantık Hatası

Programı bitirip çalıştırdığımızda hata vermeyecektir. Düzgün çalışıyor gibi

görünse de bizim istediğimiz şekilde çalışmayacaktır. Aşağıdaki kodu yazlım.

Daha önceki derslerimizde bu çalışmayı yapmıştık. Yalnız şimdi terminale

bakarsanız kodumuzun çalışmasına rağmen bir mantık hatası bulunmakta. Tek sayı

ve çift sayı ifadelerinin yer değiştirmesi gerekiyor.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

95

ZAFER ÇOPUR


İstisnai Hatalar

Bu tür hatalar programda bazı istisnai durumlardan dolayı oluşan hatalardır.

Çok basit bir örnekle bunu açıklamak için aşağıdaki kodları inceleyelim.

Daha önce bu çalışmayı yapmıştık. Kullanıcının yaş girmesini istemiştik.

Ancak kullanıcı sayı yerine buraya harf girmesi durumu olabilir. Böyle durumda

aşağıdaki gibi Value Error hatası alırız.

Matematikte bölme işlemi yaptığımızda sayılar 0’a bölünmez. Eğer biz bir

hesap makinesi yaparsak bu özelliğe dikkat etmemiz gerekiyor. Aşağıdaki gibi

kodumuzu yazdığımızda terminal ekranında Zero Division Error şeklinde hata

alırız.

Value Error ya da Zero Division Error gibi aldığımız hatalar bir istisnai

durumdur.

Böyle istisnai hataların önüne geçmek için try ve except gibi bloklarımız

bulunmaktadır. Bu blokların nasıl çalıştığını bilmemiz gerekiyor.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

96

ZAFER ÇOPUR


Try ve Except

Bu tür hatalar programda bazı istisnai durumlardan dolayı oluşan hatalardır.

Çok basit bir örnekle bunu açıklamak için aşağıdaki kodları inceleyelim.

Kullanıcıdan iki sayı girmesini istedim. Daha sonra bu sayıları çarpma

işlemine tabii tuttum. Ancak kullanıcı sayı yerine harf girince hata verdi. Bizim

bunun önüne geçmemiz gerekiyor. O zaman aşağıdaki gibi kodlarımızı yazalım.

Buradaki yazılacak kalıba dikkat edin. Hata yapılabilecek olan kodlar try

içinde yazıldı. Except ifadesinden sonra hatanın ismi yazıldı ve daha sonra

altında uyarı mesajı yazdırıldı. Terminal ekranında harf girerek duruma tekrar

bakalım.

Bir önceki sayfada sayıların sıfıra bölünemeyeceğinden bahsetmiştik. Buradaki

örneği bölme olarak değiştirdiğimizde hata mesajını Zero Division Error

şeklinde yapmamız gerekiyordu. Aşağıdaki gibi kodlarımızı yazalım.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

97

ZAFER ÇOPUR


Yaptığımız bu bölme işleminde harf girme durumu olabilir. Yani yine value

error hatası alacağız demektir. O halde burada hem harf hem de 0 girilmesi

hatası olabilir. Bunun için aşağıdaki gibi kodumuzu yazalım.

Yukarıda bulunan iki hatadan biri olduğunda hemen terminalde uyarılarımız

çıkacaktır.

İsterseniz iki hatayı birleştirip tek bir uyarı yazdırabilirsiniz. Aşağıdaki gibi

kodlarımızı yazıyoruz.

Şimdi bu hata bloklarını bir döngü içinde kullanalım. Aşağıdaki gibi

kodlarımızı yazıyoruz.

Burada hata bloklarının nasıl yazıldığına dikkat ediniz. Hata yapılacak kısımlar

try ifadesinden sonra yazıldı. Hata oluştuğunda ne olacağı ise except ifadesinden

sonra yazıldı.

Python ile kodları yazarken aynı hizada olması çok önemlidir. Eğer yukarıdaki

gibi yazmazsanız hata alırsınız.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

98

ZAFER ÇOPUR


Try , Except ve As

Şimdi hata bloklarımıza as ifadesi kullanmayı göreceğiz. Bunu aşağıdaki kodu

yazarak görelim.

Burada yaptırdığımız bölme işleminde 0 olmayacağı için hata alacağımızı

söylemiştik. Terminalde hata Zero Division Error şeklinde görülüyor. Bu hatanın

mesajı da division by zero şeklindedir. Bu açıklamayı şimdi as komutu ile

kullanıcın görmesini sağlayacağız. Aşağıdaki kodu yazalım.

Daha önce except ifadesinden sonra hatanın adını yazıyoruz demiştik. Hatanın

adından sonra as ifadesi kullanarak terminalde çıkan hata mesajını buraya kadar

çıkarma, gerisini mesaj adındaki değişkene aktar demiş olduk. Buradaki mesaj

kelimesi yerine başka bir şey yazabilirsiniz. Yalnız print içinde aynı kelime

yazması gerekiyor.

Bu hata kodunun görünmesi bazı kullanıcılar için yararlı olabilir. O yüzden

sizde bunu kullanabilirsiniz.

İsterseniz hem kendi hata mesajını hem de terminaldeki hata mesajını aynı

anda çıkartabilirsiniz. Aşağıdaki gibi kodumuzu yazıyoruz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

99

ZAFER ÇOPUR


Try , Except ve Else

Çok nadirde olsa bu üçlü yapı karşınıza çıkabilir. Daha önce else mantığını

öğrenmiştik. Burada da aynı mantıkla kullanılıyor diyebiliriz. Şimdi bu yapıyı

daha iyi anlamak için aşağıdaki kodları yazalım.

Dikkat ederseniz try ve except kullandıktan sonra aynı hizada else kullandık.

Yani elseye gelene kadar kullanıcı sayı girmişse artık elseden sonraki kısımda

try ve except kısmı işlem için çalışma yapacaktır. İki defa denetleme yapmış

olduk.

Try , Except ve Finally

Hata alma durumlarda kullanıcıya hata mesajları göndermiştik. Şimdi finally

bloğu sayesinde hata olsa da olmasa da istediğimiz kodları buraya yazabiliriz.

Terminalde sayı olarak 4 ve 5 girdik. Hata olmadı ama finally kısmında

yazdığımız mesaj çıktı.

Terminalde hata olması için a harfini girdiğimizde hata mesajı karşımıza çıktı

ama yine finally kısmındaki mesajımız çıktı.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

100

ZAFER ÇOPUR


Raise

Yaptığımız uygulamada kendimizin belirlediği bir şekilde kullanıcıya hata

varmış gibi bir mesaj gönderebiliriz. Daha iyi anlamak için aşağıdaki kodları

yazalım.

Burada amacımız dikdörtgenin alanın hesaplamak olacaktır.

1. ve 2. satırda kullanıcıdan uzun ve kısa kenarı yazmasını istedik.

3. satırda eğer yazılan değerler 0’a eşit veya küçükse diye şart koştuk.

4. satırda böyle bir durumda kullanıcıya yazdığımız mesajı göndermesini

istedik.

5. satırda sonuç isminde bir değişken hazırladık. Kısa ve uzun kenarı çarparak

değerini buna aktardık.

6. satırda ekranımıza sonuç yazısını ve değerini yazdırmaya çalıştık.

Terminal ekranına baktığımızda bizim yazdığımız mesajın çıktığını

görmektesiniz.

Burada yazdırabileceğimiz hatalar sadece Python’da kullanılan hata mesajları

olması gerekiyor. Name Error, Type Error, Zero Division Error vb. gibi hata

mesajlarını yazdırabiliyoruz.

Assert

Türkçe anlamı iddia etmektir. Bu kod ile hata ayıklamak için doğru olan

durumları inceleyebiliyoruz. Doğru olmadığı durumda hata mesajı

gösterebiliyoruz.

Burada toplama işleminin sonucu eğer 9 yazsaydık doğru olacaktı ve mesaj

göstermeyecekti. Ama yanlış yazdığımız için bize iddialı şekilde mesajı çıkardı.

İsterseniz hata mesajını yazmadan da kullanabilirsiniz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

101

ZAFER ÇOPUR


Derslerimizde çoğunlukla print() fonksiyonu şeklinde bir ifade kullandığımızı fark

etmişsinizdir. Onun haricinde farklı fonksiyonlarda dersimizde kullandık.

Print fonksiyonu sayesinde ekrana yazdırma işlemlerini çok basit bir şekilde

yaptırmış olduk. Aynı şekilde kullanıcıdan bilgi almak için input fonksiyonu

kullanmıştık. Fonksiyonlar bir görevi gerçekleştirmek için kullanılan komutlardır

diyebiliriz. Bu fonksiyonları programlarımızın değişik yerlerinde istediğimiz zaman

kullanabiliyoruz.

Şimdiye kadar gördüğümüz print ve input gibi fonksiyonlar Python içine gömülü

olarak bize sunulan fonksiyonlardı. Ancak bunun haricinde bizde kendi

fonksiyonlarımızı oluşturabiliriz.

Fonksiyon Tanımlama

Fonksiyonlar

Fonksiyon tanımlamak için tanım kelimesinin İngilizcesi olan definition

kelimesinin ilk üç harfi kullanılıyor. Şimdi ilk fonksiyonumuzu yazarak yapısının

nasıl olduğunu inceleyelim.

1.satırda def ile başlayarak fonksiyon tanımlayacağımızı ifade ettik. Şimdi

fonksiyona isim vermemiz gerekiyor. Böylece fonksiyonumuzu tanıyacağız. Yalnız

isim verirken İngilizce karakterler kullanınız. Daha sonra () parantezlerini ve :

ifadelerini yazmamız gerekiyor. Böylece fonksiyonumuzu oluşturduk.

2. satırda fonksiyonumuzun ne yapacağı görevini verdik. Print sayesinde ekrana

yazı çıktı vermesini sağladık.

3. satırda fonksiyonumuzu çağırdık. Fonksiyonu çağırmazsak onu çalıştıramayız.

Aynı fonksiyonu ne kadar çok çağırırsak her defasında çalışacaktır. Mesela 3 defa

çağıralım ve terminal ekranına bakalım.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

102

ZAFER ÇOPUR


Parametre ve Argümanlar

Fonksiyona Parametre Gönderme

Aşağıdaki gibi kodumuzu yazalım ve incelemeye başlayalım.

1. satırda selam ver isminde bir fonksiyon tanımladık. Ancak sonra gelen

parantez içine bu sefer kisi_adi şeklinde bir parametre tanımladık. Yani böylece

dışarıdan fonksiyona parametre göndereceğimizi ifade ettik.

2. satırda kullanıcıya print komutu ile yazı yazdırdık.. Ancak orada dikkat

ederseniz selam dışında bir de kisi_adi olan ifadenin değerini de yazmasını

istedik.

3. satırda fonksiyonumuzu çalıştırma komutunu yazdık. Ancak bu sefer

parantez içinde Dünya kelimesini de kullandık. Bu bizim parametremize karşılık

argümanımız olmuş oldu Böylece kisi_adi yerine Dünya ifadesinin yazılmasını

istedik.

Farklı isimleri de fonksiyonumuzda kullanabiliriz.

İki sayının toplama işlemini yaptıralım. Aşağıdaki gibi kodlarımızı yazıyoruz.

1. satırda topla isminde fonksiyon tanımladık ve bu sayıları almak için

parantez içinde virgülle değişkenlerimizi yazdık. Eğer daha fazla olsaydı yine

virgül yazarak daha fazla değişken alabilirsiniz.

2. satırda sonucu terminal ekranında yazdırmak için print fonksiyonuyla

toplama işlemi yaptırdık.

3. satırda fonksiyonu sayılar 4 ve 5 olacak şekilde çalıştırdık.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

103

ZAFER ÇOPUR


Kullanıcı kaydı oluşturmak için aşağıdaki gibi kodlarımızı yazalım.

1. satırda kullanici_kaydi adında fonksiyon tanımladık ve içine alacağımız

değerlerin ne olduğunu yazdık.

2., 3., ve 4. satırlarda aldığımız değerleri terminal ekranına yazdırmak için

print fonksiyonunu kullandık.

5. satırda fonksiyonumuz çağırdık.

5. satırda dikkat ederseniz belirli bir sıraya göre bilgileri yazdık. Eğer önce

Bolu yazsaydık ekranda çıktı olarak Ad: Bolu şeklinde görülecekti. O halde

böyle bir durumda aşağıdaki gibi kodlarımızı yazmamız gerekiyordu.

5. satıra dikkat ederseniz fonksiyonumuzda yazdığımız ifadeleri eşittir

kullanarak yazdık. Böylece fonksiyonda tanımlı olan yere bilgilerimiz gidecektir.

Terminal ekranında da benim istediğim şekilde sırayla çıkacaktır.

İsterseniz parametreye eşitlik verebilirsiniz. Aşağıdaki kodları yazalım.

1. satırda fonksiyon tanımlarken parametre yazdığımız yerde a=2 gibi ifade

yazdığına dikkat edin. Böylece a ve b’ye değer vermiş olduk.

2. satırda terminale yazdırmak için print fonksiyonu kullandık.

3. satırda fonksiyonumuzu çağırdık.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

104

ZAFER ÇOPUR


Çoklu Sayıda İsimsiz Parametreler

Print fonksiyonumuzu anlatırken * sembolünden bahsetmiştik. Şimdi aynı

sembolü fonksiyon parametrelerinde de kullanımı görelim. Aşağıdaki gibi

kodumuzu yazıyoruz.

1. satırda değerler adında bir fonksiyon oluşturduk. Fonksiyon içerisine *

sembolü ile başlayan girilenler yazdık. Böylece girilen bütün değerleri girilenler

parametresine aktarmış olduk.

2. satırda girilenler parametresine aktarılan bütün değerlerimizi terminal

ekranında yazdırıyoruz.

3. satırda değerler adındaki fonksiyonu çalıştırıyoruz. Burada yazdığımız

bütün değerler fonksiyona gidecektir.

Terminal ekranına baktığımızda değerlerimiz demet olarak karşımıza çıkmıştır.

Burada değer olarak 3 tane girdik. Ancak burada sınırsız değerler girebiliriz

şeklinde ifadeler kullanılmaktadır. Gerçekte 256 tane değer girilebildiği

söylenmektedir.

Çoklu Sayıda İsimli Parametreler

Burada parametre yazarken ** şeklinde ifademize başlıyoruz. Aşağıdaki gibi

kodumuzu yazalım.

1. satırda parametremizin önünde ** şeklinde ifade yazdık.

3. satırda parametrelerimizin neye eşit olacağını belirterek yazdık.

Terminale baktığımız zaman değerlerimiz, sözlük içine alınmış olarak

karşımıza çıktı.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

105

ZAFER ÇOPUR


Pythonda * işaretiyle birlikte kullanılacak parametrenin adı geleneksel olarak,

‘argümanlar’ anlamında ‘args’tır. ** işareti parametre de geleneksel olarak

‘kwargs’ şeklinde adlandırılır. Yani aşağıdaki gibi kodlara yazmaktadırlar.

Şimdi ikisinin birlikte kullanıldığı bir örnek görelim. Aşağıdaki kodları

yazıyoruz.

1. satırda fonksiyonumuzun içinde parametrelerimizi isimlendirdik.

Fonksiyon İçinde Fonksiyon

Aşağıdaki gibi kodumuzu yazarak inceleyelim.

6. satırda selam ver fonksiyonunun çalışmasını istedik.

1. satırda fonksiyonumuz çalıştı ve 2. satırda yer alan kime değişkeninin

değerinin Dünya olduğunu aldı.

Dünya değişkeni alındığında 3. satırdaki fonksiyon çalıştırılmadığı için 5.

satıra kadar indik.

5. satırda ifade isimli fonksiyon çalışsın dedik. Zaten bu fonksiyonla aynı

hizada olduğuna dikkat edin.

3. satırda yer alan fonksiyonumuza gidiyoruz.

4. satırda ekrana Selamünaleyküm yazdıktan sonra kime ismindeki değişkeni

yazmasını istedik.

Böylece ekranımızda istediğimiz gibi Selamünaleyküm Dünya şeklinde

ifademizi yazdırdık.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

106

ZAFER ÇOPUR


Return

Türkçede dönmek, iade etmek anlamına gelmektedir. Aşağıdaki kodu yazalım

ve fonksiyonun içinden geri dönmenin nasıl olduğunu inceleyelim.

Daha önce fonksiyon yazarken en alt satıra fonksiyonu çağırmak için bir kod

yazıyoruz demiştik. Şimdi dikkat ederseniz en alt satırda böyle bir kod yok. Aynı

zamanda print komutunu def ile tanımladığımız fonksiyon içine yazıyorduk.

Şimdi yine öyle bir durum yok.

Fonksiyonun çalışması için önce çağırılması gerekiyor. Kodlar çalışırken

burada 3. satırda bulunan kod hemen devreye girecektir. İçinde işleminizin

sonucu şeklinde ifadeyi yazacağını anladıktan sonra dikkat ederseniz topla

fonksiyonunun çalışmasını istedik.

Böylece print komutu içinde fonksiyon çalıştırılacaktır. Daha sonra fonksiyon

çalıştığında 4 ve 5 değeri fonksiyona girecek ve orada return yazan yerde

toplama işlemi yapılacaktır. Yapılan bu işlem hemen geriye tekrar dönecektir.

Yani cevap print fonksiyonunun içine gidecektir.

Daha önce format fonksiyonunu öğrenmiştik. Şimdi bunu kullanarak bir

çalışma yapalım.

4. satırda bulunan print komutumuz çalıştı. İçeridekileri yazdırmaya çalışırken

{} parantezlerini gördüğü için format fonksiyonunun çalışacağını anladı. Format

fonksiyonunun içindeyse kendi tanımladığımız selam ver fonksiyonunu gördü.

1. satıra geçiş yaparak fonksiyonumuzun içine girdik.

2. satırda kullanıcıdan adını girmesini istedik ve bunu isim adında değişkene

aktardık.

3. satırda isim değişkenini al ve print fonksiyonunda kaldığın yere dön

şeklinde ifade oluştu.

Böylece tekrar 4. satırda format fonksiyonuna gelen program, değeri oraya

yazdırdı. Yani mavi parantez içinde isim yazmış oldu.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

107

ZAFER ÇOPUR


Lambda Fonksiyonları

Fonksiyonları oluşturmak için pratik bir yöntemdir. İsimsiz olarak

tanımladığımız fonksiyonlardır.

Daha önce iki sayının toplamını fonksiyon şeklinde yazarak yapmıştık.

Aynısını lambda fonksiyonuyla yapalım. Aşağıdaki gibi karşılaştırmalı olarak

kodlarımızı yazalım.

Sağ tarafta 1. satırda def ile başlamadığımıza dikkat edin. Direkt olarak

fonksiyon adıyla başlayıp eşittir yazdık. Daha sonra lambda yazarak devam

ediyoruz. Şimdi iki tane değer göndereceğim için a,b şeklinde ifade yazdık ve :

sembolünü yazdık. Daha sonrada toplama işlemini yazdırdık.

Bir sayının karesini lambda fonksiyonu ile almak için aşağıdaki kodu yazalım.

1. satırda kare_alma adında değişkenimizi tanımladık. Eşittirden sonra lambda

fonksiyonu olduğunu ve a değişkeninin değerini beklediğini ifade ettik. İki

noktadan sonra üs alma işlemini tanımladık.

2. satırda print fonksiyonu içinde kare_alma fonksiyonumuzda a yerine 5

olacak şekilde çalıştır dedik.

Sayımızın tek ya da çift olduğunu anlamak için aşağıdaki kodu yazalım.

1. satırda fonksiyonumuzu isimlendirdik. İşlem olarak a%2 ==0 yazmamızın

nedeni a sayısının 2’ye bölümünden kalan 0 olup olmadığına bakmaktır. Çift

sayılar 2’ye bölündüğünde kalan 0 olacağı için böyle bir işlem yaptırıyoruz.

2. satırda 36 sayımızı fonksiyona gönderiyoruz.

Terminalde çıktımız True yani doğru şeklinde ifade vermiş oldu.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

108

ZAFER ÇOPUR


Fonksiyonlarda Değişken Kullanım

Değişken kavramını daha önce ele almıştık. Aslında fonksiyonlar derslerini

anlatırken de değişkenleri kullandık. Değişkenler local ve global olmak üzere iki

türlüdür. Şimdi kullandığımız bu değişkenlerin local (yerel) ya da global olduğunu

anlamaya çalışalım.

Yerel değişken demek fonksiyonun içinde olan değişkenler demektir.

Kare alma şeklinde ifade ettiğimiz fonksiyonun içinde a isminde bir değişken

tanımladık. Print komutu çalıştığında fonksiyonumuz çağrıldığı için orada bir a

değişkeni oluşacak ve daha sonra işlem bittiğinde a değişkeni kaybolacaktır. Her

fonksiyon çalıştığında bu a değişkeni yeniden ortaya çıkacaktır. Bu değişkeni başka

bir yerde kullanamayız. Bundan dolayı biz bu değişkenlere yerel değişken diyoruz.

Şimdi aynı örneği global değişken olacak şekilde aşağıdaki gibi yazıyoruz.

a değişkenimiz gördüğünüz gibi fonksiyonun dışındadır. 4. satırda biz fonksiyonu

çağırdığımızda a ile alakalı bir şey yoktur. Ancak fonksiyon içine girdiğimizde a’nın

2. kuvvetini al diyoruz. Program bu a’nın değeri global olduğu için dışarıdan bu

değeri alıp kullanacaktır. Bu a değişkeni fonksiyon çalışsa da çalışmasa da orada

duracaktır. Lazım olan başka fonksiyonlar içinde bu a değişkenini kullanabiliriz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

109

ZAFER ÇOPUR


Şimdi global değişkenimizi aşağıdaki gibi yazalım.

Kodlarımız 1. satırdan itibaren okunduğu için fonksiyonumuz çalıştığında a

değerini alamıyor. Çünkü biz fonksiyondan önce a’yı programa tanımlamadık.

Terminal ekranında da a’nın tanımlanmadığını belirten bir yazı alıyoruz.

Global ve yerel değişken değişkenleri aynı anda kullanabiliyoruz. Hatta

değişken isimlerini bile aynı yapabiliriz. Normalde değişken adlarının aynı

olması programımızda hatalara yol açmaktadır. Ancak global ve yerel olarak

değişkenleri bildiğinizde bu durumu kullanabilirsiniz.

1. satırda global a değişkeni kullandık. 3. satırda yerel a değişkeni kullandık.

Her ikisinin ismi aynı.

5. satırda kare alma fonksiyonu çalışsın istedik.

6. satırda a değişkeninin ekrana yazdırılmasını istedik.

Kodlarımızda önce fonksiyon çalıştığı için fonksiyonun değeri yazması

gerekiyor. Terminale baktığımızda 9 değerini görüyoruz. Yani fonksiyon

çalıştığında global yerine yerel değişkeni kullandı.

6. satırda olan yazdırma kodumuza baktığımızda fonksiyonla alakası olmadığı

için global değişkeni ekrana yazdırdı.

O halde global ve yerel değişkenlerin isimleri aynı olduğunda fonksiyon yerel

değişkeni kullanmaktadır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

110

ZAFER ÇOPUR


İsterseniz yerel değişken içinde bulunan değişkeni global hale getirebilirsiniz.

Yukarıda verdiğimiz örneği aşağıdaki gibi değiştirip yazalım.

1. satırda global a değişkeni tanımladım.

3. satırda fonksiyon içinde global a şeklinde bir ifade kullanarak burada yine a

isminde bir global değişken tanımladım.

6. satırda kare alma fonksiyonunu çalıştır dediğim için terminal ekranında 4.

satırda yer alan a=3 değeri çalışacaktır. Terminal ekranında 9 yazacaktır. Bu

zaten yerelde olsa bu şekilde çalışacaktı.

7. satırda yer alan print fonksiyonu normalde global a değerini yazması

gerekiyordu. Ancak ben 1. satırda yer alan global a değerini 3. satırda global a

yazarak 4. satıdaki a=3 değerine atadım. Bundan dolayı benim 1. satırda yer alan

a değerim değişmiş oldu. Bundan sonra program global a olarak 3 değerini

kullanacaktır. O yüzden terminal ekranında 3 değeri yazılmış oldu.

Daha önce if ve while ifadelerini öğrenmiştik. Bu ifadelerin içinde değişken

kullanabiliyoruz. Bu değişkenler global değişken olmaktadır. Aşağıdaki gibi

kodlarımızı yazalım.

Her iki örneğimizde içeride bir print fonksiyonu ile değerleri ekrana yazdırdık.

Aynı zamanda bunların dışında bir print fonksiyonu daha ekrana yazdırdık.

Dışarda olan print fonksiyonu global olan bir değer ekrana yazdırdığını

biliyoruz. Ekrana değer yazdırdığına göre if ve while ifadelerinin içinde

kullandığımız değişkenlerin global olduğunu anlamaktayız.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

111

ZAFER ÇOPUR


Gömülü Fonksiyonlar (Map, Filter, Reduce Zip)

Fonksiyonlar dersimizin başında gömülü (dahili) fonksiyonlardan bahsetmiştik.

Aşağıda alfabetik sırayla gömülü fonksiyonlarımızı görebilirsiniz.

abs() dict() help() min() setattr()

all() dir() hex() next() slice()

any() divmod() id() object() sorted()

ascii() enumerate() input() oct() staticmethod()

bin() eval() int() open() str()

bool() exec() isinstance() ord() sum()

bytearray() filter() issubclass() pow() super()

bytes() float() iter() print() tuple()

callable() format() len() property() type()

chr() frozenset() list() range() vars()

classmethod() getattr() locals() repr() zip()

compile() globals() map() reversed() __import__()

complex() hasattr() max() round()

delattr() hash() memoryview() set()

Derslerimizde yeri geldiğince bu fonksiyonları kullandık. Şimdi en çok

kullandığımız fonksiyonlardan birkaç tanesini daha görelim.

Map

Yazılan bir fonksiyonu liste, demet , küme gibi verilen veri türlerinin her

elemanına birden uygulanmasını sağlar.

1. satırda sayılar adında bir liste oluşturduk.

2. satırda iki katı adında bir fonksiyon tanımladık ve içinde a değişkeninin 2’yle

çarpılmasını istedik. Return komutuyla dışarı çıkmasını sağladık.

4. satırda cevap değişkenine map fonksiyonu uyguladık. Yani iki katı isimli

fonksiyonun işlemini sayılar adındaki listesinin her elemanına uygula dedik.

5. satırda cevap değişkenimizin içindeki her bir değeri almak için tekrar liste içine

aktararak terminal ekranında yazdırdık.

112

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Aynı kodumuzu bu seferde Lambda şeklinde yazarak daha kısa nasıl

yazabiliriz onu görelim. Lambdanın bir özelliğini daha gösterelim.

1. satırda cevap isminde bir değişken oluşturduk. Orada map fonksiyonu

tanımladık. Böylece bir fonksiyonu bütün elemanlara uygulayacağımızı program

anladı. Fonksiyon olarak kısaca lambda yazarak a değerimizi 2’ye çarpılmasını

tanımladık. Daha sonra virgül yazarak listemizi de belirtmiş olduk. Lambda

fonksiyonun anlatırken bu şekilde listenin eklenebileceğinden bahsetmemiştik.

Burada yapmış olduğumuz örnekle bunu görmüş olduk.

2. satırda terminal ekranında cevap değişkeninin içindeki elemanları liste

olarak yazdır dedik.

İsterseniz tek satırda bu işlemleri yaptırabilirsiniz. Yukarıdaki gibi kodumuzu

yazmanız yeterli.

Birden fazla aynı eleman sayısı olan liste kullandığımızda map fonksiyonu her

ikisinden de birer değer alacakmış gibi davranır.

Kodumuzda x ve y olmak üzere iki tane değişken tanımladık ve

fonksiyonumuzu da bu iki sayıyı çarp şeklinde yazdık. Daha sonra iki tane liste

hazırladık. Listeler iki tane olduğu için değerlerimiz x ve y’nin içerisine

aktarıldı. Terminal ekranında görüldüğü gibi iki listeden de sırayla elemanlar

alınmış ve çarpma işlemi yapılmıştır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

113

ZAFER ÇOPUR


Filter

Yazılan bir fonksiyona göre sıralı nesnelerde doğru (True) olma durumunun

alınmasını sağlar.

Sıralı nesnelerin olduğu bir liste içinden 4’ten küçük olan sayıları seçmek için

aşağıdaki gibi kodumuzu yazalım.

Map yazan yere bu sefer filter fonksiyonu yazdık.

Lambda fonksiyonumuzda x değişkeni tanımladık ve 4’ten küçük olmasını

ifade ettik. Daha sonra listemizi yazdık.

Print komutunun içinde listeye çevirerek ekranda yazılmasını istedik.

1’den 10’a kadar sayılarda çift olanları filter yöntemiyle seçmek için aşağıdaki

kodu yazalım.

1. satırda sayılar adında bir değişken oluşturduk. Range komutu sayesinde

1’den 10’a kadar sayıları içine aktardık. Ancak 10 sayısı alınmıyor.

2. satırda çift sayı isminde bir fonksiyon tanımladık. Aldığımız sayıları sayı

değişkenine aktararak 2’ye böldük ve kalan sıfıra eşit olursa çift sayı olduğunu

anladık. Return komutuyla tekrar dışarıya geriye gittik.

4. satırda sonuç isminde değişken tanımladık. İçine filter fonksiyonuyla,

sayılar adındaki değişkenin içindeki her bir sayıya çift sayı fonksiyonunu uygula

dedik. Filter bunu fonksiyonda , kalan sıfıra eşit olan bütün değerleri bizim için

aldı ve sonuç değişkenine aktardı.

5. satırda sonuçları liste içerisinde yazdır dedik.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

114

ZAFER ÇOPUR


Reduce

Reduce fonksiyonu sıralı nesnelerden ilk iki elemanı alarak tanımlanan

fonksiyonda işleme tabii tutarak yeni bir sıralı nesne oluşturur. Tekrar aynı

işlemi yaparak tek sonuç bulana kadar bu işleme devam eder.

1’den 5’ e kadar olan sayıların toplamını reduce fonksiyonu ile bulalım.

Aşağıdaki kodu yazıyoruz.

1. satırda reduce fonksiyonunu yüklemek için bu kodumuzu yazmamız

gerekiyor. Yoksa 3. satırda yazdığımız fonksiyonumuz çalışmayacaktır. İlerleyen

derslerimizde modül eklemenin ne olduğunu göreceğiz.

2. satırda sayılar adında bir liste oluşturduk.

3. satırda sayılar listemizi tanımladığımız fonksiyon içinde a+b şeklinde işleme

tabii tuttuk. Reduce fonksiyonu verdiğimiz için fonksiyon şöyle çalışacaktır:

1+2=3

3+3=6

6+4=10

10+5=15

Gördüğünüz gibi ilk iki sayı toplandığında bir sonuç elde

edildi. Bulduğumuz sonuca listede bir sonraki sayı alınarak

tekrar işlem yapıldı. Böylece bütün sayıları toplamış olduk.

Bulduğumuz değeri sonuç adındaki değişkene aktardık.

4. satırda bu değeri ekrana yazdırdık.

Zip

İki veya daha fazla sıralı nesnelerden gruplar elde etmemizi sağlar. Aşağıdaki

gibi kodumuzu yazalım.

1.ve 2. satırda listelerimizi tanımladık.

3. satırda zip fonksiyonu kullanarak sayılardan bir eleman harflerden bir

elaman alarak ikili oluşturduk ve bunu sonuç değişkenine aktardık.

4. satırda sonuç değişkenini listeye çevirdik ve ekranda yazdırdık.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

115

ZAFER ÇOPUR


Modüller

Kısacası Python dosyaları bir modüldür diyebiliriz. Her bir modül içinde

fonksiyonlar, sınıflar ve objeler barındırmaktadır. Biz bu modülleri

programımıza dahil ederek içindeki fonksiyonlardan, sınıflardan ve objelerden

faydalanabiliriz.

Python geliştiricileri tarafından yazılmış birçok hazır modül bulunmaktadır.

Birçok modülü programlarınızda kullanabilir ve daha güzel programlar

yazabilirsiniz. Hazır modüllerden önce kendi modülümüzü oluşturmakla

başlayalım.

Kendi Modülümüzü Oluşturma

ilk dosyam isminde Python dosyası oluşturmuştuk. Bu aynı zamanda bir modül

olduğunu söyledik. Şimdi oraya modülümüz isminde bir dosya daha oluşturalım.

Dersimizin en başında ilk dosyam isminde Python dosyası oluşturmayı anlatmıştık.

Modülümüzün içine bir fonksiyon tanımlayalım ve dosyamızı kaydedelim.

İlk dosyam isimli dosyamıza gelelim ve aşağıdaki gibi kodumuzu yazalım.

Böylece modülümüzü çağırma işlemini yapmış olduk.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

116

ZAFER ÇOPUR


Modülümüzün içindeki fonksiyonu çalıştırmak için aşağıdaki gibi kodumuzu

yazmaya devam edelim.

2. satırda modülümüz isimli dosyadan selam isimli fonksiyonun çalıştırmasını

istedik. Aynı zamanda bunu print komutuyla terminal ekranımızda yazdırdık.

Çağırdığımız fonksiyon değer döndürmediği için none şeklinde yazımız çıktı.

Eğer geriye değer döndüren bir fonksiyon yazarsanız bu yazı çıkmayacaktır.

Modül İsmini Kısaltma

Eğer modülünüzün ismi çok uzun olursa ona takma isim verebiliriz. Takma

isim vermek için as komutunu kullanıyoruz ve aşağıdaki gibi modülümüzü

import ediyoruz.

Burada modülümüzün ismini m olarak çağır şeklinde ifade ettik. Bundan sonra

m ismini kullanıyoruz.

Modül İçinden İstediğimiz Fonksiyon ve Sınıfı Çağırma

Modülümüzün hepsini çağırmak yerine ismini bildiğimiz bir fonksiyonu

çağırabiliyoruz. Dosyamızın içinde oluşturduğumuz fonksiyonu aşağıdaki gibi

çağıralım.

From ifadesi itibaren,-den , -dan gibi anlamlar gelmektedir. Yani modülümüz

dosyasının içindeki selam gördüğün yerden oradan itibaren fonksiyonu çağır

diyoruz. Daha sonra çektiğimiz veriyi print komutuyla ekrana yazdırıyoruz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

117

ZAFER ÇOPUR


Bütün modülleri çağırmak için aşağıdaki iki yoldan birini kullanabilirsiniz.

Modül İçindeki Fonksiyonları Görme

Yazdığımız modülün içinde kullandığımız fonksiyonları dir komutuyla

görebiliriz. Aşağıdaki gibi kodumuzu yazalım.

Özel fonksiyonların dışında en sonda bizim yazdığımız selam isimli

fonksiyonda göründü. Daha önce dir komutuyla hazır fonksiyonları görmeyi

öğrenmiştik. Şimdi bizim hazırladığımız modülle böyle bir fonksiyon

oluşturmayı ve çağırmayı görmüş olduk.

Derlenmiş Modül Dosyaları

Derlenmiş Python dosyaları programların

çalışmaya başlaması için gereken süreyi

kısaltırlar.

Python, derlenmiş sürümünü _pycache_

adın altındaki dizinde önbelleğe alır.

Sağ tarafta gördüğünüz gibi bu dizini

açtığımızda içinde modülümüzün adı

yazmaktadır. Aynı zamanda en sonda sayı

olarak python sürümümüz yazılıdır.

Python, yeniden derlenmesi gerekip gerekmediğini görmek için kaynağın

değişiklik tarihini derlenmiş sürüme göre denetler. Bu otomatik bir işlemdir.

Derlenmiş modüller platformdan bağımsızdır, bu nedenle aynı kütüphane farklı

mimarilere sahip sistemler arasında paylaşılabilir.

Sizde modül oluşturduğunuzda böyle bir dosyayla karşılaşacaksınız.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

118

ZAFER ÇOPUR


Dahili Modüller

Bu modüller python içinde bulunan modüllerdir. Şimdi bu modülleri görelim.

Os Modülü

İşletim sistemine erişim sağlamak için kullanabileceğimiz bir modüldür. Bu

modülün içindeki fonksiyon ve sınıfları görmek için dir komutunu

kullanabilirsiniz.

1. satırda os modülünü yükledik.

2. satırda terminal ekranında yazdırdık. Çok fazla sonuç olduğu için buraya

eklemiyorum.

Bu modülle bilgisayarımızda bulunan dizinlere ulaşabiliriz veya yeni bir dizin

oluşturabiliriz. Aynı zamanda dizinlerimizde bulunan dosyalara ulaşabiliriz.

Şimdi os modülünde kullandığımız fonksiyon ve sınıflardan bazılarını görelim.

Name

İşletim sistemimizin ismini görmemizi sağlar. Aşağıdaki gibi kodumuzu

yazıyoruz.

1.satırda os modülünü çağırdık.

2. satırda os modülü içindeki name yapısının çalışmasını ve ekranda sonucun

yazdırılması istedik.

Terminal ekranında işletim sistemimiz Windows olduğu için nt şeklinde bir

yazı çıktı. Linux olsaydı posix şeklinde çıktı verirdi.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

119

ZAFER ÇOPUR


Getcwd

Kod yazdığımız dosyamızın bilgisayarımızda bulunduğu dizini (klasör) yolunu

görmek için aşağıdaki gibi kodumuzu yazalım.

1. satırda os modülünü çağırdık.

2. satırda dizinimizi görmek için getcws olan fonksiyonumuzu çağırdık.

Terminal ekranında dosyamızın bulunduğu dizinin yolu çıkmış oldu.

Chdir

Biraz önce bulunduğumuz dizinden farklı bir dizine geçiş yapabiliriz.

Aşağıdaki gibi kodumuzu yazalım.

2.sarıda chdir komutuyla dizin değiştirdik. Yalnız dizini yazarken tek tırnak

içine ve aradaki \\ sembolü iki tane yapmaya dikkat edin. Kaçış dizileri

konusunda bunun önemini anlatmıştık.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

120

ZAFER ÇOPUR


Listdir

Bulunduğumuz dizindeki dosyaların neler olduğunu listeleyebiliriz. Aşağıdaki

gibi kodumuzu yazıyoruz.

1. satırda os modülünü yükledik.

2. satırda listdir komutuyla bulunduğumuz dizindeki dosyaların adını

yazdırdık.

Aşağıda bilgisayarımızda bu dizine baktığımızda aynı dosyaları görebiliyoruz.

Startfile

Bulunduğumuz klasör içindeki dosyaları açabiliyoruz. Aşağıdaki gibi

kodumuzu yazıyoruz. Bu kod yalnızca Windows'ta çalışır.

1. satırda os modülünü yükledik.

2. satırda dizin yolunu gösterdik.

3. satırda dosyayı açmak için start file kodunu yazdık ve içerisine dosyamızın

tam adını yazdık.

Kodlarımızı çalıştırdığımızda bu dizinde bulunan resmimiz açılacaktır. Sizde

klasör içine resim yükleyerek açabilirsiniz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

121

ZAFER ÇOPUR


Mkdir

Bilgisayarımızda var olan istediğimiz dizinin içinde klasör oluşturabiliriz. Yani

aşağıda dizin yolunu görüyorsunuz. Dizin yolu bu şekilde olursa klasör

oluşturabiliriz.

Aşağıdaki kodumuzu bu dizin yolunda yazalım ve oluşacak klasörün isminide

sonuna ekleyelim.

1. satırda os modülünü yükledik.

2. satırda mkdir komutuyla oluşturulacak klasör için dizin yolunu yazdık ve en

sona deneme adında klasör olacağını belirttik.

Makedirs

Bir önceki derste var olan bir dizin içinde klasör oluşturmayı anlattık. Şimdi

olmayan bir dizin içinde klasör oluşturacağız. Yani klasör içinde klasör açmak

gibi düşünebiliriz. Olmayan bir klasör açıp içinde klasör oluşturacağız.

1. satırda os modülünü yükledik.

2. satırda makedirs komutu sayesinde deneme2 klasörü oluşturup içine deneme

klasörü yazdırdık.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

122

ZAFER ÇOPUR


Rename

Dizinin içinde bulunan klasörlerin adını değiştirebiliriz. Aşağıda görülen

deneme ismindeki klasörün adını değiştirelim.

1. satırda os modülünü yükledik.

2. satırda klasörümüzün yolunu tanımladık.

3. satırda rename komutuyla deneme adındaki klasörün ismi dene olarak

değişsin dedik.

Rmdir

İçi boş bir klasörü silmemizi sağlar. Dene isimli dosyayı silme işlemini

gerçekleştireceğiz.

1. satırda os modülünü yükledik.

2. satırda klasörümüzün yolunu tanımladık.

3. satırda rmdir komutla dene isimli klasörü silme işlemini gerçekleştirdik.

123

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Removedirs

İç içe geçmiş içi boş klasörleri silebiliriz. Deneme2 isminde bir klasör ve onun

içinde de deneme adlı klasör yaptık. Yalnız klasörlerin içinde dosya

bulunmamaktadır. Bu klasörlerin ikisinde aynı anda silebiliriz.

1. satırda os modülünü yükledik.

2. satırda removedirs kodunu kullanarak silme işlemi gerçekleşeceğini

belirttik. Burada klasörlerimizi yazarken bütün klasörlerin adını yazmamız

gerekiyor. Dikkat ederseniz dıştan içe doğru deneme2\\deneme şeklinde

dosyalarımızın yolunu yazdık.

Böylece klasörlerimizin hepsini

silmiş olduk.

Remove

Klasörlerimizin içinde yer alan dosyalarımızı silmemizi sağlar.

1. satırda os modülünü yükledik.

2. satırda dosyamızın bulunduğu klasör adresini tanımladık.

3. satırda remove komutuyla dosya sileceğimizi ifade ettik. Parantez içinde

silinecek dosyamızın adını yazdık.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

124

ZAFER ÇOPUR


Stat

Bir dosyanın boyutunu, oluşturulma tarihini, değiştirilme tarihini ve erişilme

tarihini sorgulayabiliriz. Deneme isminde bir txt dosyası oluşturalım.

1. satırda os modülünü yükledik.

2. satırda dosyamızın yolunu tanımladık.

3. satırda stat komutuyla dosyamız hakkında bilgilerin alınmasını istedik ve

print komutuyla ekrana yazdırdık.

Burada gördüğünüz gibi bazı ifadeler ve yanında sayısal değerler

bulunmaktadır.

st_atime : Dosyaya en son erişilme tarihi

st_ctime : Dosyanın oluşturulma tarihi (Windows’ta)

st_mtime : Dosyanın son değiştirilme tarihi

st_size : Dosyanın boyutu

Zamanla alakalı olan kısımda gördüğünüz gibi bizim bildiğimiz şekilde zaman

yazmamaktadır. Bizim anladığımız şekilde bunu görmek için datatime modülünü

bilmemiz gerekiyor. Os modülünden sonra datatime modülünü göreceğiz.

System

Bilgisayarımızdaki bazı programları açmamızı sağlar. Mesela aşağıdaki kodu

yazdığımızda notepad programı çalışmaktadır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

125

ZAFER ÇOPUR


Dadetime Modülü

Zaman, saat ve tarihlerle ilgili işlemler yapmamızı sağlayan modüldür. Şimdi

bu modülün içinde kullandığımız içeriklere geçebiliriz.

Now

Bu fonksiyon datetime modülünün içindeki datetime sınıfında yer almaktadır.

Bu fonksiyon, içinde bulunduğumuz zamanı bize göstermektedir.

1.satırda datetime modülünü yükledik.

2.satırda print fonksiyonunun içine ilk yazdığımız datetime modülün ismini

ikinci yazdığımız datetime bu modülün içindeki sınıfı ve now fonksiyonu da bu

sınıfın içinde yer aldığını ifade etmektedir.

Terminalde yazdırdığımızda tarih ve saat karşımıza çıkmaktadır.

Bu fonksiyonun içinde yer alan bilgileri ayrı ayrı çekebiliyoruz.

1. satırda datetime modülünü yükledik.

2. satırda şimdiki tarih ve saati zaman değişkenine aktardık.

3. satırda zaman değişkenindeki year (yıl) bölünü çektik ve ekrana yazdırdık.

Araya nokta yazdığımıza dikkat ediniz.

Diğer zamanları çekmek için year yerine aşağıdaki bilgileri yazabilirsiniz.

month (ay) ,day (gün) ,hour (saat) , minute (dakika) , second (saniye)

,microsecond (mikrosaniye)

today

Now fonksiyonuyla aynı özelliğe sahiptir. Yukarıda yaptıklarımızın aynısını

bize sunmaktadır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

126

ZAFER ÇOPUR


Ctime

Tarih ve zamanı düzenli ve okunaklı bir şekle getirmemizi sağlar.

1.satırda datetime modülünü yükledik.

2.satırda şimdiki tarih ve saati zaman değişkenine aktardık.

3.satırda ctime fonksiyonun içinde değişkenimizi yazdık ve ctime fonksiyonu

ile düzenlenmesini istedik. Düzenlenen bu değer düzenle değişkenine aktarıldı.

4.satırda ekranımızda yazdır dedik.

Terminal ekranında düzenli bir şekilde nasıl yazdığını görüyorsunuz.

Strftime

Tarih ve zaman bilgilerini istediğimize göre biçimlendirmemizi sağlar.

1.satırda datetime modülünü yükledik.

2.satırda zaman değişkenine zamanlarımızı aktardık.

3.satırda düzenle değişkenin içine zamanlardan sadece yılı ve şimdiki günü

aktardık. Burada istediğimiz sırada ve düzende bunu yapabiliyoruz. Strftime

fonksiyonu bu konuda bize yardımcı oluyor.

Terminal ekranında çıktılarımızı görebiliyoruz.

Sonuçlarımızın Türkçe olması için local olarak Türkçeye geçmemiz gerekiyor.

İsterseniz farklı dil seçenekleri de kullanabilirsiniz.

Bu kodumuzu ekleyerek tekrar aynı çalışmayı yapalım.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

127

ZAFER ÇOPUR


Aynı çalışmamızı sonuçlarına baktığımızda Türkçe olarak yazdığını

görmekteyiz.

Aşağıda kullanılan bazı kısaltmaları görebilirsiniz. İhtiyacınıza göre bunları

kullanabilirsiniz.

KOD

BİLGİ

%a Hafta gününün kısaltılmış adı

%A Hafta gününün adı

%b Ayın kısaltılmış adı

%B Ayın adı

%c Tarih, saat ve zaman bilgisi

%d Sayı değerli bir karakter dizisi olarak günü verir

%j Belli bir tarihin, yılın kaçıncı gününe denk geldiğini gösteren 1-366 arası bir sayı

%m Sayı değerli bir karakter dizisi olarak ayı verir

%U Belli bir tarihin yılın kaçıncı haftasına geldiğini gösteren 0-53 arası bir sayı verir

%y Yılın son iki rakamı

%Y Yılın dört haneli hali

%x Tarih bilgisi

%X saat bilgisi

%H Saat

%M Dakika

%S Saniye

https://www.youtube.com/c/ELHarezmiBilgelikEvi

128

ZAFER ÇOPUR


Strptime

Tarih ve saat şeklinde verilen bir ifadeyi parçalara ayırmamızı sağlıyor.

Böylece içinden istediğimiz değerleri çekebiliriz.

1. ve 2. satırda Türkçe diline ayarladık.

4. satırda datetime modülünü yükledik.

5. satırda tarihi ve saati belli olan bir ifadeyi zaman değişkenine aktardık.

6. satırda strptime fonksiyonunda bu değişkenimiz içinde yer alan bütün

değerleri ayırdık ve düzenle değişkeninin içine aktardık.

7. satırda bu değerleri yazdırdık.

8. satırda strftime fonksiyonu ile ayırdığımız bu değerlerden sadece gün ve ayı

yazdırdık.

Fromtimestamp

Os modülünde dosyaların zamanlarını stat fonksiyonuyla bulmuştuk. Ancak

orada çıktı aldığımızda zamanlar bizim anlayacağımız şekilde değildi. Bu

fonksiyon sayesinde bizim anlayacağımız hale dönüştüreceğiz.

Os modülünde yaptığımız gibi bir tane dosya oluşturalım.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

129

ZAFER ÇOPUR


Şimdi aşağıdaki kodları yazalım.

1. ve 2.satırda dilimizi Türkçe yaptık.

3. ve 4. satırda datetime ve os modüllerini yükledik.

6. satırda os modülündeki stat fonksiyonu ile içerideki dosya adresinin zaman

bilgilerini almak istedik. Aynı zamanda bu satırın sonuna st_mite ifadesini

yerleştirdik. Böylece dosyanın değiştirilme tarihi alacağımızı ifade ettik.

Aldığımız bu değeri zaman değişkenine aktardık.

7. satırda fromtimestamp fonksiyonuyla bizim anlayacağımız tarih biçimine

dönüştürdük ve bunu düzenle değişkenine aktardık.

8. satırda aldığımız bu değerlerden sadece gün ve ay bilgilerinin yazılmasını

istedik.

Terminal ekranında istediğimiz çıktıyı böylece almış olduk.

Timedelta

Bu fonksiyonla ileride ya da geride bir tarihe gidebiliyoruz. Aşağıdaki gibi

kodlarımızı yazalım.

1. ve 2. satırda modüllerimizi ve nesnelerimi yükledik.

3.satırda şimdiki zamanı ekranda yazdırdık.

4. satırda şimdiki tarihin üstüne timedelta nesnesiyle 1 hafta 5 gün ilave etmek

istedik. İsterseniz sadece günde ilave edebilirsiniz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

130

ZAFER ÇOPUR


Time Modülü

Bu modülle zamanla alakalı çalışmalar yapabiliyoruz. Zamanla/saatle ilgili

işlemler yapabilmemizi sağlayan fonksiyon ve nitelikleri barındırır.

Şimdi bu modülün içinde kullandığımız içeriklere geçebiliriz.

Gmtime

Programlama dillerinde zamanın başlangıcı (Epoch) olarak 1 Ocak 1970 tarihi

olarak kabul edilmektedir. Bilgisayarlar zamanı bu başlangıç zamanından geçen

saniyeye göre hesaplamaktadır.

Aşağıdaki kodu yazarak sistemimizdeki başlangıç zamanını görelim.

Time

Zamanın başlangıcından içinde bulunduğumuz zamana kadar geçen saniyeyi

bize gösterir.

1. satırda time modülünü yükledik.

2. satırda time modülü içinde time fonksiyonunu çalıştırdık ve ekranda

yazdırdık.

Terminal ekranında gördüğünüz gibi şimdiki zamanımız saniye cinsinden

yazmış oldu.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

131

ZAFER ÇOPUR


Localtime

İçinde bulunduğumuz yıl , ay , gün gibi bilgilere erişmemizi sağlıyor.

1. satırda time modülünü yükledik.

2. satırda zaman değişkenine saniye olarak şimdiki zamanı yazdırdık.

3. satırda saniye cinsinden olan zamanı localtime fonksiyonuna tabii tutarak

şimdi tarih olarak yazmasını istedik. Hesaplanan zaman cevir değişkenine

aktarıldı.

4. satırda ekranda yazdır dedik. Terminal ekranında dersi hazırladığım zamanın

bütün detayları karşımıza çıkmış oldu.

Asctime

Biraz önceki kodumuzu asctime fonksiyonu içerisine aldığımızda zaman

ayarımız daha düzgün ve anlayacağımız şekle dönüşmüş olacaktır.

Strftime

Yukarıda zamanla alakalı bütün bilgileri yazdırmıştık. Şimdi istediğimiz

bilgileri kendimiz seçerek yazdırabiliriz. Yalnız sistemimizin Türkçe ayarlanması

gerekiyor. O yüzden aşağıdaki gibi kodumuzu yazınız.

1. ve 2. satırda anlık olarak sistemimizi Türkçe yapıyoruz.

5. satırda kodumuzu nasıl yazdığımıza dikkat ediniz. Parantez içinde

yazdığımız %c koduyla sadece tarih ve saati çekmiş olduk.

132

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Parantez içinde kullandığımız bazı diğer kodlar aşağıda verilmiştir.

KOD

BİLGİ

%a Hafta gününün kısaltılmış adı

%A Hafta gününün adı

%b Ayın kısaltılmış adı

%B Ayın adı

%c Tarih, saat ve zaman bilgisi

%d Sayı değerli bir karakter dizisi olarak günü verir

%j Belli bir tarihin, yılın kaçıncı gününe denk geldiğini gösteren 1-366 arası

bir sayı

%m Sayı değerli bir karakter dizisi olarak ayı verir

%U Belli bir tarihin yılın kaçıncı haftasına geldiğini gösteren 0-53 arası bir sayı

verir

%y Yılın son iki rakamı

%Y Yılın dört haneli hali

%x Tarih bilgisi

%X saat bilgisi

%H Saat

%M Dakika

%S Saniye

Strptime

Girmiş olduğumuz zamanı struct time nesnesine çevrilmiş şekilde bize verir.

Localtime bölümünde bunu görmüştünüz. Oradaki gibi çıktı oluşmasını

sağlayacağız.

1. satırda time modülünü yükledik.

2. satırda 18 Nov 20 tarihini yazdım. Yalnız bu şekilde yazmamın nedeni

tarihten sonra yukarıda verdiğim kod bilgilerini kullandığım içindir. Mesela

orada %y yazdığım için yılın son iki basamağını yazdım. Siz yazdığınız koda

göre tarih bilgisini oraya yazmalısınız.

133

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Sleep

Programımızda bekleme süresi koymak için kullanıyoruz. Şimdi 1’den 5 ‘e

kadar bir saniye aralıklarla sayıları ekranda yazdırmaya çalışalım. Aşağıdaki gibi

kodumuzu yazıyoruz.

1. satırda time modülünü yükledik.

2. satırda a değişkeninin değeri 1 olsun dedik.

3. satırda while döngüsü kullandık. a değişkeni 5’e eşit ve 5’ten küçük olursa

bu döngüye girilmesi gerektiğini ifade ettik.

4. satırda döngü içine girildiğinde a değerimiz ekrana yazılsın istedik.

5. satırda a değişkenindeki sayıyı 1 arttır dedik.

6. satırda sleep fonksiyonunun içine 1 yazarak 1 saniye beklemesini istedik.

Böylece döngü sürdüğü için bekleme komutundan dolayı ekranımızda

sayılarımız 1 saniye aralıklarla artmaktadır.

1 saniyeden daha az sayı yazmak isterseniz 0.5 gibi bir sayı yazmanız

gerekiyor. Virgüllü sayıları yazarken arada nokta kullanmanız gerekiyor.

Burada yazdığım 0.5 saniye aslında 500 milisaniyedir. 1000 milisaniye 1

saniye olarak geçmektedir. Hesaplamalarınızı buna göre yaparak sürenizi

yazabilirsiniz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

134

ZAFER ÇOPUR


Random Modülü

Rastgele anlamına gelmektedir. Örneğin rastgele bir sayı üretmek istersek bu

modülü kullanmamız gerekiyor.

Şimdi bu modülün içinde kullandığımız içeriklere geçebiliriz.

Random

Bu fonksiyonla 0 ile 1 arasında sayılar üretebiliriz.

1. satırda random modülünü yükledik.

2. satırda random modülü içindeki random fonksiyonunu çalıştırdık ve ekrana

yazdık.

Programı her çalıştırdığımızda farklı bir sayı üretilecektir. Sayımız ondalık

sayı şeklinde olmaktadır. Yalnız virgülden sonra basamak sayısı çok fazladır.

Virgülden sonra sadece iki basamak olsun isterseniz kodumuzu aşağıdaki gibi

yazmamız gerekiyor.

Uniform

İstediğimiz herhangi iki sayı arasında sayı üretmemizi sağlar.

1. satırda random modülünü yükledik.

2. satırda 2 ile 2.3 arasında rastgele bir sayı üretmesini istedik.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

135

ZAFER ÇOPUR


Randint

İstediğimiz iki tam sayı arasında rastgele tam sayı üretmemizi sağlar. Yani

virgüllü sayı üretmez.

1. satırda random modülünü yükledik.

2. satırda 4 ile 9 arasında rastgele bir tam sayı üretmesini istedik. Burada çıktı

olarak 4 ve 9 sayıları da olabilir.

Randrange

Randint gibi rastgele tam sayı seçmemizi sağlıyor. Arasında bazı farklar

bulunmaktadır. Örnekler üzerinde bu farkları görelim.

Tek bir sayı yazmamız yeterli olmaktadır. Burada sadece 4 sayısı olsa da

program onu 0 ile 4 arası olarak algılamaktadır. Çıktı olarak 0,1,2 veya 3

değerlerini vereceğine dikkat edin. Dört değeri dahil değildir.

Bu örneğimizde 4 ile 6 arasında tam sayı seçmesini istedik. Ancak çıktı olarak

4 veya 5 verecektir. Altı değeri dahil değildir.

Sample

Verilen diziden belirli sayıda rastgele öğe almamız sağlar.

3. satırda sayılar listesinden 3 tane rastgele öğe seçip yazmasını istedik.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

136

ZAFER ÇOPUR


choice

Liste gibi dizi özelliği taşıyan verilerin içinden rastgele öğe seçilmesini sağlar.

1. satırda random modülünü yükledik.

2. satırda harfler isimli liste tanımladık.

3. satırda choice fonksiyonuyla harfler listesinden rastgele bir öğe seçtik.

İsterseniz karakter dizilerinden bir öğe seçebiliriz.

Shuffle

Dizi özelliği taşıyan verilen öğelerinin yerlerini değiştirir.

1. satırda random modülünü yükledik.

2. satırda harfler isimli liste tanımladık.

3. satırda shuffle fonksiyonuyla sayıların yerlerini değiştirdik.

4. satırda ekrana yazdırdık.

Dikkat ederseniz kelime isimli listemiz geri dönülmemek üzere tamamen

değişmiş oldu.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

137

ZAFER ÇOPUR


Math Modülü

Matematiksel işlemlerin daha kolay yapılmasını sağlayan bir modüldür. Bu

modülün içinde geçen fonksiyonları dir komutuyla ekranınıza aşağıdaki gibi

yazdırabilirsiniz.

Modülümüzde kullanılan matematiksel fonksiyonları daha iyi anlamak için

matematik bilginizin olması gerekiyor. Burada sadece fonksiyonların ne işe

yaradıkları üzerinde anlatım yapılacaktır.

Şimdi bazı fonksiyonların çalışma mantıklarını öğrenelim.

ceil

Yazılan ondalık sayının bir üstte bulunan tam sayı şeklinde çıktı alınmasını

sağlar.

1. satırda math modülünü yükledik.

2. satırda math modülünde ceil fonksiyonunu çalıştırdık. İçeride yazan 21.4

ondalık sayısının bir üst tam sayının yazılmasını istedik. Burada yuvarlama

işlemi yapılmıyor dikkat ediniz.

copysign

İkinci sayının işaretini birinci sayıya vermemizi sağlar.

1. satırda maht modülünü yükledik.

2. satırda parantez içinde iki tane sayı yazıldı. İkinci sayının eksi olan işareti

birinci sayının işareti olarak atandı. O yüzden -21 şeklinde çıktı alındı. İşaretleri

çarpmadık dikkat ediniz. Cevap ondalık sayı olarak çıkıyor.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

138

ZAFER ÇOPUR


fabs

Sayının mutlak değerini almamızı sağlar.

factorial

Pozitif tam sayıların faktöryelini almamızı sağlar.

floor

Verilen ondalık sayının bir altındaki tam sayı olarak çıktı almamızı sağlar.

fmod

İki sayının birbirine bölümünden kalanı almamızı sağlar.

fsum

Liste içinde yazılan sayıların toplamını bulmamızı sağlar.

gcd

İki sayının Ebob’unu bulmamızı sağlar.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

139

ZAFER ÇOPUR


trunc

Ondalık sayının sayı doğrusu üzerinde pozitif olma durumunda soldaki ,

negatif olma durumunda sağdaki tam sayıyı çıktı olarak vermemizi sağlar.

e

Euler sabitini içinde barındırır.

pi

Pi sayısının içinde barındırır.

tau

Tau sabitini içinde barındırır. Pi sayısının iki katıdır.

exp

Euler sabitinin kuvvetini almamızı sağlar. Aşağıda 3. kuvvetini aldık.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

140

ZAFER ÇOPUR


expm1

Euler sabitinin verilen kuvvetinden 1 çıkartarak yazılmasını sağlar.

log

Birinci değerin ikinci değere göre logaritmasını bulmamızı sağlar.

log1p

Sayının 1 fazlasını alır ve e tabanında logaritmasını bulmamızı sağlar.

log2

Sayının 2 tabanına göre logaritmasının hesaplanmasını sağlar.

log10

Sayının 10 tabanına göre logaritmasının hesaplanmasını sağlar.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

141

ZAFER ÇOPUR


pow

Verilen sayılardan birinciyi taban, ikinciyi kuvvet şeklinde alarak üslü sayı

hesaplamamızı sağlar.

sqrt

Sayının karekökünü hesaplamamızı sağlar.

radians

Derece olarak verilen açıyı radyan cinsine çevirir.

degrees

Radyan cinsinden verilen açıyı derece cinsine çevirir.

Trigonometriyle ilgili hesaplamalar yapabileceğimiz fonksiyonlarda mevcuttur.

Şu an için temel düzeyde derslerimizi anlattığımız için diğer fonksiyonları

yazmıyorum.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

142

ZAFER ÇOPUR


Re Modülü (Düzenli İfadeler)

Bir metin içerisinde istediğimiz metinleri yakalayabilmemize imkân tanır.

Yakaladığınız bu metinlerde istediğimiz değişiklikleri tek adımda yapabiliriz. Bu

modül, birkaç saatte yapabileceğiniz bir işlemi saniyeler içerisinde sizin yerinize

yapabiliyor.

Eğer çok fazla ve karmaşık bir kod yapısıyla uğraşıyorsanız son çare olarak

düzenli ifadeleri uygulamanız daha iyi olacaktır.

Bu modülün içinde yer alan fonksiyon ve metotları aşağıdaki kodu yazarak

görebilirsiniz.

Bulduğumuz sonuçlardan bazılarının ne olduğunu inceleyelim.

match

Bu metot yazılan karakter dizisinin ilk karakterinden itibaren aradığımız

kelimenin olup olmadığına bakar.

1. satırda modülü yükledik.

2. satırda metin adında bir değişken oluşturduk ve içine yazılarımızı yazdık.

3. satırda re modülünde match metodunu çalıştır dedik. İçerisine aradığımız

kelimeyi girdik ve virgülden sonra bulacağı kelimenin nerede aranacağını ifade

ettik.

Match metodu ilk kelimeyle bizim aradığımız eşleştiği için terminal ekranında

span ve match şeklinde iki ifade oluşturdu.

Span diyerek aradığımız kelimenin 0 ile 14 karakterler arasında olduğunu bize

söyledi. Match diyerek aradığımız kelimenin eşleştiği kelimeyi bize yazdı.

Eğer Dünya yazsaydık bulamayacaktı ve bize none şeklinde cevap yazacaktı.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

143

ZAFER ÇOPUR


Terminal ekranında aldığımız span ve match değerlerini tek olarak da

yazdırabiliriz.

1. satırda re modülünü yükledik.

2. satırda yazımızı metin değişkenine aktardık.

3. satırda metin değişkeni içerisinde aradığımız kelimeyi yazdık ve bunu sonuç

değişkenine aktardık.

4. satırda sonuç değişkenine aktardığımız değerlerden span değerini çekmek

için sonuc.span() şeklinde ifademizi yazdık.

4. satırda sonuç değişkenine aktardığımız değerlerden match değerini çekmek

için sonuc.group() şeklinde ifademizi yazdık.

Terminal ekranında gördüğünüz gibi iki değeri tek başına çekmiş olduk.

search

Bu metot aradığımız neyse bütün metin içerisinde arama yaparak bulmaya

çalışır.

1. satırda re modülünü yükledik.

2. satırda yazımızı metin değişkenine aktardık.

3. satırda search metodunu kullanarak dünya kelimesini metin değişkeni

içerisinde arattırdık. Bulduğunda sonuç değişkenine atamasını istedik.

Terminalde böyle bir kelime olduğu ve yeri detaylı olarak yazdı.

144

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Liste içinde bu şekilde arama yaptıramıyoruz. Bunun için listenin elemanlarını

for döngüsüyle alacağız ve daha sonra search metodundan geçirerek istediğimiz

elemanın olup olmadığına bakacağız.

1. satırda re modülünü yükledik.

2. satırda metin adında bir liste oluşturduk.

3. satırda for döngüsü kullandık. Metin isimli listenin içindekileri i değişkenine

aktar dedik.

4. satırda her döngüde i değişkeninin içini search komutuyla b’yi aradık ve

bulduğunda bu değeri sonuç değişkenine aktardık.

5. satırda eğer sonuç bulursan 6. satırda match değerini yazdır dedik. Böylece

aradığımız b elemanı bulunduğunu anlamış olduk.

Start ve End

Bir önceki örneğimizde dünya kelimesinin 16. ve 21. arasında olduğunu

görmüştük. Şimdi start komutuyla 16 sayısını, end komutuyla 21 sayısını almaya

çalışacağız.

1. satırda re modülünü yükledik.

2. satırda yazımızı metin değişkenine aktardık.

3. satırda search metodunu kullanarak dünya kelimesini aradık ve sonuç

değişkenine aktardık.

4. satırda sonuç değişkenimize start komutunu başlangıç sayısını, end

komutunu bağlayarak bitiş sayısını çekmiş olduk.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

145

ZAFER ÇOPUR


findall

Bir metnin içinde aradığımız şeyin kaç defa tekrar ettiğini bulabiliriz.

1. satırda re modülünü yükledik.

2. satırda metin değişkenine aktardığımız yazımızı yazdık.

4. satırda findall metoduyla Allah kelimesinin metin değişkeni içinde kaç defa

tekrar ettiğini buldurduk. Orada len komutu yaparak sayısını terminalde

yazdırdık.

Metakarakterler

Düzenli ifadelerde arama yaparken aramak istediğimizi aynen yazdık. Birebir

olarak aynı ifademizin arama sonucunu bulmaya çalıştık. Metakarakterler

sayesinde arama işlemimizi daha farklı bir yolla yapabileceğiz.

Metakarakterler dediğimiz aslında bizim bildiğimiz bazı sembollerdir. Mesela .

(nokta) , [] (köşeli parantez) gibi…

Biraz daha açmak istersek mesela aradığımız metin içinde bolu , dolu gibi

sadece ilk harfi farklı olan kelimeler ya da Esma Esra gibi sadece üçüncü harfi

farklı olan kelimeler ya da Hilal Bilal gibi çok az harfi farklı olan kelimeler

aratabiliriz.

İşte metakarakterler bu tarz aramalarda bize kolaylık sağlamaktadır. Tek tek

aramak yerine sadece metakarakterler kullanarak istediklerimizi çok hızlı

bulabiliriz.

Şimdi bunların ne olduğunu görelim.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

146

ZAFER ÇOPUR


. (Nokta)

Kelimelerin sadece bir ya da iki harfi farklı olabiliyor. Bu tarz kelimeleri

bulmak için farklı olan harflerin yerine nokta yazmamız aramamızı

kolaylaştıracaktır. Nokta orada yazan bütün karakterleri almaktadır. Yalnız cümle

içinde kaçış dizilerine benzer yani \n şeklinde yazılar varsa onları alamıyor.

İlerleyen derslerimizde bunu göreceğiz.

1. satırda re modülünü yükledik.

2. satırda cümlemizi yazdık.

3. satırda findall metodunu kullanarak istediğimiz bir kelimenin metin

içerisinde aranmasını ve terminal ekranında yazdırmasını istedik.

Aratacağımız kelimeyi yazarken önce nokta sonra olu yazdık. Yani nokta olan

yerde bir harf var ama onun ne olduğunun önemsenmemesi, yeter ki sonra olu

ifadesi olsun sen onu bul diyoruz.

Noktayı farklı olan harfler nerede bulunuyorsa orada kullanabilirsiniz.

[] (Köşeli Parantez)

Benzer olan kelimeleri aradığımızda farklı harflerin bizim istediğimize göre

bulunmasını sağlayabiliriz.

4. satırda nokta yerinde bu sefer köşeli parantez içinde B ve d yazdık. Yani

orada bulunan harf ya B ya da d olarak bakılacak. Daha sonrada olu ifadesi

olacak dedik. Böylece cümlemizde şartımıza uyan iki tane kelime bize çıktı

olarak verildi.

147

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Şimdi nokta ve köşeli parantez metakarakterlerini birlikte kullanalım.

1. satırda re modülünü yükledik.

2. satırda listemizi oluşturduk.

3. satırda for döngüsü oluşturarak listenin elemanlarını i değişkenine sırayla

aktardık.

4. satırda eğer i değişkeninin içinde sol taraftaki kodumuzda .[0-9] şeklinde,

sağ taraftaki kodumuzda .[A-Z] şeklinde match metodu ile arama yapmasını

istedik. Listenin her öğesinin ilk karakterinden itibaren araştırma yapacağımız

için match metodunu kullandık.

.[0-9] şeklinde yazmamızın amacı birinci karakter ne olursa olsun al ama ikinci

karakter 0’dan 9’a kadar olan rakamlardan olsun şeklindedir.

.[A-Z] şeklinde yazmamızın amacı birinci karakter ne olursa olsun al ama

ikinci karakter büyük harf olarak A’dan Z’ye kadar olsun şeklindedir.

İkinci karakteri istersek hem sayı hem harf olarak ikisini de aramasını

isteyebiliriz.

4. satırda .[0-9A-Z] şeklinde yazarak ikinci karakterin sayı ya da büyük harf

olmasını istedik.

Listemizin öğelerine dikkat ederseniz 3 karakterli olanlarda mevcuttur. Böyle

yazsak bile ilk iki karakterde arama yaptırmış olduğumuz için sonuçlarda 3

karakterlilerde durumu sağladığı için yazdırılmış oldu.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

148

ZAFER ÇOPUR


* (Yıldız)

Yıldız sembolü, kendinden önce gelen karakterden hiç olmaması ya da birkaç

kez yazılması durumlarını incelemektedir.

1. satırda re modülünü yükledik.

2. satırda listemizi oluşturduk.

3. satırda for döngüsü oluşturarak listenin elemanlarını i değişkenine sırayla

aktardık.

4. satırda eğer i değişkeninin içinde b*ol ifadesini varsa bunu match komutuyla

aldık ve yazdır dedik.

b*ol ifadesinde yıldızdan önce b harfi bulunmaktadır. Yani orada b harfi hiç

olmasın ya da birkaç kez olursa olsun böyle bir ifade varsa almasını istedik.

Terminal ekranımıza baktığımızda ol kelimesi alındı. Çünkü b olmasa da olur

dedik. Daha sonra bol ve bbol ifadeleri de alındı. Eğer orada 10 tane b ile

başlayan kelime olsa onu da çıktı olarak alırdı.

Nokta ve yıldızın birlikte kullanılması bize kolaylık sağlıyor. Şimdi onunla

ilgili bir örnek yapalım. Mesela klasörümüzün içindeki dosyaları bulup ve

içinden bizim istediğimiz dosyaların adlarını yazdırmaya çalışalım.

2. satırda klasörümüzün içindeki dosyaları tanımladık. Yalnız bir tanede dosya

ismi olmayan txt yazdım.

4. satırda .*txt şeklinde isimleri aramasını istedik. İlk nokta kullandığımız için

ilk karakterin sayı ya da harf olmasının önemi yok dedik. Daha sonra yıldız

koyduğumuzda bir önceki ifademiz nokta olduğu için bundan sonra istediğimiz

kadar nokta varmış gibi program düşünüyor. Daha sonra txt ifadesi olduğu için

program txt bulana kadar böyle taramaya devam ediyor. Böylece txt ifadesinden

önce ne yazılırsa yazılsın biz txt dosyalarını bulmuş olacağız.

Yalnız orada txt ifadesinden önce bir şey yoksa yine almaktadır. Çünkü yıldız

kendinden önceki karakter hiç yokmuş gibi durumları da alıyordu.

O halde böyle bir durum olduğunda arama yaparken dikkat etmemiz gerekiyor.

Şimdi artı sembolünde bunu nasıl düzelteceğimizi anlatacağız.

149

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


+ (Artı)

Biraz önce gördüğümüz yıldız sembolüne benzer mantıkta çalışmaktadır.

Yıldız sembolü kendinden önce gelen karakterden hiç olmaması ya da birkaç kez

yazılması durumlarını incelediğini söylemiştik. Artı sembolü de kendinden önce

gelen karakterden en az bir tane yazılması durumlarını incelemektedir. Yani

yıldızda hiç olmama durumu da alınıyordu ama artı sembolünde bu alınmıyor.

Yıldız sembolünde yaptığımız ilk örneği yapalım. Aradaki farkı hemen

göreceksiniz.

4. satırda yıldız yerine artı yazdığımızda çıktı olarak ol kelimesi çıkmamıştır.

Çünkü dediğimiz gibi artı sembolü b’den en az bir tane kullanmak istiyor.

Burada 10 tane b ile başlayan kelime olsa onları yine alırdı. Böyle bir arama

gerçekleştiriyor.

Yıldız sembolünde dosya arama örneği yapmıştık. Txt uzantılı dosyaları

aradığımızda dosya ismi olmayan öğeyi de almıştık. Şimdi aynı kodu artı

kullanarak yazalım.

4. satırda .+txt şeklinde yazdığımızda program önce ilk karakterin sayıda harf

olduğuna bakmadan gidecek. Yanında artı yazdığımız için aynı yıldız sembolü

gibi sürekli nokta varmış gibi program algılayacak. Karakterleri geçerek

giderken txt bulduğunda bunları alacak. Ancak artı yazdığımız için mutlaka txt

den önce bir karakter daha alması gerekiyor. Orayı boş geçemiyor. Listemizde

txt öğesini o yüzden alamıyor. Diyelim ki txt yerine atxt yazsaydık onu alacaktı.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

150

ZAFER ÇOPUR


? (Soru İşareti)

Yıldız sembolü yapısına benzer mantıkta çalışmaktadır. Kendinden önce gelen

karakterden hiç olmaması veya sadece bir tane yazılması durumunu araştırır.

Yıldızda birden fazla da olabiliyordu.

1. satırda re modülünü yükledik.

2. satırda listemizi oluşturduk.

3. satırda for döngüsü oluşturarak listenin elemanlarını i değişkenine sırayla

aktardık.

4. satırda eğer i değişkeninin içinde b?ol ifadesini varsa bunu match komutuyla

aldık ve yazdır dedik.

b?ol ifadesinde soru işaretinden önce b kullandık. Böyle b harfi hiç olmayabilir

ya da bir kez kullanmış olabilir. Daha sonra ol şeklinde yazılan kelimeleri

aramasını istedik. Sonuç olarak ol ve bol şeklinde bize çıktı verdi.

{} (Süslü Parantez)

Kendinden önce gelen karakteri istediğimiz kadar tekrar etmesi anlamına

gelmektedir.

1.satırda re modülünü yükledik.

2. satırda cümlemizi metin değişkenine aktardık.

5. satırda kelimeler benzer olduğu için findall metodu kullandık. Bu

kelimelerin içinde iki tane a olduğu için a’dan sonra süslü parantez içinde iki

yazdık. Yani a harfinden iki tane olacak şeklinde ifade ettik. Böylece metin

içinde istediğimiz şekilde aramayı gerçekleştirdik.

İsterseniz süslü parantez içinde {1,4} gibi ifadelerde yazabiliriz. Böylece en

az ve en fazla kaç tekrar etmesi gerektiğini belirtmiş oluruz.

151

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


^ (Şapka İşareti)

Match metoduyla aynı mantıkta çalışmaktadır. Yazılı olan cümlenin en başında

bizim aradığımız kelimenin olup olmadığına bakar.

1.satırda re modülünü yükledik.

2. satırda cümlemizi metin değişkenine aktardık.

3. satırda search metodu kullandık. Arayacağımız kelime içinde şeklinde

tanımladık. Ancak içinde yazmadan önce şapka işaretini kullandık. Böylece

aradığımız motot aslında match metoduna dönüşmüş oldu. Cümlenin en başında

aradığımız kelime bulunduğu için terminal ekranın çıktımızı almış olduk.

Şapka işaretinin aynı zamanda olumsuz kullanıldığı durumda olabiliyor.

Yukarıdaki örneğimizi listeye dönüştürerek bu uygulamayı farklı bir şekilde

yapmaya çalışalım.

1.satırda re modülünü yükledik.

2. satırda cümlemizi metin değişkenine aktardık.

5. satırda split sayesinde metin değişkeni içinde olan cümlemizi listeye

dönüştürdük ve metin liste değişkenine aktardık.

6. satırda for döngüsüyle liste elemanlarını i değişkenine sırayla aktardık.

7. satırda eğer ifadesiyle bizim aradığımız şey varsa ekrana yazdır dedik.

Match metoduyla arama yaptırdık.

[^A-Z]+[a-z]+ ifadesinde şapka köşelinin içinde olduğundan dolayı orası

olumsuz ifadeye dönüştü. Yani ilk karakterimiz büyük harfle başlayamayacak

şeklinde arama gerçekleşecek ve yanına artı yazdığımız için en az bir tane

şeklinde olacak dedik. Daha sonra köşeli içinde a-z yazdık ve sonuna artı

ekledik. Yani bundan sonra en az bir tane küçük harf gelmesi gerektiğini ifade

ettik.

152

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


$ (Dolar İşareti)

Match metodunda karakter dizisinin en başından arama gerçekleştirirken bu

işaret en sonundan arama gerçekleştirmektedir.

1.satırda re modülünü yükledik.

2. satırda cümlemizi metin değişkenine aktardık.

5. satırda split sayesinde metin değişkeni içinde olan cümlemizi listeye

dönüştürdük ve metin liste değişkenine aktardık.

6. satırda for döngüsüyle liste elemanlarını i değişkenine sırayla aktardık.

7. satırda eğer ifadesiyle bizim aradığımız şey varsa ekrana yazdır dedik.

Search metodu ile arama işlemine başladık. Orada at$ şeklinde ifade

arayacağımızı ifade ettik. Yani listenin elemanlarının hangileri at ile bitiyor onu

ara dedik. Böyle yazdır komutuyla sonuçlarımızı ekrana yazdırdık.

| (Veya İşareti)

Normal düz çizgi veya anlamına gelmektedir. Bu işareti yapmak için altgr+tire

tuşlarına basmanız gerekiyor.

7. satırda at$ | [A-Z]+ ifadesini aramasını istedik. Yani at ile biten veya

büyük harfler en az bir kez yazılmış kelimeleri bul dedik. O yüzden bazı

kelimesini de bize vermiş oldu. Ziraat hem büyük harfle hem de at ile bittiği için

zaten ikisinde de olacaktı.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

153

ZAFER ÇOPUR


\ (Ters Bölü İşareti)

Daha önce kaçış dizilerinde görmüştük. Yine aynı mantıkla kullanılmaktadır.

Biraz önce dolar işaretini kullanmıştık. Diyelim ki cümle içinde dolar cinsinden

para miktarı arıyoruz. Dolar işaretinin bir anlamı olduğu için almamız mümkün

değil. Ancak ters bölü sayesinde bu etkiyi ortadan kaldırıp dolar işaretini

alabiliriz.

1. satırda re modülünü yükledik.

2. satırda liste oluşturduk.

3. satırda for döngüsüyle metin listesinin içindeki öğeleri sırayla aldık ve i

değişkeninin içine aktardık.

4. satırda en az bir defa sayıyla başlayan ve yanında $ işareti olan karakterleri

ara dedik.

5. satırda böyle bir sonuç bulduğunda ekrana yazmış oldu.

Burada \ yapmak için iki defa \\ kullandık. Bir defa kullanarak anlatımlar

yapılmış ancak bizim kullandığımız programda problem hatası verdiği için iki

tane kullandık.

() (Parantez İşareti)

Gruplama yapılarak aratma işlemi diyebiliriz.

4. satırda .*(@m)+ şeklinde olanları aramak istediğimizi belirttik. Parantez

içinde @m yazarak bir grup oluşturduk. Daha sonra + yazarak bu gruptan en az

bir tane olmak zorunda dedik. Artı sembolümüz grubun tamamına etki yapmış

oldu.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

154

ZAFER ÇOPUR


Özel Meta Dizileri

Yukarıda gördüklerimizin haricinde özel anlam taşıyan dizilerde bulunmaktadır.

Şimdi bunları görelim.

\s ve \S İfadeleri

\s ifadesi boşlukları , \S ifadesi boşluk dışındaki karakterleri almamızı sağlar.

1. satırda re modülünü yükledik.

2. satırda metin değişkenine cümlemizi aktardık.

3. satırda sonuç değişkenine sol tarafta boşlukları ara ve aktar, sağ tarafta

karakterleri ara ve aktar dedik.

4. satırda sol tarafta boşlukları ekrana yazdırdık, sağ tarafta karakterleri ekrana

yazdırdık.

5. satırda len fonksiyonuyla ekrana sonuçlarımızın sayısını yazdırdık.

\d ve \D ifadeleri

\d ifadesi rakamları,\D ifadesi rakamların dışındaki karakterleri almamızı

sağlar. Böylece rakamları çekmek için [0-9] yerine \d ifadesini

kullanabiliriz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

155

ZAFER ÇOPUR


\w ve \W İfadeleri

\W özel karakterleri, \w özel karakter dışındakileri almamızı sağlar. \w aynı

zamanda alt çizgiyi de almaktadır.

Daha önce [A-Za-z0-9_] şeklindeki ifadeye benzer ifadeler örneklerimizde

kullanmıştık. Burada arayacağımız karakter büyük harf, küçük harf, rakam ve alt

çizgi olabilir ifadesi geçmektedir. Bunun yerine \w kullansak aynı şeyi yapmış

oluruz.

Eşleşme Nesneleri

group ve groups Metodu

Bu iki metot birbirine benzemektedir. Tek farklı groups metodu çıktıları demet

şeklinde vermektedir.

1. satırda re modülünü yükledik.

2. satırda arama yapacağımız cümleyi metin değişkenine aktardık.

3. satırda iki tane kelimeyi parantez içine aldık ve grupladık. Bu iki kelimeyi

metin içinde ara dedik ve eşleştir değişkenine aktardık.

4. satırda group ifadesinden sonra sadece parantez yazıldı. Böyle sayısız

yazılırsa aradığımız kelimeler bulunduğu için hepsi terminalde çıktı.

5. satırda sayı olarak sıfır yazdığımızda yine hepsi terminalde çıktı.

6. satırda aradığımız 1 yazdığımız için birinci grup yazdı.

7. satırda 2. grup yazdı.

8. satırda groups metodunu çalıştır dedik ve terminalde demet olarak çıktılar.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

156

ZAFER ÇOPUR


Derleme İşlemi

compile Metodu

Düzenli ifadeleri hızlandırmak için bu metotla derleme işlemi yaparız. Daha

önce yaptığımız bir örneği bu sefer derleyerek aynı sonucu bulmaya çalışalım.

1. satırda re modülünü yükledik.

2. satırda metin adında bir liste tanımladık.

3. satırda derlenmiş adında bir değişken oluşturduk ve aramak istediğimiz

ifadeyi derleyip bu değişkene aktardık.

4. satırda for döngüsüyle listemizin içinden öğeleri sırayla alıp i değişkenine

aktardık.

5. satırda i değişkeninin içinde derslenmiş ifademizi ara dedik. Eğer ifadesi

başa eklendiği için bu ifadeyi bulduğunda şekline getirmiş olduk.

6. satırda ifade bulunduğu için ekranda yazacaktır.

Derleme Seçenekleri

re.I

Arama yaparken büyük küçük harf ayrımından bahsetmiştik. Bu seçenek

sayesinde büyük küçük harf ayrımı olmadan arama yapabiliriz. Burada re’den

sonra yazılan büyük ı harfidir dikkat edelim.

Yukarıda mail adreslerinden birisinde mail.com diğerinde MAIL.NET yazıyor.

Yani kullanıcı mail adresini büyük harfle yazmış olabilir. O halde bizim bunu

düşünüp ikisine birden bakmamız gerekiyor.

3. satırda derleme işlemi yaparken re.I şeklinde yazdığımıza dikkat edin.

Derleme işleminde arayacağın her karakter büyük ya da küçük harf olabilir diye

işlem yaptırdık. Terminal ekranında çıktımızı görebiliyorsunuz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

157

ZAFER ÇOPUR


re.S

Cümlemiz içinde nokta metakarakteriyle arama yaptırırken bütün karakterleri

almaktaydı. Ancak \ ile başlayan metakarakter yapıları cümlede varsa bunları

alamıyordu. Bu S derleme seçeneği sayesinde bu şekilde bulunan yapıları

alabiliyoruz.

1. satırda re modülünü yükledik.

2. satırda cümlemizi metin değişkenine aktardık. Burada cümlemizi yazarken

\n ifadesi kullandığımıza dikkat edin. Bu alt satıra geç anlamına gelmektedir.

Aslında biz orada iki satırlık bir cümle yazıyoruz.

3. satırda derleme işlemi yapıyoruz. Yalnız arayacağımız şey Dünya.*

şeklindedir. Yani Dünya kelimesinden sonra ne geliyorsa hepsini al dedik. Eğer

orada re.S ifadesini yazmasaydık \n den sonra gelen cümlemiz alınmayacaktı.

Sadece Dünya yazıp kalacaktı.

4. satırda metin değişkenimizin içinde derlenmiş ifademizi arattırdık ve ara

değişkenine bunu aktardık.

5. satırda terminal ekranına yazdırdık.

Metin Değiştirme

sub Metodu

Metin içerisinde ifadeyi başka bir ifadeyle değiştirebiliriz.

3. satırda sub metodunun içinde Dünya kelimesi yerine Kardeşlerim

kelimesinin gelmesini istedik.

Bu örneğimizde küçük harf ya da büyük harf olarak ayrım yapmadan arama

yaptırmak isteyebiliriz. Yalnız bunu eklemek için flags=re.I olarak yazmamız

gerekiyor.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

158

ZAFER ÇOPUR


Json Modülü

Farklı programlama dilleri arasında iletişim kurmamızı sağlar. Elimizde

bulunan liste, sözlük, demet ve diğer veri tiplerini bu yöntemle aktarabiliyoruz.

json.dumps

Bu fonksiyonla elimizdeki veriyi json formatına çeviriyoruz.

Listeler

1. satırda json modülünü yüklüyoruz.

2. satırda harfler adında bir liste tanımladık.

3. satırda json harfler isminde değişken oluşturduk .Böylece listemizin

değişmiş halini bu değişkene aktaracağız. Json formatına çevirmek için

yazdığımız kalıbımıza dikkat ediniz. json.dumps(harfler) şeklinde yazarak

harfler listemizi json formatına çevir dedik.

4. satırda json harfler değişkenimizin içindekileri yazdır dedik.

5. satırda json formatına çevirdiğimiz listenin özelliğinin ne olduğunu görmek

için type koduyla yazdırdık. Böylece liste yapısının değiştiğini gördük. Json ile

yapıyı değiştirdiğimizde string veri tipine dönüştüğünü görmüş olduk.

Sözlük

1. satırda json modülünü yükledik.

2. satırda bilgi adında sözlük tanımladık.

Diğer örnekte olduğu gibi bu sözlük veri tipimizi json formatına çevirdik.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

159

ZAFER ÇOPUR


Demetler

1. satırda json modülünü yükledik.

2. satırda bilgi adında demet tanımladık.

Demet veri tipimizi json formatına çevirdik.

Sayılar

1. satırda json modülünü yükledik.

2. satırda bilgi adında sayı tanımladık.

Sayı veri tipimizi json formatına çevirdik.

Karakterler

1. satırda json modülünü yükledik.

2. satırda bilgi adında karakter tanımladık.

Karakter veri tipimizi json formatına çevirdik.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

160

ZAFER ÇOPUR


json.loads

Json verilerini Python verisine çevirmek için bu fonksiyonu kullanırız.

Bu olayı liste yöntemde yazılan bir veri üzerinde görelim.

1. satırdan 5. satıra kadar json formatına çevirme şeklinde örneğimizi daha

önce yapmıştık.

7. satırda loads fonksiyonu sayesinde json bilgi içine aktardığımız verimizi

Python formatına yükledik. Cevir isminde değişkenimize aktardık.

8. satırda bunu terminal akranına yazdırdık.

9. satırda veri tipinin özelliğini yazdırdık.

Terminal ekranında gördüğünüz gibi önce json formatına çevirdiğimiz için

string veri tipine dönüştü. Daha sonra tekrar geriye döndürerek liste veri tipine

dönüştürdük.

Derslerimizde veri tiplerinden öğeleri tek tek seçmeyi ve ekrana yazdırmayı

detaylı olarak incelemiştik. O derslerde kullandığımız yöntemler sayesinde

aldığımız bu verileri istediğimiz gibi kullanabiliriz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

161

ZAFER ÇOPUR


PİP

Pip paket yöneticisidir. Hazır modülleri kurmanızı sağlayan yardımcı bir

programdır.

Python 3.4.0 sürümlerinden sonrasını yüklemişseniz zaten siz de yüklü

olacaktır. Bunu görmek için komut istemini açıp pip3 yazıp arattırmanız yeterli

olacaktır. Eğer yüklüyse aşağıdaki gibi yazılar çıkacaktır.

Hazır modüller bulmak isterseniz https://pypi.org/ adresini inceleyebilirsiniz.

Yapmak istediğiniz bir çalışma için hazır modülü bu adresten bulmuşsanız

komut istemine yazarak bunu hemen indirebilirsiniz. Modül adınız bilmeniz

yeterli olacaktır.

Dosya olarak bilgisayarına indirmişseniz. O klasör içindeyken komut istemini

çalıştırıp aşağıdaki gibi dosyayı yükleyiniz.

F:\python> şeklinde yazan yer benim klasörümün bulunduğu yer.

Daha sonra benim bilgisayarımda Python çalışması için Python yazmak

gerekiyor. Sizde de bu şekilde olabilir. Olmazsa python3 yazılabilir.

py uzantılı dosya adını yazdıktan sonra install diyerek modülü

yükleyebilirsiniz.

162

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Numpy Kurulumu

Python ile bilimsel hesaplamaların çok hızlı yapılması için oluşturulmuş temel

bir programlama paketidir. Makine öğrenmesi, görüntü işleme ve yapay zeka

konularında çalışma yaparken sıkça hesaplama işlemleri yapılmaktadır.

Hesaplama işlemleri ve dönüşüm işlemlerinde sıkça kullanılan kod yapısı numpy

kütüphanesi ile basit bir seviyede ve az kod yazacak şekilde tasarlanmıştır.

Bu dersimizde sadece kurulum nasıl gerçekleşiyor sizlere onu anlatacağım.

Komut istemi ekranımızı açalım ve aşağıdaki gibi yazımızı yazalım.

Bazen pip sürümlerinden dolayı yükleme hatası alınabiliyor. Ekranınızda pip

güncellemesi yapacağınız kod size veriyor. O kodu yazıp tekrar denediğinizde

kütüphane yüklenecektir.

Numpy kurulumunun olup olmadığını aşağıdaki kodu yazarak bakabilirsiniz.

İki tane liste tanımladık. Birisi bizim bildiğimiz liste yapısı diğeri ise numpy

liste yapısıdır. Terminal ekranımızda ikisinin liste yapısının nasıl çıktı verdiğini

görmektesiniz.

Böylece pip programı sayesinde hızlı modüller kurabilirsiniz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

163

ZAFER ÇOPUR


ÖRNEKLER

https://www.youtube.com/c/ELHarezmiBilgelikEvi

164

ZAFER ÇOPUR


Dikdörtgenin Çevre ve Alan Hesabı

Dikdörtgenin alan ve çevre formüllerini kullanarak program yazacağız. Yalnız

her kare bir dikdörtgen olduğu için buna dikkat edelim.

1. ve 10. satırda hata ayıklama kodlarını kullandık. Kullanıcıdan tam sayı

girmesini istediğimiz için farklı bir şey girmesi durumunda hata alacaktık.

Böylece kullanıcıya uyarı vereceğiz.

2. ve 3. satırda kısa ve uzun kenarın kullanıcı tarafından girilmesini istedik.

Girilen değerler int yani tam sayı cinsine çevrildi.

4. satırda alan hesabı yaptırdık. Kısa ve uzun kenar değerlerinin çarpılmasını

istedik. Bulunan değer alan değişkenine aktarıldı.

5. satırda çevre hesabı yaptırdık. Kısa ve uzun kenarı toplayıp 2’yle çarptık.

Böylece çevre uzunluğunu bulduk ve bunu çevre değişkenine aktardık.

6. ve 7. satırda eğer ifadesi kullanarak bir durum olduğunu ifade ettik. Eğer

kısa kenar uzun kenardan büyük değer olursa değerlerin yanlış girildiğini ifade

eden yazıyı kullanıcıya göster dedik.

8. ve 9. satırda else ifadesiyle kısa kenar uzun kenardan küçük değer olursa

anlamı kulandık. Böyle olursa terminal ekranında uzunlukları , alanı ve çevreyi

yazdır dedik. Burada f kullanmamız format fonksiyonunu tanımladığımızı

gösterir. Yani mavi parantez içlerinde yazan değişkenleri oraya yaz ifadesi

kullanmış olduk.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

165

ZAFER ÇOPUR


İki Sayı Arasındaki Sayıların Toplamı

Seçtiğimiz iki sayı arasında olan bütün sayıların toplamını elde etmek için

programımızı yazalım.

1. ve 8. satırda hata ayıklama kodlarını kullandık. Kullanıcıdan tam sayı

girmesini istediğimiz için farklı bir şey girmesi durumunda hata alacaktık.

Böylece kullanıcıya uyarı vereceğiz.

2. satırda sonuç değişkeni oluşturduk ve değerine 0 yazdık. Tam sayıların

toplamını daha sonra bu değişkene aktaracağız.

3. ve 4. satırda 2 tane sayımızın girilmesi için iki tane değişken oluşturduk.

Kullanıcıdan değer almak için input fonksiyonu kullandık. Ayrıca int yazarak

tam sayı olmasını istedik.

5. satırda for döngüsü oluşturduk. Range fonksiyonuyla girilen iki sayı

arasında döngünün oluşmasını istedik. Yalnız range fonksiyonu maksimum

değerin bir eksiğini alıyordu. O yüzden sayi2 ifademize +1 ekledik. Böylece

ikinci sayımıza kadar toplama işlemine devam edeceğiz. Sayılarımızı i

değişkenine sırayla aktardık.

6. satırda sonuç değişkenini i değişkeni kadar arttırılmasını istedik. Sonuç

değişkenimiz başlangıçta sıfırdı. İlk sayımızı 4 girersek o zaman 0+4 =4 olarak

toplamı bulacak. Daha sonraki i değişkeni 5 olduğu için bu sefer sonuç 4 olduğu

için 5 ekleyecek ve sonuç değişkeni 9 olacak. Bu şekilde döngü bitene kadar

işlem devam edecek.

7. satırda sayılarımızın toplamını yazdırdık. Burada format fonksiyonu

kullandık. Mavi süslü parantez içine istediğimiz değişkenleri aktardık.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

166

ZAFER ÇOPUR


Girilen Sayıların Toplamı ve Ortalaması

Kullanıcı tarafından girilen sayıların toplamını ve ortalamasını bulan bir

program yazacağız.

1. ve 8. satırda hata ayıklama kodlarını kullandık. Kullanıcıdan sayı girmesini

istediğimiz için farklı bir şey girmesi durumunda hata alacaktık. Böylece

kullanıcıya uyarı vereceğiz.

2. satırda toplam isminde bir değişken oluşturduk. Değerine sıfır sayısını

atadık.

3. satırda kullanıcıdan sayılarını virgül yazarak girmesini istedik. Girilen

değerleri sayılar değişkenine aktardık.

4. satırda sayılarımız değişkeni içindeki sayıları ayırmak için split

fonksiyonundan yararlanarak ayırmaya çalıştık. Split fonksiyonunun içinde

virgül kullanarak ayıraç olarak buna göre ayır dedik. Ayrılan değerler bu

fonksiyonla listeye dönüştü ve sayılar liste adındaki değişkene aktarıldı.

5. satırda for döngüsü oluşturuldu. Sayılar listemizin içinde bulunan öğeleri i

değişkenine sırayla aktardık.

6. satırda for döngüsünden aldığımız değerleri toplam değişkenine ekledik.

Eklerken i değişkenini float (ondalık sayı) olarak çevirdik. Liste içindeki bütün

değerleri topladık ve toplam değişkenine aktarmış olduk.

7. satırda bu sayıların ortalamasını aldık. Ortalama almak için sayıların

toplamını sayıların adedine bölmemiz lazımdı. O yüzden orada toplamdan sonra

bölü sembolü kullandık. Len yazarak listemizin kaç elemanlı olduğunu bulduk.

Böylece ortalamayı hesapladık ve ortalama değişkenine aktardık.

8. satırda format fonksiyonu kullanarak toplam ve ortalamayı yazdırdık.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

167

ZAFER ÇOPUR


Girilen Sayıların Tek Çift Adedini Belirleme

Kullanıcı tarafından istediği kadar sayı girilmesi durumunda tek yada çift

sayıların kaç tane olduğunu bulmamızı sağlayan bir program yazacağız.

1. ve 14. satırda hata ayıklama kodlarını kullandık. Kullanıcıdan tam sayı

girmesini istediğimiz için farklı bir şey girmesi durumunda hata alacaktık.

Böylece kullanıcıya uyarı vereceğiz.

2. ve 3. satırda oluşturduğumuz değişkenlerin değeri 0 olarak ayarlandı. Bu

değişkenlere tek ya da çift sayılarımızın kaç tane olduğunu yazdıracağız.

4. satırda kullanıcının kaç tane sayı girişi yapmak istediğini sorduk ve bu sayı

değerini tam sayıya çevirdik. Bu değeri sayı adedi değişkenine aktardık.

5. satırda kullanıcının girmek istediği sayı adedini alarak bir for döngüsü

oluşturduk. Her aldığımız değeri i değişkenine aktardık. Range kodu sayesinde

aldığımız sayı 0’dan başlayacaktır. Oraya gelen sayının kendisi dahil

olmayacaktır. Mesela 3 tane sayı girmek istediğimizde sayı adedi 3 olarak

hafızaya alınacaktır ve oradaki i değişkeni de 0,1,2 değerlerini alacağı için yine 3

defa döngü oluşturacaktır. Sonuç olarak bizim için bir şey değişmeyecektir.

6. satırda input sayesinde kullanıcıdan sayılarını girmek istiyoruz. Döngü

oluşturduğumuz için sayı adedi kadar kullanıcıdan sayı girilmesi istenecektir.

Orada f yazarak format fonksiyonu oluşturduk. Yani mavi süslü parantez içinde

i+1 yazarak her i değeri geldiğinde 1 arttırılmasını istedik. Böylece i değişkeni

0’dan sonra 1’er artarak gideceği için kullanıcı orada 1.sayı , 2.sayı gibi ifadeleri

görecektir. Kullanıcı sayısını girdiği anda biz bu değeri aldığın sayı değişkenine

aktarıyoruz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

168

ZAFER ÇOPUR


7. ve 8. satırda eğer aldığın sayının 2’ye bölümünden kalan 1 ise tek sayı

olduğunu anladık ve tek sayısı değişkenini 1 arttırdık.

9. ve 10. satırda else ifadesi kullanarak if ifademizin tam tersi olduğunu ifade

ettik. Böyle bir durumda çift sayı olduğunu anlıyoruz. Çift sayısı değişkenini 1

arttırıyoruz. for döngüsü bitene kadar bu şekilde her sayıya tek tek bakılıyor.

11. satırda bulduğumuz bu sayıları print fonksiyonuyla yazdırıyoruz. Değişken

değerlerimizin yazımızda çıkması için f harfiyle başladık yani format fonksiyonu

tanımladık. Böylece çıktı aldığımızda tek ve çift sayılarımızın değerini ekranda

göstermiş olduk.

11. satıra dikkat ederseniz print fonksiyonu for döngüsüyle aynı hizadadır. Yani

for döngüsü bittikten sonra bu kodlar çalışmaktadır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

169

ZAFER ÇOPUR


Dairenin Alan ve Çevre Hesabı

Dairenin alan ve çevre formüllerini kullanarak programımızı yazacağız.

Dairenin Alanı : ∏.r 2

∏=3,14 alınır

Dairenin çevresi: 2. ∏.r

1. ve 7. satırda hata ayıklama kodlarını kullandık. Kullanıcıdan tam sayı

girmesini istediğimiz için farklı bir şey girmesi durumunda hata alacaktık.

Böylece kullanıcıya uyarı vereceğiz.

2. satırda kullanıcıdan yarıçapın girilmesini istedik. Girilen bu değeri tam

sayıya çevirdik. Bu sayıyı yarıçap değişkenine aktardık.

3. , 4., 5. ve 6. satırda eğer yarıçap değeri sıfırdan büyük girilmişse alan ve

çevreyi hesaplayıp ekranda yazdır dedik.

Alan hesabını yaptırmak için önce parantez içinde yazdığımız ifade alınacaktır.

Çünkü matematikte işlem önceliğine göre program hesap yapacaktır. Parantez

içinde değişkenimizin karesini aldırdık. Daha sonra dışardaki pi sayısı yani

3.14’le parantez sonucu çarpıldı. Bulunan değer alan adındaki değişkene

aktarıldı.

Çevre hesabı için bütün değerler çarpıldı. Çevre adındaki değişkene aktarıldı.

Print sayesinde sonuçlarımızı yazdırdık. Ayrıca değişkenlerimizi yazdırmak

için format fonksiyonu kullandık.

7. ve 8. satırda yarıçap sıfırdan büyük değilse ifadesi olan else’yi kullandık.

Böyle bir durumda sıfırdan büyük sayı girilmesini istedik.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

170

ZAFER ÇOPUR


Vize Final Not Geçme Hesabı

Üniversitelerde farklı vize final not hesabı bulunmaktadır. Şimdi vizenin

%40’u ve finalin %60’ı şeklinde alınan ve geçmek için 50 ortalama hesaplanan

bir program yazacağız.

1. ve 10. satırda hata ayıklaması yapmak için kodlarımızı yazdık. Çünkü

programa harf giren birisi olabilir.

2. ve 3. satırda vize ve final notunun kullanıcıdan girilmesini istedik. Girilen

bu değerleri float (ondalık sayı ) cinsine dönüştürdük. Çünkü aşağıdaki kodlarda

ondalık sayılarla çarpma işlemi yaptıracağız.

4. satırda ortalama adında bir değişken oluşturduk ve hesabın nasıl yapılması

gerektiğini ifade ettik.

vize*0.4 şeklinde ki ifade vizeyi 0.4 sayısıyla çarp demektir. %40 =0.4 olarak

ifade edildiğinden dolayı o şekilde yazdık.

final*0.6 şeklinde ki ifade finali 0.6 sayısıyla çarp demektir. %60 =0.6 olarak

ifade edildiğinden dolayı o şekilde yazdık.

İşlem önceliğinden dolayı vize ve finali ayrı parantezler içinde yazdık.

Matematikte işlem önceliğine göre ifade etmezsek soldan sağa doğru işlem

yapılacağı için yanlışlık olacaktır. Daha sonra bu iki sonucu toplamamız

gerektiği için araya + sembolü koyduk. Böylece ortalama hesaplanmış oldu.

5. satırda ortalama değerimizi ekranımızda yazdırdık. Orada f harfi kullanarak

format fonksiyonu tanımladık. Mavi süslü parantez içinde ortalama

değişkenimizin orada çıkmasını sağladık.

6. ve 7. satırda eğer ortalamamız 50’den küçükse terminalde kaldın yazacak.

8. ve 9. satırda else ifadesiyle değil anlamı kullanarak 50’den büyükse şeklinde

ifade ettik. Böyle bir durumda ekranda geçtin yazısı yazacak.

171

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Sayı Tahmin Oyunu

Aşağıdaki kodları yazalım ve oyunumuzun nasıl yapılacağını inceleyelim.

1. satırda rastgele sayı üretmek için random modülünü yükledik.

2. satırda tutulan sayı isminde bir değişken oluşturduk. Bu değişkenimize iki

tam sayı arasında rastgele değer üretmesi için randint fonksiyonunu kullandık. 1

ile 10 dahil olmak üzere arasında bir sayı seç dedik.

3. satırda tahmin hakkımız adında bir değişken oluşturduk ve 5 sayısını atadık.

Böylece 5 defada sayıyı bulamazsak oyun bitecektir.

4. satırda while döngüsü oluşturduk. Tahmin hakkımız sıfır sayısından büyük

olduğunda bu döngü içerisine girebilirsin şeklinde ifade ettik. Şu an zaten 5

hakkımız olduğu için döngüye gireceğiz. Böylece burada oyunumun tüm

kodlarını yazmış olacağız.

5. ve 17. satırda hata ayıklama kodlarını kullandık. Kullanıcıdan tam sayı

girmesini istediğimiz için farklı bir şey girmesi durumunda hata alacaktık.

Böylece kullanıcıya uyarı vereceğiz.

6. satırda kullanıcının sayıyı tahmin etmesi için sayı girmesini istedik. Tahmin

sayısı adındaki değişkende bu değeri hafızaya alacağız. Sayımızın girilmesi için

input fonksiyonunu kullandık. Girilen ifadenin sayıya dönüşmesi için başına int

eklediğimize dikkat ediniz.

7. satırda bir kez sayı girdiğimiz için hakkımızın bir azalmasını istedik.

Tahmin hakkı değişkenimiz yukarıda 5 olarak tanımlanmıştı. Şu an ilk sayımız 5

olduğu için -=1 ifadesiyle bu 4’e inecektir. Tekrar deneme yaptığımızda 0’a

kadar düşmesini sağlıyoruz.

172

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


8. satırda if (eğer) ifadesiyle hangi durumlarda ne olacağını programa ifade

etmeye başladık. Oyun için 3 farklı durum vardır. Sayıyı bulabiliriz, girdiğimiz

sayı küçük olabilir veya girdiğimiz sayı büyük olabilir.

8. ,9. ve 10. satırda eğer tutulan sayı tahmin sayısına eşit olursa terminal

ekranında bulduğuna dair sayı yazdır dedik. Break komutuyla döngüden çıktık.

Eğer break yazmazsanız hakkımız 0’dan farklı olursa tahmin etmemiz için tekrar

soru soracaktır.

9. satırda f yazarak orada format fonksiyonu olduğunu ifade ettik. Böylece

cümlenin içinde mavi süslü parantez olan yerde değişken yazdırabileceğiz.

Orada 5-tahmin hakkı şeklinde matematiksel bir ifade yazdık. Tahmin hakkı ilk

sayıyı girdiğimizde 4 olmaktaydı. O halde 5-4 olacağı için 1 sayısı orada

yazacaktır. Yani orada bulunan cümle tebrikler 1. denemede buldunuz şeklinde

dönüşecektir. Bu sayede kullanıcı kaçıncı denemede bulduğunu öğrenmiş

olacaktır.

11. ve 12. satırda birden fazla koşul olduğu için elif kullandık. Burada tutulan

sayımız tahmin sayısından büyük olduğunda terminal ekranında yukarı

yazdırdık. Yani daha yukarıda bir sayı yazılmasını istedik.

13. ve 14. satırda else kullanarak yukarıdaki iki durum olmazsa bu durumun

gerçekleşeceğini ifade ettik. Böyle bir durum olduğunda terminal ekranında

aşağı yazdırılmasını istedik.

15. ve 16. satırda tahmin hakkımız bittiğinde ne olacağının ifade ettik. İf (eğer)

tahmin hakkı sıfıra eşit olursa terminal ekranında yazı yazılmasını istedik.

Burada f yazarak yine format fonksiyonunun olduğunu ifade ettik. Orada mavi

süslü parantez içinde tutulan sayı değişkenini yazdırdık. Böylece kullanıcı

tutulan sayının ne olduğunu görebilecek. Böylece cümlemizi ekranda yazdırmış

olduk.

173

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Asal Sayı Bulma

Asal Sayı : 1 hariç olmak üzere, 1 ve kendisinden başka sayılara tam

bölünemeyen pozitif tam sayılardır.

Tam bölünmek ifadesi ise bölme işlemi yapıldığında kalanın 0 olması

demektir. O halde asal sayılar 1 ve kendisinden başka bir sayıya bölündüğünde

kalan 0 olmuyor demektir.

Asal Sayılar : 2,3,5,7,11,… şeklinde gitmektedir.

Asal sayılar pozitif tam sayılarda bakılmaktadır.

En küçük ve aynı zamanda tek çift olan asal sayımız 2’dir.

2 asal olmasına karşın 2’nin katları asal sayı olamaz. Mesela 6 sayısı 2’nin

katıdır. Ancak 6 sayısı 2’ye bölündüğünde kalan 0 olduğu için asal olamaz. 6

sayısı sadece 1 ve kendisine bölünmesi gerekiyordu. Tanıma uymadığını

görüyoruz.

Aynı mantıkla asal sayıların katı olan sayılar asal sayı olamaz diyebiliriz.

6 sayımızın asal olup olmadığını başka bir yoldan daha bulabiliriz. Asal

sayının tanımına bakacak olursak zaten bütün sayılar 1 ve kendisine bölünüyor.

Yani bunların dışında bir sayıya bölünüyor mu ona bakmak lazım. O halde 6’yı

bölecek sayılar 6’dan küçük olacağı için 2,3,4,5 sayılarına bakmamız lazım. Bu

sayılardan birisi 6’yı bölerse asal değildir.

6 sayısında anlattığımız yöntemi kullanarak biz de programımızda asal sayı

bulma olayını gerçekleştireceğiz. Daha farklı asal sayı bulma yöntemleri

bulunmaktadır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

174

ZAFER ÇOPUR


1. ve 17. satırda hata ayıklama kodlarını kullandık. Kullanıcıdan tam sayı

girmesini istediğimiz için farklı bir şey girmesi durumunda hata alacaktık.

Böylece kullanıcıya uyarı vereceğiz.

2. satırda kullanıcı tarafından sayı girilmesini istedik. İnput fonksiyonuyla bu

sayımızı aldık ve int sayesinde sayıya çevirdik. Sayımızı girilen sayı değişkenine

aktardık.

3. satırda sonuç değişkeni oluşturduk ve değerine 0 dedik. Bu değişkeni asal

sayı olup olmama durumunu kontrol etmek için kullanacağız. Yani bu değer 0

olursa asal sayı olacak, 1 olursa asal sayı olmayacak. Kodlarımızı incelemeye

devam ettiğinizde daha iyi anlayacaksınız.

4. ve 5. satırda girilen sayı 1 olduğunda asal olmayacağını ifade ettik.

6. ve 7. satırda girilen sayının 1’dan küçük olamayacağını ifade ettik.

8. satırda yukarıdaki iki durum haricinde bir şey olursa aşağıdaki kodların

çalışacağını ifade ettik.

9.,10. ve 11. satırlarda girilen sayımızı for döngüsünün içine alarak

matematiksel bir işlem gerçekleştirdik. Burada eğer kalan 0 olursa sonuç

değişkenini 1 yap ve break koduyla for döngüsünden çık dedik.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

175

ZAFER ÇOPUR


for döngümüzde range fonksiyonu sayesinde içeriye girilen değerler arasındaki

bütün sayıları aldık. Mesela girilen sayı 5 olsaydı 2 ile 5 arasındaki değer

alınacaktı. Ancak range dediğimiz için burada 2,3 ve 4 değerleri alınacaktır. 5

sayısı dahil olmuyordu. Zaten sayının kendisini almıyorduk. Böylece range

fonksiyonu çok işimize yaradı.

For döngümüzde sırayla 2,3 ve 4 değerleri i değişkenine atandı. Daha sonra 10.

satırda kullanıcının girdiği sayı i değişkenine bölünerek kalan bulmak için %

işlemine tabii tutuldu. Döngü sayesinde bütün i değerlerine bölünerek bu işlem

devam etti.

Eğer sıfıra eşit bir ifade çıkarsa 11. satırda bulunan sonuç değişkeni 1’e eşit

oldu. Sıfıra eşit bir ifade yoksa döngü bitene kadar bu işleme devam edildi.

13. ve 14. satırda döngüden çıktığımızda eğer sonuç 1’e eşit olursa ekrana asal

sayı değiş şeklinde ifade yazdırdık. Burada format fonksiyonu kullanarak girilen

sayıyı da yazdırdık.

15. ve 16. satırda else diyerek sonuç 1’e eşit değilse ifadesi oluşturduk. Böyle

bir durumda asal sayı ifadesi yazsın istedik. Burada format fonksiyonu

kullanarak girilen sayıyı da yazdırdık.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

176

ZAFER ÇOPUR


Girilen Sayıya Kadar Asal Sayıları Yazdırma

Kullanıcıdan gelen sayıya kadar olan asal sayıları ekrana yazdırma ve adedini

bulmaya yarayan bir program yazacağız.

1. ve 15. satırda hata ayıklama kodlarını kullandık. Kullanıcıdan tam sayı

girmesini istediğimiz için farklı bir şey girmesi durumunda hata alacaktık.

Böylece kullanıcıya uyarı vereceğiz.

2. satırda kullanıcıdan sayı girmesini istedik. Bu sayıyı tam sayıya çevirdik ve

girilen sayı değişkenine aktardık.

3. satırda asal değişkeni tanımladık ve değerini 0 yaptık. Kodlarımızda bu

değişkeni asal sayı olma durumunu görmek için kullanacağız. Yani sıfır

olduğunda asal sayı, bir olduğunda asal sayı değil mantığını kullanacağız.

4. satırda asal sayıların toplam değerini yazdırmak için toplam değişkeni

oluşturduk ve başlangıçta sıfır olmasını istedik.

5. satırda for döngüsü oluşturduk. Amacımız girilen sayıya kadar olan

değerleri almak ve o kadar işlem yaptırmak olacak. Range sayesinde 2’den

başlayarak girilen sayının 1 fazlasına kadar sayılarımızı sırayla çekeceğiz. Her

çektiğimiz sayıyı i değişkenine aktaracağız. 2’den başlamamızın nedeni en

küçük asal sayı olduğu içindir. Girilen sayıyı 1 arttırmamızın nedeni ise range

komutu en son sayıyı almadığı için bir arttırmamız gerekiyor.

6. satırda asal değişkenini yine sıfır olarak ayarladık. Yani 5. satırda

yazdığımız her for döngüsü çalıştığında bu değişken sıfır olacaktır. Böylece biz

her sayıya tek tek asal olup olmadığına bakabileceğiz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

177

ZAFER ÇOPUR


7. satırda yeniden bir fon döngüsü tanımladık. Yani for döngüsü içinde for

döngüsü oluşturduk. Şimdi 5. satırdan gelen i sayısı 7. satırdaki for döngüsünde

range içİne yazılıyor. Böylece orada 2’den başlayarak i sayısına kadar değerler j

değişkenine aktarılıyor.

8. satırda eğer i değişkeni j değişkenine bölündüğünde kalan sıfır oluyorsa

demek ki i sayısının içinde i’yi bölen bir sayı var demektir. O halde böyle bir

durumda asal olmadığını anlıyoruz. Çünkü asal sayılar sadece 1 ve kendisine

bölünecekti.

9. ve 10. satırda kalan sıfır olduğu için asal değişkenimizin değeri 1 arttı ve

asal isimli değişkene aktarıldı. Yani yine kendisine aktardık. Daha sonra break

diyerek 7. satırda bulunan for döngüsünden çıktık ve hemen altındaki 11. satıra

gittik.

11. ,12. ve 13. satırda eğer asal değişkeni sıfıra eşitse şeklinde ifade kullandık.

Ancak biraz önce asal değişkeni 1 yapmıştık. Yani o zaman bu kodların

çalışmadan atlanması gerekiyor. Burası atlandığı anda o zaman 5. for döngüsüne

tekrar geliyoruz. Çünkü biz asal sayı bulamadık.

Şimdi tekrar 5. satıra geldik ve tekrar bir i değeri aldık. Oradan 6. satıra

gelerek biraz önceki asal değişkeni sıfır yaptık. Yani yeniden asal olup olmama

durumunu incelemeye başladık. Aynı mantıkta 7. satırdaki for döngüsü çalıştı.

Eğer 8. satırda yazılan ifade oluşmazsa asal değişken 1 artmayacağı için break

koduyla döngüden çıkacak ve 11. satıra tekrar gelecek.

11. ,12. ve 13. satırda asal değişkenimiz bu sefer sıfır olduğu için kodlarımız

çalışacaktır. Böyle bir durumda i değişkenimizdeki sayının asal olduğunu

anlıyoruz ve print komutuyla ekrana yazdırıyoruz. Daha sonra toplam

değişkenimizi 1 arttırıyoruz. 5. satırda yer alan for döngüsü bitene kadar bu

işlem devam ediyor.

14. satırda format fonksiyonu olmadan sadece değişken adıyla değerlerimizi

ekrana yazdırıyoruz.

178

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Yılın Kaçıncı Gününde Olduğumuzu Bulma

Kullanıcıdan girilen tarih bilgisiyle yılın kaçıncı gününde olduğumuzu sayı

olarak görmemizi sağlayan program yazacağız.

24. satırda print komutuyla yılın günü adlı 6. satırdaki fonksiyonu

çalıştırıyoruz.

6. ve 7. satırda yılın günü isimli fonksiyonumuz çalışıyor. Tarih girerken harf

girilmesi ya da ay , yıl ve gün seçeneklerinden birinin girilmemesi durumunda

hata alıyoruz. Bunun için fonksiyon içinde hata ayıklaması yapıyoruz. O yüzden

7. , 25. , 26. ve 27. satırlarda bununla ilgili kodlarımızı yazıyoruz. İki tane hata

kodumuzu olduğu için 25. satırda bu hataların ikisini yazdık. 26. satırda yanlış

tarih isminde değişken oluşturduk ve bir metin girdik. 27. satırda bu değişkeni

alıp return komutuyla fonksiyondan dışarı çıktık. Böylece alınan bu değer 28.

satırda print fonksiyonuyla ekrana yazdırıldı.

179

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


8. satırda kullanıcıdan bizim istediğimiz şekilde tarih girilmesini istedik ve

bunu tarih değişkenine aktararak aldık.

9. satırda tarih değişkenin içindeki sayıları split fonksiyonu sayesinde noktadan

ayırdık ve listeye dönüşmesini sağladık. Oluşan listeyi tarih liste değişkenine

aktardık.

10., 11. ve 12. satırda listemizin içinden elemanları sırayla gün , ay ve yıl

değişkenlerine aktardık.

13. satırda başlangıçta hesaplayacağımız tarihin gün sırasını sıfır yaptık.

Değişkenin adına sıra dedik.

14. satırda aylarımıza ait günlerin sayısını günler listesi içinde yazdık.

15. satırda ay liste sayısı adında bir değişken oluşturduk. Bu değişken kullanıcı

tarafından girilen günün kaç gün olduğunu bulacak ve kullanıcıya hata yaptığını

söylememizde bize yardımcı olacak. Bu değişkeni günler[Ay-1] ifadesine

eşitledik. Yani kullanıcının girdiği ay bilgisinden 1 çıkartıyorsun ve günler

listesinden bu sıradaki sayıyı alıyorsun. Aldığın bu sayıyı ay liste sayısı

değişkenine aktarıyorsun dedik. Liste elemanlarının sırası sıfırdan başlıyor , eğer

siz ay-1 yazmazsanız bir üstteki ayın günü almış olursunuz buna dikkat edin.

16.,17. ve 18. satırda başka bir tarih yazma hatası için kod yazdık. Bu

normalde 25. satırda olduğu gibi bize hata vermiyor. Yalnız biz kendimiz

denediğimizde hata buluyoruz.

Kullanıcı girdiği ay nisan ise gün olarak 30 sayısını geçemez. Gün ve yıl

sıfırdan küçük olamaz. Ay bir sayısından daha az olamaz. Böyle durumlar

program tarafından hata olarak algılanmaz ancak bizce programda olmaması

gereken hatalardır. Bunların düzeltilmesi için bu satırlarda kullanıcıya uyarı

verdik.

19. ve 20. satırda artık yıl(yıl) şeklinde ifade ederek 1. satırda yazdığımız

fonksiyonun çalışmasını ve değer döndürmesini istedik. Orada if (eğer) olduğu

için dönen değer True olursa 20. satırdaki kod çalışacaktır. Orada günler

listesindeki 1. sırada olan şubat ayı 29 olacak şeklinde ifade ettik.

1. ve 2. satırda artık yıl fonksiyonu tanımladık. Artık isminde değişken

oluşturduk ve False değerini verdik. Eğer artık değişkenimiz True dönerse artık

yıl olduğunu anlayacağız.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

180

ZAFER ÇOPUR


3. ve 4. satırda artık yılın matematiksel hesaplamasını yaptırdık. Gregorian

Takvim konusunu araştırırsanız ona göre burada formül yazılmıştır. Yıl

değişkeninin belirli sayılara göre bölünüp kalan durumları incelenmiştir. Eğer

kalan sıfır olursa artık değişkenimiz True olacaktır .Eğer kalan sıfır olmazsa

zaten 3. ve 4. satırlar devreye girmeyecektir. O zamanda artık değişkenimiz

False olarak kalacaktır.

5. satırda artık isimli değişkenin değerini alıp fonksiyondan return komutuyla

çıkıyoruz.

21. satırda aldığımız gün , ay ve yıl bilgilerine göre tarihimizin kaçıncı sırada

olduğunu hesaplatıyoruz. Orada for döngüsü oluşturduk. Amacımız sırayla

girilen ay kadar sayıları günler listesinden çekmek. Burada range komutuyla kaç

defa döngü olacağını belirledik. Yalnız orada ay-1 yazdık. Çünkü girilen ayı

almamız gerekiyor. Mesela ay olarak 5 girdik. Range 0,1,2,3,4 değerlerini

döndürecek. Listede sıra yine 0 ile başladığı için 5 tane ay seçilmiş olacak.

Bizim 0,1,2,3 seçmemiz için ifadeyi ay-1 şeklinde yazdık.

22. satırda döngüden gelen i değişkeni sayısına göre günler listesi sırasındaki

sayıyı aldık ve sıra değişkenine ekledik. 13. satırda sıra değişkeni 0 olarak

alınmıştı. Şimdi ayları üstüne eklemiş olduk. Döngü bitince 23. satıra program

geçiyor.

23. satırda sıra değişkenimize bu seferde günlerimizi ekledik. Böylece bütün

hesaplamaları yapmış olduk.

24. satırda sıra değişkenini alarak return komutuyla fonksiyondan çıktık.

Böylece istediğimiz programı yazmış olduk.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

181

ZAFER ÇOPUR


Beden Kitle İndeksi Hesaplama

Beden kitle indeksi, vücut ağırlığının (kg olarak),boy uzunluğunun (metre

cinsinden) karesine bölünmesiyle hesaplanır. Bu formülü kullanarak

programımızı yazalım.

1. ve 20. satırda hata ayıklama kodlarını kullandık. Kullanıcıdan tam sayı ve

ondalık sayı girmesini istediğimiz için farklı bir şey girmesi durumunda hata

alacaktık. Böylece kullanıcıya uyarı vereceğiz.

2. ve 3. satırda kullanıcıdan boy ve kilosunu girmesini istedik. Girilen değerler

boy ve kilo değişkenine aktarılacak.

4. ve 5. satırda if(eğer) ifadesiyle kullanıcının boy ve kilo değerlerini

girdiğinde böyle bir durum olduğunda hata mesajı verilmesini istedik. Normalde

program bunları hata olarak algılamayacak ancak kullanıcı bizim istemediğimiz

sayıları da yazabilir. O yüzden boy değişkeni 3’ten büyük veya 0’dan küçük

olduğunda veya kilo değişkenimiz sıfırdan küçük olduğunda kullanıcıya hata

mesajını tekrar verdik.

6. satırda beşinci satırdaki gibi bir durum olmadığında else’nin içindeki

kodların çalışmasını istedik.

7. satırda beden kitle indeksinin formülünü yazarak hesaplama yaptırdık.

Sonucumuzu durum değişkenine aktardık.

8. ve 9. satırda eğer durum değişkeninin değeri 18.49 sayısına eşit ve küçükse

print içindeki yazıyı kullanıcının görmesini istedik.

Diğer satırlarda aradaki değerleri alarak kullanıcıya bilgi verdik.

182

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Hipotenüs Hesaplama

Dik üçgenlerde hipotenüs uzunluğu dik açının karşısındadır. Hipotenüsün

uzunluğunu bulmak için dik kenarların karelerini bulup topladıktan sonra

sonucun karekökünü alırız. Şimdi bunun programını yazalım.

1. satırda math modülünü yükledik. Böylece bu modül sayesinde karekök

işlemi yapabileceğiz. Karekök alma işlemini bu modülü kullanmadan

yapabiliyoruz. 8. satıra geldiğimizde bunu anlatacağım.

2. ve 10. satırda hata ayıklama kodlarını kullandık. Kullanıcıdan ondalık sayı

girmesini istediğimiz için farklı bir şey girmesi durumunda hata alacaktık.

Böylece kullanıcıya uyarı vereceğiz.

3. ve 4. satırda üçgenin dik kenarlarının uzunluklarını almak için kullanıcıdan

bilgi istedik. Bu değerleri a ve b değişkenlerine aktardık.

5. ve 6. satırda kullanıcının değerleri 0 veya 0’dan küçük girme durumu

olabilir diye hata mesajı yayınladık. Bunu if (eğer) böyle bir şey olursa şeklinde

ifade ettik.

7. satırda 5. satır gerçekleşmeme durumunda else yazarak içerideki kodların

çalışmasını istedik.

8. satırda hipotenüs uzunluğuna c değişkeni ismi verdik. Math modülünde

karekök almak için sqrt fonksiyonunu kullandık. Parantez içinde diğer iki

kenarın kareleri alıp topladık.

İsterseniz math modülü olmadan (a**2+b**2)**0.5 şeklinde yazarak

hipotenüsü bulabilirsiniz. Orada **0.5 yazarak aslında karekök alma işlemini

yaptırmış olduk. Yani üslü sayılarda kuvvet 0.5 ya da ½ şeklinde yazılırsa bu

karekök alma işlemini ifade etmektedir.

9. satırda hipotenüsün değerini yazdırdık.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

183

ZAFER ÇOPUR


Mükemmel Sayı

Bir sayının bölenlerinden kendisini çıkartıp geriye kalan sayıları

topladığımızda yine aynı sayı oluşuyorsa böyle sayılara mükemmel sayı dedir.

6 sayısının bölenleri (kendisi hariç): 1,2 ve 3’tür. Bunların toplamı

1+2+3=6 eder. O yüzden 6 sayısı mükemmel sayıdır.

1. ve 14. satırda hata ayıklama kodlarını kullandık. Kullanıcıdan tam sayı

girmesini istediğimiz için farklı bir şey girmesi durumunda hata alacaktık.

Böylece kullanıcıya uyarı vereceğiz.

2. satırda kullanıcıdan sayı girmesini istedik. Aldığımız sayıyı girilen sayı

değişkenine aktardık.

3. satırda sayıların toplamını bulmak için toplam değişkeni oluşturduk.

4. ve 5. satırda kullanıcının sayıyı 0 ve daha küçük girmesi durumunda hata

mesajı yayınladık.

6. satırda kullanıcı 4. satırdaki hatayı yapmazsa else içindeki kodların

çalışmasını istedik.

7. satırda for döngüsü oluşturduk. Range metoduyla 1’den başlayarak girilen

sayıya kadar sayıların döngü içerisine girmesini ve bu değerlerin i değişkenine

aktarılmasını istedik. Yalnız sayının kendisi döngüye girmiyor. Zaten bölenleri

bulurken sayının kendisi alınmayacaktı.

8. ve 9. satırda eğer girilen sayımız i değişkenine aktarılan sayılara

bölündüğünde kalan 0 oluyorsa toplam değişkenimize bu i değeri ilave olsun

dedik.

10. ve 11.satırda döngü bittikten sonra alınan toplam değerinin sonucu başta

girdiğimiz sayıya eşit oluyorsa bunun mükemmel sayı olduğunu ekrana yazdır

dedik.

12. ve 13. satırda eşit değilse mükemmel sayı değildir şeklinde yazdır dedik.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

184

ZAFER ÇOPUR


Ömer Hayyam Üçgeni

Bu üçgen kitaplarımızda pascal üçgeni şeklinde ifade edilmektedir. Aslında

Müslüman olan Ömer Hayyam tarafından bulunmuştur. Her zaman olduğu gibi

bu gibi önemli bilgiler Müslümanların duymaması için gizlenmektedir.

Dinimizin bilime ve teknolojiye önem vermediği gibi bir izlenim

oluşturulmaktadır.

Üçgen oluşturulurken önce 1 yazılıyor. Daha sonra alt tarafta sağına ve soluna

geçecek şekilde yeniden bir yazılıyor. Her satırda bu 1 aynı şekilde devam

ediyor. Aradaki sayılarda üstteki iki sayının toplamı şeklinde yazılıyor.

Şimdi bu sayıları veren programı yazalım.

1. satırda kullanıcının kaç satırdan oluşan bir üçgen istediği soruldu ve tam

sayıyı dönüştürüldü. Bu değer n değişkenine aktarıldı.

2. satırda a adında boş bir liste oluşturuldu.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

185

ZAFER ÇOPUR


3. satırda for döngüsü oluşturulduk. Range sayesinde 0’dan girdiğimiz sayıya

kadar döngünün devam etmesini sağladık.

4. satırda a isminde tanımladığımız listenin içine append sayesinde boş bir liste

ekledik. Yani her döngü başa geldiğinde listenin son sırasına boş bir liste

eklenecek demektir. Amacımız liste içinde listeler oluşturmak. Böylece Hayyam

üçgenimizin her satırını listeler içinde yazmış olacağız. Mesela orada 5 sayısını

girseydik liste içinde 5 tane boş liste oluşacaktı.

5. satırda a[i] şeklinde ifade yazdık. Yani i sayısı 0’dan girdiğimiz sayıya kadar

değer alıyordu. Mesela i=3 olursa a[3] şeklinde olacaktır yani a listesinin 3.

elemanı şekline dönüşecektir. Daha sonra append(1) yazarak listenin 3.

elemanına 1 yaz dedik.

Burada i değişkeni 0’dan başladığı için her elemana 1 yazmak manasına

gelmektedir. Zaten üçgenimizde her satır birle başladığı için bunu yapmak

zorundayız.

6. satırda yeniden bir for döngüsü oluşturduk. Daha önce for döngümüz vardı

şimdi içinde bir tane daha for döngüsü oluşturduk. Bu for döngüsü bitmeden

dışarıdaki for döngüsüne tekrar dönemeyiz. Bu satırda range içinde i değişkeni

aldık. Yani daha önceki for döngümüzde n değişkeni içinden aldığımız i

değişkeninden bahsediyoruz. Bu sayıyı aldıktan sonra 1’den başlayarak bu

sayıya kadar döngü oluşturduk. İçinden aldığımız sayıları j değişkenine aktardık.

7. satırda yazdığımız kodumuz 5. satırda yazdığımız kod gibi listeye eleman

eklememizi sağlıyor. Yalnız parantez içinde yazılan kodu daha önce

görmemiştik.

İşte bu kodumuz yukarıda kırmızı oklarla gösterdiğimiz satırların toplanmasını

sağlıyor. Append sayesinde toplanan bu sayılar listemize ekleniyor.

Yukarıda yazdığımız ifadeyi anlamak için a[2] [1] şeklinde yazalım. Burada a

listesi içinde 2. sırayı bul ve orada bulunan listenin 1. elemanını al demektir.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

186

ZAFER ÇOPUR


O halde döngü sayesinde i ve j değerleri sürekli değiştiği için bu mantıkla

listelerden öğeleri alarak topluyor ve daha sonra yeni listeye ekliyor. Orada i-1

yazarak bir önceki listeyi ifade ettiğini, j-1 yazarak bir önceki listedeki

elemanların öğelerinden istediğimi seçtiğimizi ifade etmektedir.

Liste elemanları 0’dan başladığını unutmayalım. Hesap yaparken buna dikkat

etmeniz gerekiyor.

8. ve 9. satırda kullanıcı tarafından 0 sayısı girilmediğinde oluşan liste içindeki

listelerin her birinin sonuna 1 sayısı ekle dedik. Hayyam üçgeninde başta ve

sonra 1 olması gerektiğini şekilden görüyoruz.

Buraya kadar Hayyam üçgenimizin her bir satırını oluşturmayı başardık.

Yalnız liste içinde liste şeklinde olduğu için biraz farklı görünüyor. Şimdi bunu

üçgene benzer şekilde ekrana yazdıracağız. Elemanların hepsini içeriden tek tek

alacağız.

10. satırda yukarıda yazdığımız döngülerden bağımsız bir for döngüsü

oluşturuyoruz.

11. satırda print komutuyla ekrana boşluk yazdırmak istedik. Her döngünün

başında oluğu için bu boşluklar satırda yazılan ilk 1 sayısından önce kaç karakter

boşluk oluşturacağımızı ifade ediyor. Burada bulunan for döngüsünü aşağıdaki

gibi değiştirelim ne demek istediğimi anlayacaksınız.

11. satırda aaa ifadesinden (n-i) tane oluşturduk. Burada n değişkenimiz sabit

ama i değişkeni arttığı için gittikçe aaa sayısı azalmaya başladı. Ondan dolayı ilk

yazacağımız 1 sayısının yeri değişmiş oldu. Daha sonra gelen end ifadesiyle sona

b yaz dedik. Orada a ve b yerine boşluk yapacağız. Böylece istediğimiz görüntü

ortaya çıkacak.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

187

ZAFER ÇOPUR


12. satırda daha önceki a listemizin içindeki elemanları tek tek almak için bir

for döngüsü oluşturuyoruz. Unutmayın listemiz tamamen bitmiş durumda biz

sadece üçgen oluşması için elemanları alacağız. Parantez içinde i+1 yazarak i

değeri 0 olduğunda sıkıntı çıkmaması içindir. Çünkü range kullandık.

13. satırda print fonksiyonuyla her i değeri geldiğinde bir satırı yazdıracağız.

Burada format fonksiyonundan çağırmak için mavi süslü parantez kullandık. 0:5

yazarak format parantezi içinde yazan 0. öğe yani ilk ifadeyi al ve öncesinde 4

tane boşluk bırak dedik. Bu sayıyı isterseniz siz değiştirebilirsiniz. Yalnız

girdiğiniz sayıya göre bu yaptığınız üçgenin bozulmasına yol açıyor. Denemeler

yaparak görebilirsiniz.

Format içinde a[i] [j] yazarak a listesi içinde elemanları tek tek çekiyoruz.

Bu for döngüsü her bir eleman için bir kez çalışıyor. Bunu sayıların sonuna

eklenen c harfinden görebilirsiniz.

14. satırda yer alan print fonksiyonu bir alt satıra inmemizi sağlıyor.

Denemeler yaptığınızda ekranınızın büyüklüğüne göre üçgenimizin belirli bir

yere kadar doğru göründüğünü anlarsınız.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

188

ZAFER ÇOPUR


Sayıları 2’lik,8’lik ve 16’lık Tabanda Yazma

Bizim günlük hayatta kullandığımız sayılar onluk tabandadır. Şimdi en çok

kullanılan tabanlara sayıları çevirmeyi görelim.

1. satırda kullanıcı tarafından sayı girilmesini istedik. Girilen değer int

sayesinde tam sayıya çevrildi ve girdiğiniz sayı değişkenine aktarıldı.

2. satırda kullanıcının hangi tabanda çevirmek istediğini girmesini istedik.

Bunu tam sayıya çevirip taban seçimi değişkenine aktardık.

3. ve 4. satırda eğer taban seçimi 2 olursa terminal ekranına çevrilmiş halini

yazdır dedik. Bunu yapmak için format fonksiyonunu kullandık. Mavi süslü

parantez içinde :b yazdığımızda ikilik taban olacağını ifade ettik. Format

fonksiyonunun içinde girdiğiniz sayı değişkeni olduğu için buradan gelen değer

hemen çevrilmiş oldu.

Diğer satırlarda da aynı şekilde taban kısaltmalarını kullanarak format

fonksiyonu sayesinde tüm çevirmelerimizi yapmış olduk.

9. ve 10. satırda bizim istediğimiz tabandan farklı bir sayı girildiğinde

kullanıcıya bizim sayılarımızın girilmesini istedik.

Ondalık biçim için {:d} ifadesi kullanılması gerekiyor. Format fonksiyonunda

çok farklı özelliklerde bulunmaktadır.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

189

ZAFER ÇOPUR


Girilen Bir Cümleyi Tersten Yazmak

Girdiğimiz cümleyi tersten yazdırmak için aşağıdaki gibi basit bir kod

kullanabiliriz.

1. satırda kullanıcıdan cümleyi girmesini istedik ve bunu a değişkenine

aktardık.

2. satırda a[::-1] şeklinde yazarak a değişkeninin içinde yer alan karakterleri

tersten yazmak istedik. Bu kadar kısa bir komutla istediğimizi yapabildik.

Orada -1 yazarak geriye doğru ve karakterleri 1’er 1’er alacağımızı ifade etmiş

olduk. Eğer -1 yerine 2 yazmış olsaydık. Girdiğimiz cümlenin baştan ikişer

ikişer harflerini almamızı sağlayacaktı.

Çift Doğal Sayıları Toplama

Yukarıdaki yöntemle istediğimiz sayıya kadar olan çift sayıların toplamını

bulabiliriz. 0+2+4+6 gibi…

1. satırda kullanıcıdan sayı girmesini istedik ve a değişkenine aktardık.

2. satırda 0’dan girilen sayıya kadar bütün tam sayıları alarak bir liste içerisine

aktardık. Yalnız range giren kişinin sayısını almayacaktı o yüzden bir fazlasını

aldık. Bunu b değişkenine aktardık.

3. satırda b listesinin elemanlarını ilk elemandan sonra ikişer ikişer atlayarak

aldık. Böylece çift sayıları almış olduk. Bu değerleri c değişkenine aktardık.

4. satırda toplamları bulmak için d değişkenine aktardık.

5. ve 6. satırda c listesinde oluşan çift sayıları toplamak için for döngüsü

kullandık. C listemizin içindeki her öğeyi sırayla i değişkenine yazdırdık. Daha

sonra bunu d değişkeninin içindeki sayıyla topladık.

7. satırda for döngüsü bittiğinde d değişkenindeki son sayıyı yazdırdık.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

190

ZAFER ÇOPUR


Fibonacci Dizisi

Bu dizi 0,1,1,2,3,5… şeklinde gitmektedir. Başlangıçta 0 ve 1 elemanlarını

yazdıktan sonra sondaki sayı bir önceki sayıyla toplanarak yeniden diziye

yazılıyor. Böylece elde edilen diziye fibonacci dizisi oluşmaktadır.

1. satırda kullanıcıdan dizinin kaç elemanlı olacağının bilgisini alıyoruz.

Alınan bu değeri girdi değişkenine aktarıyoruz.

2. satırda a1 ve a2 isminde iki tane değişken oluşturuyoruz. Sırasıyla

değerlerini 0 ve 1 yazıyoruz. Burada değişkenlere farklı bir şekilde değer verdik.

Bu yazım tarzını kullanmayı unutmayın.

3. satırda toplam değişkenini while döngüsüne girmek için kullanacağız.

Başlangıç değerini sıfır aldık.

4. ve 5. satırda kullanıcının terim sayısını pozitif girmesini isteyeceğimiz

durumu kodladık.

6. ve 7. satırda kullanıcının terim sayısını bir girme durumunda ekrana ilk

değişkenin 0 olmasını yazdırdık.

8. satırda while döngüsü tanımladık. Girilen terim sayısı toplam değişkeninden

büyük olduğu zaman bu döngü içine girileceğini ifade ettik.

10. satırda döngü içine girdiğimizde hemen ilk terimi yazdırdık.

11. satırda ikinci terimi bulmak için a1 ve a2 değişkenlerimizi topladık ve iki

terimi topla değişkenine aktardık.

12. satırda a1 değişkeni a2 değişkeninin değeri olsun istedik. Yani ilk başta

a1=0’dı şimdi a1=1 olmuş oldu.

13. satırda a2 değişkeni iki terimi topla değişkeninin değerini aldı.

14. satırda toplam değişkenin 1 arttırdık. Böylece 9. satır eğer sağlanıyorsa

döngü içinde kalmaya devam edecektir.

Aynı şekilde şimdi 10. satır çalışacak ve şu an a1 değeri 1 olduğu için ekrana

ikinci terim olarak 1 yazdırılmış olacak. Döngüyü iyi anladığınızda sırayla

terimlerin toplanarak yazıldığını göreceksiniz.

191

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Alfabetik İsim Sıralama

Bir gezi grubuna katılacakları alfabetik sırayla yazdırabileceğimiz bir program

oluşturacağız.

1. satırda öğrencilerimizin kullanıcı tarafından girilmesini istedik. Girilen bu

isimleri öğrenci listesi değişkenine aktardık. Yalnız bu liste değildir dikkat

edelim.

2. satırda split sayesinde virgül olan yerlerden cümleleri ayırdık ve öğrenciler

değişkenine aktardık. Bu değişkeni split sayesinde listeye dönüştürdük.

3. satırda sort sayesinde öğrenciler değişkeni içinde yer alan elemanları baş

harflerine göre tekrar sıraladık. Yani listenin öğeleri yer değiştirmiş oldu.

4. ve 5. satırda for döngüsüyle elemanları sırayla i değişkenine aktardık ve her

aktardığımızda ekrana yazdırdık.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

192

ZAFER ÇOPUR


Takvim Oluşturma

İstediğimiz bir yılın tüm aylarını görebileceğimiz bir takvim oluşturmamızı

sağlar.

1. satırda takvimle alakalı modülümüzü yükledik.

2. satırda kullanıcıdan takvim yılının girilmesi istendi ve yıl değişkenine

aktarıldı.

3. satırda takvimin Türkçe olması için gereken kodlar yazıldı.

4. satırda girilen yıl değişkenindeki sayı alındı ve Türkçe olarak takvim ekrana

yazdırıldı.

Eğer istediğiniz bir yılın sadece belirli bir ayını yazdırmak isterseniz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

193

ZAFER ÇOPUR


İkinci Dereceden Denklemin Köklerini Bulma

İstediğimiz bir yılın tüm aylarını görebileceğimiz bir takvim oluşturmamızı

sağlar.

Bulunan bu değere göre üç farklı durum vardır.

1- Diskriminant sıfırdan küçükse reel kök yoktur.

2- Diskriminant sıfırdan büyükse iki tane kök bulunur.

3- Diskriminant sıfıra eşitse bir tane kök bulunur.

Sağ tarafta kökleri bulma formülü

verilmiştir.

İkinci derece denklemlerin köklerini

bulmak için önce diskriminantın

bulunması gerekiyor.

1.,2. ve 3. satırda kullanıcıdan denklemin a,b ve c değerlerini girmesini istedik.

4. satırda ekranda kullanıcının girdiği denklemi yazdırdık.

5. satırda diskriminant değerini buldurma formülünü yazdık ve disk

değişkenine bunu aktardık.

6. ve 7. satırda kök bulma formüllerini yazdık ve işlemden geçirdik. Bulunan

değerleri değişkenlere aktardık. Yalnız burada reel kök bulamasa da karmaşık

sayılar şeklinde kök bulduğu için program hata vermedi. Eğer hata verirse if ve

eliflerin oraya bu kodları yazmanız gerekiyordu.

8. ve 9. satırda diskriminant değerimiz sıfırdan küçük olursa reel kök yoktur

yazdırdık.

Diğer satırlarda böyle bir durum yoksa köklerini yazdırmak için elif ve else

kullandık. İçlerinde format fonksiyonu kullanarak değişkenleri yazdırdık.

194

https://www.youtube.com/c/ELHarezmiBilgelikEvi ZAFER ÇOPUR


Atm Makinesi

Kendimize ait basit bir atm makinesi programı yapacağız.

1.,2.,3.,4.,5. ve 6. satırlarda kullanıcının hangi işlemi hangi numarayla

yapacağını ekranda yazdırdık.

7. satırda kullanıcıya ilk başta 1000 lira para verdik.

8. satırda kullanıcının while döngüsü içerisine girmesini sağladık. Böylece

sürekli olarak bu döngü içerisinde olacaktır. Yani bankamatiğe kartınızı takmış

gibi düşünebilirsiniz.

9. satırda kullanıcının hangi işlemi yapmak istiyorsa onun girilmesini istiyoruz.

Girilen değer işlem değişkenine aktarılacaktır. Burada 4 tane numara yazdık.

Şimdi alt satırlarda bu numaralara göre işlem kodlarını yazacağız.

10.,11. ve 12. satırlarda eğer işlem değişkeni 4 olursa çıkış yapılmasını

sağlayacağız. Çıkış yaptığımızda bu döngüden de çıkmamız gerekiyor. Yani

bankamatikten kartımızın çıktığını anlıyoruz. O yüzde break kodunu kullandık. 195

https://www.youtube.com/c/ELHarezmiBilgelikEvi

ZAFER ÇOPUR


13. ve 14. satırda işlem değişkeni 1 olursa para çekmek istenildiğini anlıyoruz.

Böyle bir durumda kullanıcıdan kaç lira çekmek istediğini soruyoruz. Çekilen

parayı çekilen değişkenine aktarıyoruz.

15., 16. ve 17. satırda çekilme durumunu incelememiz gerekiyor. Çünkü

bankadaki paramızdan fazla para çekilmek istenebilir. Bu satırlarda şu an 13.

satırdaki elif kodunun içinde olduğumuza dikkat edelim. Bakiye değişkeninden

çekilen değişkenini çıkartıyoruz ve 0’dan küçük ya da eşit çıkarsa bakiyemizin

yetersiz olduğunu anlıyoruz. Böyle bir durumda yetersiz bakiye olduğunu

yazdırıyoruz. Daha sonra continue yazarak döngünün en başına dönmesini

sağlıyoruz. Döngüden çıkmadığımıza dikkat ediniz.

18., 19. ve 20. satırda yukarıdan farklı bir işlem tanımladık. O yüzden elseyle

başladık. Burada bakiyemiz fazla olursa o zaman bakiyemizin çekilen miktar

kadar azalması gerekiyor. Çıkarma işlemini yaptık ve bakiye değişkenimizi

yeniden güncelledik. Format kullanarak ekranda çekilen miktarı yazdırdık.

21., 22., 23. ve 24. satırda kullanıcının para yatırma işlemlerini

gerçekleştiriyoruz. Kullanıcıdan yatırmak istediği miktarı soruyoruz ve bunu

yatan para değişkenine aktarıyoruz. Daha sonra bakiyemize bunu ekleyip yeni

bakiyemizi güncelliyoruz. Ekranda kaç lira yattığını format fonksiyonuyla

gösteriyoruz.

25. ve 26. satırda kullanıcı bakiye sorgulama yaptığında neler olacağını

yazıyoruz. Sadece bakiye sorduğu için format fonksiyonunda bunu yazdırıyoruz.

27. ve 28 satırda farklı bir sayı giren kişiye geçersiz işlem yaptırdığını

söyleyen yazıyı gösteriyoruz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

196

ZAFER ÇOPUR


Sezar Şifreleme Algoritması

Adından da anlaşıldığı gibi bu algoritmayı Jul Sezar gönderdiği mesajların

düşman tarafından ele geçirilmemesi üzerine oluşturulduğu söylenmektedir. Bu

algoritma en temel şifreleme olarak kabul edilmektedir. Günümüzde şifreleme

için pek güvenli sayılmamaktadır.

Şifrelenecek mesajın her bir harfini belirtilen anahtar sayı kadar ileri

kaydırarak yeni bir metin oluşturmak üzeredir. Şifreyi çözmek için ise anahtar

sayısı ile şifreli mesajdaki her karakterin anahtar sayısı kadar geriye giderek ana

mesajı dönüştürmesi üzerinedir.

Örnek olarak ana mesajımız “zafer” olsun. Anahtar sayımız da 3 olsun. Daha

sonra ana mesajdaki her harfi 3 harf ileri kaydırıp şifreli mesajı “cdihu” olarak

buluruz. Aynı şekilde bu şifreyi çözmek için ise o harften itibaren 3 harf geri

giderek “zafer” ana mesajımızı elde ederiz.

Yazılan kodlar ASCII sayı tablosunda karşılığına gelecek şekilde

düşünülmüştür. Ayrıca alfabe 26 karakterle sınırlı olup Türkçe karakterler geçerli

değildir.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

197

ZAFER ÇOPUR


Kodlarımız uzun olduğu için sırayla kodlarımızı açıklayarak gidiyoruz.

1. satırda anahtar uzunluğu adında bir değişken oluşturduk ve 26 değerini

verdik. Alfabe uzunluğu kadar değer veriyoruz. Türkçe karakterler kullanmadık.

Çeviri yaparken buna dikkat ediniz.

2. satırda kullanıcıdan şifreleme yapmak ya da şifreyi çözmek istediğini bize

bildirmesi için kullanıcı bilgi adında bir fonksiyon oluşturduk.

3. satırda while döngüsü oluşturduk. Değerine true diyerek, fonksiyona

girildiği an döngünün çalışmasını istedik.

4. satırda kullanıcıya e yada d harfi girmesini istedik.

5. satırda kullanıcı terminal ekranında harf girdiğinde bunu input fonksiyonu

kullanarak aldık. İnput fonksiyonu yanında lower şeklinde yazdığımız ifadeyle

yazılanları küçük harfe çevirdik. Girilen ifade bilgi değişkenine aktarıldı.

6. ve 7. satırda bilgi değişkeni e veya d’ye eşitse bilgi değişkeninin içindeki

bilgiyi alıyoruz ve return komutuyla döngüden çıkıyoruz.

8. ve 9. satırda else ifadesiyle bu harflerden birisi yoksa tekrar girmesi için

ekranda yazı yazdırıyoruz.

10. satırda kullanıcıdan şifrelemek yapmak ya da şifresini çözmek istediği

mesajını girmesini istemek için kullanıcı mesaj adında bir fonksiyon tanımladık.

11. ve 12. satırda kullanıcının mesajını girmesini istedik ve bu mesajı input

fonksiyonuyla alarak return komutuyla fonksiyondan çıktık.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

198

ZAFER ÇOPUR


13. satırda kullanıcının girdiği mesajı şifrelemek ya da şifresini çözmek için

kaç anahtar sayısı kadar ilerlemesini sormak için kullanıcı anahtar fonksiyonu

tanımladık.

14. satırda anahtar adında değişken oluşturduk ve değerine sıfır dedik.

15. satırda while döngüsü oluşturduk. Değerine true diyerek, fonksiyona

girildiği an döngünün çalışmasını istedik.

16. satırda format fonksiyonunun farklı bir yazım tarzını kullandık. Burada

mavi renkte olan %s ifadesi görüyoruz. Yani buraya gelecek olan ifade %’den

sonra parantez içinde yazılan değişkenin değeridir demek istiyoruz. Parantez

içinde anahtar uzunluğu değişkeninin değerini burada yazdır diyoruz. Biz 1.

satırda bunu 26 almıştık. O yüzden kullanıcı orada şifre numarası (1-26) şeklinde

bir ifade görecektir.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

199

ZAFER ÇOPUR


17. satırda kullanıcıdan bilgiyi input sayesinde aldık ve bunu int yani tam

sayıya çevirdik. Daha sonra sayımızı anahtar değişkenine aktardık.

18. ve 19. satırda anahtar değişkenimiz 1-26 arasındaysa şeklinde bir ifade

tanımladık. Böyle olduğunda anahtar değişkenini alarak return komutuyla

döngüden tamamen çıktık.

20. satırda girilen mesajın şifrelemesi yada çözümü yapılması için mesaj çevir

fonksiyonu oluşturduk.

21. ve 22. satırda bilgi değişkeni eğer d’ye eşit ise şeklinde ifade oluşturduk.

Çünkü kullanıcıdan e veya d değerini girmesini istemiştik. Bu sayede şifreleme

yada çözümleme yapacaktık. O yüzden bunu sorgulamamız gerekiyor. Böyle bir

durumda kullanıcıdan aldığımız anahtar şifre numarasını – işaretli yaptık. Yani

çözümleme yapılacağını ifade ettik. Eğer e girilmiş olsaydı zaten buradaki if

ifadesi çalışmayacaktı. Anahtar değişkeni pozitif olarak kalacaktı.

23. satırda çeviri değişkeni oluşturduk ve içinin boş olduğunu ifade ettik.

24. satırda mesaj değişkenimizin içindeki karakterleri tek tek almak için bir for

döngüsü oluşturduk. Buradaki her karakteri i değişkenine aktardık.

25. satırda i değişkeninin harf olup olmadığını isalpha fonksiyonuyla

araştırdık. Eğer böyle değilse 39. satıra geçecektir.

26. satırda i içinde harf olduğu için i değişkeni içindeki karakter ord sayesinde

Ascii tablosundaki değerine geçiş yaptı. Yani harfimizi sayıya çevirmiş olduk.

Bu değeri a değişkenine aktardık.

27. satırda a değişkeninde bulunan sayıyı kullanıcıdan aldığımızı anahtar sayı

numarası kadar arttırıyoruz.

28. satırda i değişkenimizin içindeki harfin büyük harf olduğunu tespit etmek

için isupper fonksiyonuna tabii tutuyoruz. Böyle bir durum olduğunda 29-32.

satırlar devreye giriyor.

29. ve 30. satırda eğer Z’nin ascii değeri a’dan küçükse a değişkenini büyük

harflere geçmesi için 26 azaltıyoruz.

31. ve 32. satırda A’nın ascii deeri a’dan büyükse a değişkeninin büyük

harflere geçmesi için 26 arttırıyoruz.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

200

ZAFER ÇOPUR


33. satırda 28. satır gibi ama bu sefer küçük harf olup olmadığını sorgulamak

için islower fonksiyonu kullanıyoruz. Daha önceki 28. satırdan sonra

kullandığımız kod mantığıyla aynı şekilde tekrar kodlarımızı yazıyoruz.

38. satırda chr kodunu kullanarak a’nın içinde bulunan sayıyı tekrar harfe

dönüştürüyoruz. Yani Unicode yapısına dönüştürüyoruz.

39. satırda 25. satırda olmayan bir durum olursa çalış demiştik. Yani harf

değilse çeviri değişkeni içinde yer alan ifadeyi i kadar arttır dedik.

41. satırda çeviri işlemi bittikten sonra çeviri değişkeni al ve fonksiyondan çık

dedik.

42., 43. ve 44. satırlarda değişkenlere fonksiyonları tanımladık.

45. satırda çevrilmiş mesajınız şeklinde yazı yazmasını istedik.

46. satırda mesaj çevir fonksiyonunda değişkenlerimizin aktarılıp çalışmasını

istedik.

En son 41. satırda çeviri değişkenini alıp geri çıkmıştık. İşte 46. satırda

bulunan print bu ifadeyi ekrana yazdırıyor. Böylece istediğimiz sonucu

ekranımızda görmüş olduk.

https://www.youtube.com/c/ELHarezmiBilgelikEvi

201

ZAFER ÇOPUR

More magazines by this user
Similar magazines