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