Python
Python
25 Aralık 2025
Bölüm 1
Genel Bilgiler
1.1 Kurulum
• Pyhton programını kurmak için ([Link] indirilir ve genellikle C:\Python
klasörüne yüklenir.
• En çok kullanılan ücretsiz editörler.
– Spyder, Jypter-Lab, Jypter, Visual Code Editor
– Bu editörlerden biri C:\Pthon\Script klasörlü içinde >> pip install editorname yazılarak yüklene-
bilir. Mühendislik problemleri için editorname yerine ”Spyder” veya ”jypter-lab” kullanılabilir.
• Ve ya online editorler kullanılabilir.
1
– Colab - Google kullanıcı ismi ile kullanılabilir.
– Python Online sayfalar: ([Link]
• IDE kullanmadan python ara yüzü de kullanılabilir. Ancak tercih edilmez.
• Sunum ve ödevler için Jypter-lab daha kullanışlı
1.2 Tarihçe
• İlk versiyonu (versiyon 0.9.0) 1991 yılında yayınlanmıştır.
• 2008 yılına kadar Python’un 2.x şeklinde farklı versiyonları yayınlanmış olmakla birlikte, en radikal değişiklik
Python 3.0 ile gelmiştir.
• Ekim 2025 tarihi itibari ile 3.14. sürüm kullanılmaktadır.
• Python programlama için farklı araçlar olmakla birlikte tüm Python sürümleri komut satırında etkileşimli işlem
yapmak için güçlü bir kabuk (shell) sunmaktadır.
• Python doğru olarak yüklenmiş ise, Python kabuğuna doğrudan python komutu verilerek geçilebilir.
• Python komut satırında birçok matematiksel işlem yapılabilir.
• Python komutları bir program dosyası haline getirilerek dışarıdan çalıştırılabilir.
• Binlerce kütüphane kolayca yüklenir. Fen bilimleri ile ilgilenenler numpy, scipy, sympy, pandas ve matplotlib
gibi kütüphaneleri sıklıkla kullanırlar.
• Bağımsız tasarımcılar tarafından farklı kütüphane kullanılabilir.
[1]:3 + 5
[1]:8
4·5
22 − 3+4
2
- Matematik işlemlerinde bir önceki bulun değer kullanılacak işe alt çizgi ( ) kullanılır.
[3]: _ *2
[3]:80.0
[4]: _ **2
[4]:6400.0
- Python sin(), cos(), tan(), asin(), acos(), atan(), exp(), log(), log10(), sqrt() gibi bir çok
aritmetik işlem fonksiyonları vardır. Ancak bu fonksiyonların hepsi math ismindeki modül içindedir ve bu fonksiyonlar
kullanılmadan önce modül çağrılmalıdır.
- Modül adı + nokta + TAB yazarak modülde ne olduğunu hızlıca görülebilir. Ayrıca, fonksiyonun ilk birkaç harfini
yazıp TAB tuşuna basarsanız, sizin için fonksiyonu otomatik olarak tamamlayabilir, buna TAB tamamlama denir.
√
- Sırası ile e2 , 16, log10 (32), ln(e) ve sin(π/4) matematiksel ifadelerin yazarak gösteriniz.
[3]: import math
math . exp (2)
math . sqrt (16)
math . log10 (32)
math . log ( math . exp (1) )
math . sin ( math . pi /4)
• Tek açıklama satırı için # ve Çok satırlı açıklamalar için üç tek tırnak veya üç çift tırnak kullanabilir.
a = 3.4 # a b i r r e e l s a y ı o l s u n
"""
Bir den fazla sat ı r ...
a ç ı klama ifadesi yaz ı labilir .
"""
print ( f " Hello { name } " , sep = " " , end = " \ n " )
print(f"{}"): Küme işareti içine değişken yazılır ise değişkenin değeri yazılır. Daha sonra ele alınactır.
sep=" " : Değişkenler arasında konulacak işaret yazılabilir.
1.5 Değişkenler
• Eşittir operatörü "=" değişkenlere değer atamak için kullanılır.
a = 3.4
b = c = d = 4.4
x , y , z = 10 , 20.4 , 3.3 e3
print ( c )
a = 2.33
x = float ( input ( " x say ı s ı - -> ? " ) )
y = float ( input ( " y say ı s ı - -> ? " ) )
print ( x + y )
a =1234.6789
print ( f " a ={ a :2.3 f } " ) # a =1234.68
print ( f " a ={ a : ,} " ) # a =1 ,234.6789
print ( f " a ={ a : _ } " ) # a =1 _234 .6789
print ( f " a ={ a :2.3 g } " ) # a =1.23 e +03
• Üç tırnak (“‘ veya ”””) kullanarak çok satırlı karakter katarları elde edilir.
• + operatörü ile birleştirebilirsiniz:
• in anahtar kelimesi ile bir k içinde başka bir stringin olup olmadığını kontrol edebilirsiniz:
1.8 Operatörler
• İşlemlerin öncelik sırası vardır. Her zaman ilk önce parantez içleri daha sonra üst işlemleri yapılır. Sonra sırası
ile çarpma/bölme ve son olarak da toplama/çıkarma işlemleri yapılır.
• Eğer tüm işlemler aynı ise işlemler sağdan sola öncelik sırasına göre yapılır.
Aşağıdaki işlemleri sonucu ne olur.
a = 2 / 2 / 2 / 2
b = (2/2) / 2 / 2
c = ( 2 / 2 ) /( 2 / 2)
d = 2 / ( 2 / 2 ) / 2
print ( f " a = {a}, b = {b}, c = {c}, d = {d}")
1.9 Boolean
• Python’da doğru ve yanlış değerleri saklamak için kullanılan tipe bool adı verilmektedir, bu isim Boolean Ce-
birini geliştiren İngiliz matematikçi George Boole’dan dolayı verilmiştir. Boolean (Mantıksal) veri tipi, Python’da
True (Doğru) ve False (Yanlış) değerlerini temsil eder. Boolean veri tipi, genellikle koşullu ifadelerde ve karar
verme mekanizmalarında kullanılır.
• Boolean Değerler
A = (4 >0) or (4 < 3 )
B = (3 =! 5) and ( True == False )
if x > y :
print ( "x , y den b ü y ü k " )
elseif x < y :
print (x , y den k ü ç ü k )
else :
n =20
a = True if n % 2 == 0 else False
Örnek: Öğrencilerin 100 üzerinde aldığı notları ASÜ yönetmeliğine göre harf karşılıkları hesaplayınız.
Örnek: Girilen sayının çift olup olmadığını kontrol eden programı aşağıdaki ifadeleri kullanarak yazınız. % Mode
komutunu kullanınız.
Döngüler, programlamanın en temel ve güçlü yapı taşlarından biridir. Aynı veya benzer işlemleri tekrar tekrar yap-
mamız gerektiğinde döngüler kullanılır. Döngü, belirli bir koşul sağlandığı sürece bir kod bloğunun tekrar tekrar
çalıştırılmasını sağlayan yapıdır. Programlamada temel olarak iki çeşit döngü bulunur:
- Sayı tabanlı döngüler: Belirli bir sayıda çalışan döngüler (for döngüsü)
- Koşul tabanlı döngüler: Bir koşul sağlandığı sürece çalışan döngüler (while, do-while)
18
• range(son), range(ilk,son) ve range(ilk,son,adim) : Şeklinde bir aralık (range) nesnesi oluşturur.
print ( " \ n _
I lk - Son " )
for i in range ( ilk , son ) :
print (i , end = " - " )
print ( " \ n _
I lk - son - ad ı m " )
for i in range ( ilk , son , adim ) :
print (i , end = " - " )
• Örnek: Bir mağazada satılan ürünlerin fiyatlarını içeren bir liste var. Bu listedeki fiyatların: Toplamını, Ortala-
masını, En yüksek ve en düşük fiyatı hesaplayan program yazınız. En az 5 ürün olsun.
ko ş ul = Ture
while ko ş ul :
# K o ş u l True o l d u ğ u s ü r e c e ç a l ı ş a c a k kodlar
# K o ş u l True o l d u ğ u s ü r e c e ç a l ı ş a c a k kodlar
ko ş ul = False
• π değerini hesaplamak için aşağıda verilen seri kullanılır. Parantez içindeki en son elemanın mutlak değeri
tol=1e-6 olana kadar işleme devam et.
X (−1)n
π = 4 ∗ (1 − 1/3 + 1/5 − 1/7 + 1/9 · · · ) = 4 ∗
n=0
2n + 1
top , step = 0 , 0
tol =1 e -6
item = tol *10
while abs ( item ) > tol :
item =( -1) ** step / (2* step +1)
top = top + item
print ( f " ad ı m ={ step :4 d } item ={ item :4.3 g } pi ={4* top :2.6 f } " )
step = step +1
# B o ş liste
bos_liste = [ ]
• Listelerdeki öğelere indeks (index) kullanılarak erişilir. Python’da indeksler 0’dan başlar.
meyveler = [ " elma " , " armut " , " ç ilek " , " muz " ]
# I_ l k ö ğ e
print ( meyveler [0]) # Ç ı k t ı : elma
# Son ö ğ e
# I_ k i n c i ö ğ e
print ( meyveler [1]) # Ç ı k t ı : armut
• Liste Dilimleme (Slicing): Listelerin belirli bir bölümünü almak için dilimleme (slicing) kullanılır. Dilimleme,
[start:end:step] şeklinde yapılır.
sayilar = [0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9]
# I_ l k 5 ö ğ e
print ( sayilar [:5]) # Ç ı k t ı : [0 , 1, 2, 3, 4]
# 2. indeksten 6. i n d e k s e k a d a r ( 6 d a h i l d e ğ i l )
print ( sayilar [2:6]) # Ç ı k t ı : [ 2 , 3 , 4 , 5 ]
# 2 ’ ş e r ad ı mla alma
print ( sayilar [::2]) # Ç ı k t ı : [0 , 2, 4, 6, 8]
# Ters ç e v i r m e
print ( sayilar [:: -1]) # Ç ı k t ı : [9 , 8, 7, 6, 5, 4, 3, 2, 1, 0]
• Listelere Öğe Eklem: Listelere yeni öğe eklemek için append(), insert() veya extend() metodları kullanılır.
append(): Listenin sonuna öğe ekler.
Listeden öğe silme: Listeden öğe silmek için remove(), pop() veya del kullanılır.
remove(): Belirli bir değeri siler.
pop(): Belirli bir indeksteki öğeyi siler ve döndürür. İndeks belirtilmezse son öğeyi siler.
# Ç i f t say ı lar
cift_sayilar = [ x for x in range (10) if x % 2 == 0]
print ( cift_sayilar ) # Ç ı k t ı : [ 0 , 2 , 4 , 6 , 8 ]
matris = [[1 , 2 , 3] ,
[4 , 5 , 6] ,
[7 , 8 , 9]]
# I_ ç i ç e listelere e r i ş i m
print ( matris [0][1]) # Ç ı k t ı : 2
• Listelerde Döngü Kullanımı Listeler üzerinde döngü kullanarak öğelere erişebilir veya işlemler yapabilirsiniz.
meyveler = [ " elma " , " armut " , " ç ilek " ]
• Liste Kopyalama: Listeler referans türü olduğu için, doğrudan atama yapıldığında orijinal liste değişebilir. Bu
nedenle kopyalama yaparken dikkatli olunmalıdır.
liste1 = [1 , 2 , 3]
liste2 = liste1 # B u b i r k o p y a d e ğ i l , r e f e r a n s a t a m a s ı d ı r
liste2 . append (4)
print ( liste1 ) # Ç ı k t ı : [ 1 , 2 , 3 , 4 ] ( l i s t e 1 d e d e ğ i ş i r )
• Doğru Kopyalama
liste1 = [1 , 2 , 3]
liste2 = liste1 . copy () # v e y a l i s t e 2 = l i s t e 1 [ : ]
liste2 . append (4)
print ( liste1 ) # Ç ı k t ı : [ 1 , 2 , 3 ] ( l i s t e 1 d e ğ i ş m e z )
Fonksiyonlar
Fonksiyonlar, belirli bir işi yapmak için yazılan yeniden kullanılabilir kod bloklarıdır. Örneğin, bir mühendislik prob-
lemi için sürekli aynı hesaplamayı yapmanız gerekiyorsa, bu hesaplamayı bir fonksiyon haline getirip gerektiğinde
çağırabilirsiniz.
27
• def: Fonksiyon tanımlamak için kullanılır.
• fonksiyonadi: Fonksiyonun adıdır. Anlamlı ve açıklayıcı olmalıdır.
• parametre1, parametre2: Fonksiyona girdi olarak verilen değerlerdir.
• return: Fonksiyonun çıktısını (sonucunu) döndürür.
Örnek
Parametreler ve Argümanlar
• Parametreler: Fonksiyon tanımında belirtilen değişkenlerdir.
• Argümanlar: Fonksiyon çağrılırken parametrelere atanan değerlerdir.
import math
Varsayılan Parametreler
Fonksiyon parametrelerine varsayılan değerler atayabilirsiniz. Bu, fonksiyon çağrılırken o parametrenin belirtilmesini
zorunlu olmaktan çıkarır. Örneğin, bir kütle-enerji denklemi (E=mc²) için varsayılan kütle değeri atayalım:
# Fonksiyonu kullanma
print ( " Enerji (1 kg ) : " , enerji_hesapla () ) # V a r s a y ı l a n k ü t l e k u l l a n ı l ı r
print ( " Enerji (5 kg ) : " , enerji_hesapla (5) ) # K ü t l e d e ğ e r i b e l i r t i l i r
import math
def ku vv et _b il ese nl er i ( kuvvet , aci ) :
Fx = kuvvet * math . cos ( math . radians ( aci ) )
Fy = kuvvet * math . sin ( math . radians ( aci ) )
return Fx , Fy
Örnek
İki vektörün bileşkesini hesaplayan program
import math
def ku vv et _b il ese nl er i (F , aci ) :
Fx = F * math . cos ( math . radians ( aci ) )
Fy = F * math . sin ( math . radians ( aci ) )
return Fx , Fy
def topla ( F1 , F2 ) :
Fx1 , Fy1 = kuv ve t_ bi le se nl er i ( F1 [0] , F1 [1])
Fx2 , Fy2 = kuv ve t_ bi le se nl er i ( F2 [0] , F2 [1])
Rx = Fx1 + Fx2
Ry = Fy1 + Fy2
R = math . sqrt ( Rx **2+ Ry **2)
return R
kuvvet = lambda m , a : m * a
print ( " Kuvvet : " , kuvvet (10 , 5) ) # Ç ı k t ı : 50
Fonksiyonlarda Docstring
Fonksiyonların ne yaptığını açıklamak için docstring kullanılır. Bu, özellikle ekip çalışmalarında ve kodunuzu başkalarıyla
paylaşırken önemlidir.
# Fonksiyonu ç a ğ ı r m a
ornek_fonksiyon (1 , 2 , 3 , 4 , isim = " Ali " , yas =25 , meslek = " M ü h . " )
ornek_fonksiyon (1 , 22 , 3 , 4 , isim = " Can " , meslek = " T ı p " )
# P o z i s y o n e l A r g ü m a n l a r ( * a r g s ) : ( 1 , 2 , 3 , 4 )
# Toplam : 10
# A r g ü m a n l a r ı ( * * k w a r g s ) : { ’ i s i m ’ : ’ A l i ’ , ’ y a s ’ : 25 , ’ m e s l e k ’: ’ M ü h . ’ }
# isim : Ali
# yas : 25
# meslek : M ü h .
# P o z i s y o n e l A r g ü m a n l a r ( * a r g s ) : ( 1 , 2 2 , 3 , 4 )
# Toplam : 30
# A r g ü m a n l a r ı ( * * k w a r g s ) : { ’ i s i m ’ : ’ C a n ’ , ’ m e s l e k ’ : ’ T ı p ’}
# isim : Can
# meslek : Tıp
Dosya İşlemleri
Python’da dosyaya okuma ve yazma işlemleri, open() fonksiyonu kullanılarak gerçekleştirilir. Dosya işlemleri için
farklı modlar (”r”, ”w”, ”a”, ”r+”, vb.) kullanılır. İşte Python’da dosyaya okuma ve yazma işlemlerinin nasıl yapılacağına
dair detaylı bir rehber:
34
• ”r+”: Read + Write (Okuma ve Yazma). Dosyayı hem okumak hem de yazmak için açar.
• ”w+”: Write + Read (Yazma ve Okuma). Dosyayı yazmak ve okumak için açar. Dosya varsa içeriği siler.
• ”a+”: Append + Read (Ekleme ve Okuma). Dosyanın sonuna veri eklemek ve okumak için açar.
with open ( " dosya . txt " , " w " , encoding = " utf -8 " ) as dosya :
dosya . write ( " Merhaba , Python !\ n " )
dosya . write ( " Bu bir dosya yazma ö rne ğ idir .\ n " )
with open ( " dosya . txt " , " a " , encoding = " utf -8 " ) as dosya :
dosya . write ( " Bu sat ı r dosyaya eklendi .\ n " )
with open ( " dosya . txt " , " r " , encoding = " utf -8 " ) as dosya :
icerik = dosya . read ()
print ( icerik )
with open ( " dosya . txt " , " r " , encoding = " utf -8 " ) as dosya :
satir = dosya . readline ()
while satir :
print ( satir , end = " " )
satir = dosya . readline ()
3. Tüm Satırları Listeye Okuma (readlines()): Dosyanın tüm satırlarını bir liste olarak okur.
with open ( " dosya . txt " , " r " , encoding = " utf -8 " ) as dosya :
satirlar = dosya . readlines ()
for satir in satirlar :
print ( satir , end = " " )
with open ( " dosya . txt " , " r " , encoding = " utf -8 " ) as dosya :
for satir in dosya :
print ( satir , end = " " )
with open ( " dosya . txt " , " r + " , encoding = " utf -8 " ) as dosya :
icerik = dosya . read ()
print ( " Mevcut i ç erik : " , icerik )
dosya . write ( " Yeni sat ı r eklendi .\ n " )
2. ”w+” Modu: Dosyayı hem yazmak hem de okumak için açar. Dosya varsa içeriği siler.
with open ( " dosya . txt " , " w + " , encoding = " utf -8 " ) as dosya :
dosya . write ( " Bu yeni bir dosya .\ n " )
dosya . seek (0) # D o s y a n ı n b a ş ı n a d ö n
icerik = dosya . read ()
print ( " Yeni i ç erik : " , icerik )
3. ”a+” Modu: Dosyayı hem ekleme yapmak hem de okumak için açar. Dosyanın sonunda işlem yapar.
4. Dosya Konumunu Değiştirme (seek()) Dosyada okuma/yazma konumunu değiştirmek için seek() metodu
kullanılır.
with open ( " dosya . txt " , " r + " , encoding = " utf -8 " ) as dosya :
dosya . seek (10) # 1 0 . k a r a k t e r e g i t
veri = dosya . read (5) # 5 k a r a k t e r o k u
print ( " Okunan veri : " , veri )
Örnek:
Aşağıdaki örnek, bir dosyaya veri yazıp daha sonra bu veriyi okur.
Sözlükler - Dict
Sözlükler, gerçek hayattaki sözlükler gibi davranan bir veri tipi olarak bilinmektedir. Sözlüğün içindeki her bir eleman
indeks olarak değil, anahtar (key) ve değer (value) olarak tutulur. Anahtar değer çiftleri virgülle ayrılarak bir öğeyi
oluştururlar. Değer kısmı bütün veri türünü içerebilir fakat anahtar kısmı sadece string ve int tipinde olabilir.
40
• Ögelerimizi tanımlarken ayraç parantez () yerine Küme Parantezi {} kullandığınıza,
• Anahtar değeri tanımlarken tırnak işareti " " kullandığınıza dikkat ediniz.
• Bir dict değişkeninin anahtar isimlerine ve bunlara karşılık gelen değerleri keys and values ile ulaşılır.
Alist =[{ " name " : " IPE200 " , " Ix " : 500 , " Iy " :220} ,
{ " name " : " IPE240 " , " Ix " : 600 , " Iy " :230} ,
{ " name " : " IPE300 " , " Ix " : 700 , " Iy " :240} ]
for a in Alist :
print ( a [ " name " ] , end = " - " )
print ( " Ix = " ,a [ " Ix " ])
Örnek:
Örnek:
Python’da temel veri yapıları, döngüler ve fonksiyonları öğrendikten sonra, gerçek mühendislik problemlerini daha
düzenli ve okunabilir bir biçimde nasıl modelleyebiliriz?
Bu noktada Nesne Yönelimli Programlama (NYP / Object-Oriented Programming) devreye girer.
44
6.1 Nesne Yönelimli Programlama Neden Gereklidir?
NYP, gerçek dünyadaki varlıkları yazılım içinde temsil etmeyi amaçlar. İnşaat mühendisliğinde bu varlıklar; noktalar,
kirişler, kesitler, zemin tabakaları ve yüklerdir.
NYP’nin temel avantajları:
• Modülerlik: Kod küçük ve anlamlı parçalara ayrılır.
• Yeniden Kullanılabilirlik: Aynı sınıf farklı problemlerde tekrar kullanılabilir.
• Bakım Kolaylığı: Büyük projelerde hata ayıklamak kolaylaşır.
• Gerçek Dünya Modellemesi: Mühendislik sistemleri sezgisel biçimde temsil edilir.
class Point :
pass
P1 = Point ()
P2 = Point ()
print ( P1 )
Bir sınıf sadece bir şablondur. Asıl anlam, o sınıftan üretilen nesneler ile ortaya çıkar.
class Point :
def __init__ ( self , x , y ) :
self . x = x
self . y = y
P1 = Point (3 , 4)
P2 = Point (0 , 0)
print ( f " P1 in x = { P1 . x } , y ={ P1 . y } " )
print ( f " P2 in x = { P2 . x } , y ={ P2 . y } " )
---
P1 in x = 3 , y =4
P2 in x = 0 , y =0
Listing 6.1: Koordinatlara sahip Point sınıfı
Yorum: self, nesnenin kendisini temsil eder. Her nokta kendi koordinat bilgisine sahiptir.
P1 = Point (3 , 4)
P2 = Point (0 , 0)
P1 . PointPrint ()
P2 . PointPrint ()
print ( f " Mesafe = { P1 . distance_to ( P2 ) :.2 f } " )
Bu yapı, sadece noktalar için değil bir kolonu, kirişi ve benzeri elemanları tanımlamak için de kullanılabilir.
class Beam :
def __init__ ( self , start_point , end_point , material ) :
self . start = start_point
self . end = end_point
self . material = material
def length ( self ) :
return self . start . distance_to ( self . end )
P1 = Point (0 , 0)
P2 = Point (6 , 5)
K1 = Beam ( P1 , P2 , " C30 Beton " )
print ( f " Kiri ş uzunlu ğ u = { K1 . length () :.2 f } m " )
Listing 6.2: Point tabanlı Kiriş sınıfı
class Section :
def __init__ ( self , width , height ) :
self . width = width
self . height = height
self . centroid = Point ( width /2 , height /2)
class Point :
def __init__ ( self , x , y ) :
self . x = x
self . y = y
P1 = Point (0 , 0)
P2 = Point (6 , 0)
P3 = Point (0 , 0)
P4 = Point (0 , 3)
E1 = Beam ( P1 , P2 )
E2 = Column ( P3 , P4 )
print ( E1 . info () )
print ( E2 . info () )
Listing 6.4: Point ile tanımlanan elemanlarda polimorfizm
Çıktı mantığı: info() metodu her iki sınıfta da aynı isimle çağrılır, ama Beam ve Column sınıflarında farklı içerik
üretir.
Elemanlar = [
Beam ( Point (0 , 0) , Point (5 , 0) ) ,
Column ( Point (0 , 0) , Point (0 , 3) ) ,
Beam ( Point (0 , 0) , Point (8 , 0) )
]
Açıklama: Döngü içinde her seferinde [Link]() çağrılır. Fakat nesnenin tipi Beam ise kiriş gibi, Column ise kolon
gibi davranır.
Modüler Programlama
• Modülerin bir diğer anlamı da birbiriyle uyumlu olan ve önceden hazırlanmış parçalardır. Bu parçalar bir araya
gelerek uyumlu bir şekilde bir bütünü oluşturmaktadır. Python’da aslında her bir dosya modül dür. Modüler
içinde fonksiyonları sınıfları ve objeleri bulundurur.
• Programın önceden yazılmış parçaları, bütüne istenildiği zaman dâhil edilerek çalıştırabilir. Böylelikle prog-
ramcının çalıştığı ortam sadece kendi işine yaradığı modülleri kullanacağından gereksiz yere bellek tüketimi ol-
mayacaktır. Python birçok modül içerdiği gibi, kullanıcı kendisi de modül yazabilir. Python modülleri kütüphane
olarak da adlandırılır.
Örnek
• [Link] de
54
def cevre (x , y ) :
return 2*( x + y )
• [Link] de
def alan (x , y ) :
return ( x * y )
Kütüphaneler
Özel bir problem çözerken her bir program parçası kullanıcı tarafından
yazılması yerine hazır kodları kullanmak için geliştirilmiştir.
Python kütüphaneleri iki başlığa ayrılabilir: Python ile standart olarak ge-
len kütüphaneler ve daha sonra kullanıcı tarafında yüklene kütüphaneler.
Bu bölümde Python ile standart olarak gelen kütüphaneler en
popüler olanları verilecektir. Tüm listeye [Link]
library/[Link] adresinden ulaşılabilirsiniz.
random()
56
import random
x =
random . choice ([ " sinek " ," ma ç a " ," karo " ," kupa " ])
y = random . choice ( range (1 ,11) )
print ( f " Se ç ti ğ iniz kag ı t { x } { y } " )
import random as rd
x = rd . choice ([ " sinek " ," ma ç a " ," karo " ," kupa " ])
y = rd . randint (1 ,10)
print ( f " Se ç ti ğ iniz kag ı t { x } { y } " )
statistics
import statistics as st
x =[2 , -4 , 5 , 6 , 54]
print ( f " Ortalama = { st . mean ( x ) } " )
print ( f " Orta de ğ er = { st . median ( x ) } " )
print ( f " standart sapma = { st . stdev ( x ) :4.4 f } " )
math
import math
print ( dir ( math ) )
print ( math . pi )
Time
import time
print ( time . gmtime ( time . time () ) )
print ( time . localtime () )
print ( time . ctime () )
print ( time . strftime ( " % d /% m /% Y " ) )
Numpy
59
verileri saklar.
import numpy as np
import numpy as np
matris = np . array ([[1 , 2 , 3] , [4 , 5 , 6]])
print ( matris )
4. Dizi Özellikleri
• shape: Dizinin boyutlarını verir.
• dtype: Dizinin veri tipini verir.
• size: Dizideki toplam eleman sayısını verir.
import numpy as np
dizi = np . array ([1 , 2 , 3 , 4 , 5])
print ( dizi . shape ) # Ç ı k t ı : ( 5 , ) ( 1 b o y u t l u , 5 e l e m a n )
print ( dizi . dtype ) # Ç ı k t ı : i n t 6 4 ( v a r s a y ı l a n v e r i t i p i )
import numpy as np
print ( np . zeros ((3 , 3) ) ) # 3 x 3 ’ l ü k s ı f ı r m a t r i s i
print ( np . ones ((2 , 4) ) ) # 2 x 4 ’ l ü k b i r l e r m a t r i s i
print ( np . arange (0 , 10 , 2) ) ) # 0 ’ d a n 1 0 ’ a 2 ’ ş e r a r t a n d i z i
print ( np . linspace (0 , 1 , 5) ) ) # 0 i l e 1 a r a s ı n d a 5 e ş i t a r a l ı k l ı s a y ı
print ( np . eye (3) ) ) # 3 x 3 ’ l ü k b i r i m m a t r i s
import numpy as np
a = np . array ([1 , 2 , 3])
b = np . array ([4 , 5 , 6])
# Toplama
print ( a + b ) # Ç ı k t ı : [5 7 9]
# Ç a r p m a
import numpy as np
a = np . array ([1 , 2 , 3])
b = 2 # S k a l e r d e ğ e r
print ( a + b ) # Ç ı k t ı : [ 3 4 5 ]
import numpy as np
dizi = np . array ([1 , 2 , 3 , 4 , 5])
print ( dizi [1:4]) # Ç ı k t ı : [ 2 3 4 ]
matris = np . array ([[1 , 2 , 3] , [4 , 5 , 6] , [7 , 8 , 9]])
print ( matris [0:2 , 1:3])
import numpy as np
dizi = np . array ([1 , 2 , 3 , 4 , 5])
print ( dizi [ dizi > 3]) # Ç ı k t ı : [ 4 5 ]
import numpy as np
dizi = np . array ([1 , 2 , 3 , 4 , 5])
print ( np . sum ( dizi ) ) # Ç ı k t ı : 1 5
print ( np . mean ( dizi ) ) # Ç ı k t ı : 3 . 0
print ( np . max ( dizi ) ) # Ç ı k t ı : 5
11. Dizileri Yeniden Şekillendirme reshape() metodu ile bir dizinin bo-
yutları değiştirilebilir.
import numpy as np
dizi = np . arange (1 , 10)
print ( dizi . reshape (3 , 3) ) # Ç ı k t ı :
# [[1 2 3]
# [4 5 6]
# [7 8 9]]
import numpy as np
a = np . array ([1 , 2 , 3])
b = np . array ([4 , 5 , 6])
print ( np . concatenate (( a , b ) ) ) # Ç ı k t ı : [ 1 2 3 4 5 6 ]
c = np . array ([[1 , 2] , [3 , 4]])
d = np . array ([[5 , 6] , [7 , 8]])
print ( np . vstack (( c , d ) ) ) # D i k e y b i r l e ş t i r m e
print ( np . hstack (( c , d ) ) ) # Y a t a y b i r l e ş t i r m e
Temel Fonksiyonlar
1. Matris Çarpımı, dot(A,B): İki matrisin veya vektörün çarpımını hesaplar.
import numpy as np
result = np . dot (B , A )
print ( result )
result = np . dot (A , B )
print ( result )
import numpy as np
import numpy as np
A = np . array ([[1 , 2] , [3 , 4]])
det = np . linalg . inv ( A )
print ( det )
import numpy as np
A = np . array ([[1 , 2] , [2 , 1]])
eigenvalues , eigenvectors = np . linalg . eig ( A )
import numpy as np
A = np . array ([[3 , 2] , [1 , 4]])
b = np . array ([1 , 2])
x = np . linalg . solve (A , b )
print ( x )
import numpy as np
print ( rank )
8. En Küçük Kareler Yöntemi: Aşırı belirli (overdetermined) lineer denklem sistemlerini çözmek için kullanılan bir
yöntemdir. Denklem sayısı (m) bilinmeyen sayısından (n) fazladır (m > n) ve genellikle tam çözüm yoktur.
- Matematiksel Formülasyon Ax = b sisteminde:
• A: m × n boyutlu katsayı matrisi (m > n)
• x: n × 1 boyutlu bilinmeyenler vektörü
• b: m × 1 boyutlu sağ taraf vektörü
Çözüm vektörü x, aşağıdaki ifadeyi minimize eder:
Örnek Uygulama
Çözüm
y = ax + b doğrusunu uydurmak için:
(a) A matrisini oluştur:
1 1 1.1
2 1 1.9
3
A= 1
, 3.2
b=
4 1 4.1
5 1 5.0
import numpy as np
import matplotlib . pyplot as plt
# Verilerimiz
x = np . array ([1 , 2 , 3 , 4 , 5])
y = np . array ([1.1 , 1.9 , 3.2 , 4.1 , 5.0])
# A matrisini o l u ş t u r a l ı m ( s ü t u n l a r : x ^0 ve x ^1)
A = np . vstack ([ x , np . ones ( len ( x ) ) ]) . T
# En k ü ç ü k kareler ç ö z ü m ü
a , b = np . linalg . lstsq (A , y , rcond = None ) [0]
# Grafik ç i z i m i
plt . plot (x , y , ’o ’ , label = ’ Orjinal veri ’ , markersize =10)
plt . plot (x , a * x + b , ’r ’ , label = f ’ Uydurulan do ğ ru : y = { a :.3 f } x +
{ b :.3 f } ’)
plt . legend ()
plt . show ()
Scipy
Optimizasyon ([Link])
[Link], SciPy kütüphanesinde bulunan ve çok bo-
yutlu optimizasyon problemlerini çözmek için kullanılan bir fonksiyon-
dur. Yerel ve küresel optimizasyon problemlerinde kullanılabilir ve farklı
optimizasyon algoritmalarını destekler. minimize fonksiyonunun temel
sözdizimi aşağıdaki gibidir:
70
from scipy . optimize import minimize
Örnek
f (x) = (x − 3)2 + 5
import numpy as np
from scipy . optimize import minimize
# A m a ç fonksiyonu
def ob je ct iv e_ fun ct io n ( x ) :
return ( x - 3) **2 + 5
# Optimizasyonu ç a l ı ş t ı r
result = minimize ( objective_function , x0 , method = ’ BFGS ’)
# S o n u ç l a r ı yazd ır
print ( " Optimal de ğ er ( x ) : " , result . x )
print ( " Minimum fonksiyon de ğ eri : " , result . fun )
print ( " Ba ş ar ı l ı oldu mu ?: " , result . success )
print ( " _
I terasyon say ı s ı : " , result . nit )
Optimal de ğ er ( x ) : [3.]
Minimum fonksiyon de ğ eri : 5.0
Ba ş ar ı l ı oldu mu ?: True
_
I terasyon say ı s ı : 3
# A m a ç fonksiyonu
def ob je ct iv e_ fun ct io n ( x ) :
return x [0]**2 + x [1]**2
# B a ş l a n g ı ç tahmini
x0 = [0.5 , 0.5]
# Optimizasyonu ç a l ı ş t ı r
result = minimize ( objective_function , x0 , method = ’ SLSQP ’ ,
constraints = constraint )
# S o n u ç l a r ı yazd ır
print ( " Optimal nokta : " , result . x )
print ( " Minimum de ğ er : " , result . fun )
def eqn ( x ) :
return x **3 - 2* x - 5
A = [[3 , 2] , [1 , -4]]
b = [7 , -5]
x = solve (A , b ) # S o l u t i o n : [ 2 . , 0 . 5 ]
İntegral ([Link])
Tek boyutlu integral hesaplar.
Enterpolasyon ([Link])
1D enterpolasyon.
x = [0 , 1 , 2 , 3]
y = [0 , 2 , 1 , 3]
f = interp1d (x , y , kind = ’ cubic ’)
print ( f (1.5) ) # I n t e r p o l a t e d v a l u e
Sympy
76
Sembolik Değişkenler Tanımlama
Sayısal değerler yerine matematiksel semboller olarak temsil edilen sem-
bolik değişkenler oluşturmak için symbols() fonksiyonu kullanılır:
import sympy as sp
Matematiksel İfadeler
Aşağıdaki ifadeyi Sympy’da ifade etmek için yalnızca Sympy değişkenleri ve fonksiyonları kullanın:
√
x2 (1 + x)
y=
x+4
import sympy as sp
x = sp . symbols ( " x " )
ifade = x **2 + 2* x + 1
display ( ifade ) # Ç ı k t ı : x * * 2 + 2 * x + 1
import sympy as sp
x , y = sp . symbols ( " x y " )
ifade = x **2 + 2* y + 1
y = ifade . subs ({ x :2 , y :3})
display ( y )
import sympy as sp
x , y , z = sp . symbols ( "x , y , z " )
a = ( x **2+ y *4) . subs (x , 3)
print ( a )
expr = x * y + z **2 * x ;
values = { x : 1.25 , y : 0.4 , z : 3.2};
b = expr . subs ( values )
print ( b )
import sympy as sp
x = sp . sqrt (2+ sp . pi )
display ( x )
display ( sp . N ( x ) )
Sympy Matrisleri
Aşağıdaki matrisleri Sympy’da ifade etmek için Matrix() kullanın:
1 4
x= 1 2 3 y= 1 2 3 z= 1 2 3 k = 2 5
3 3
import sympy as sp
x = sp . Matrix ([1 ,2 ,3])
y = sp . Matrix ([[1] ,[2] ,[3]])
z = sp . Matrix ([[1 ,2 ,3]])
k = sp . Matrix ([[1 , 4] ,[2 ,5 ] ,[3 ,3 ]])
display (x , y , z , k )
display ( x [2])
display ( y [2 ,0])
display ( x [1 ,0])
display ( k [1 ,1])
import sympy as sp
x , y , z = sp . symbols ( " x y z " )
sol = sp . linsolve ([3* x - 5* y - 10 , x + y -1] , [x , y ])
display ( sol )
import sympy as sp
x , y , z = sp . symbols ( " x y z " )
sol = sp . nonlinsolve ([ - x **2 - x + 1] , [ x ])
import sympy as sp
x , y , z = sp . symbols ( " x y z " )
sol = sp . nsolve ([ x1 **2 + x1 * x2 - 10 , x2 + 3* x1 * x2 **2 - 57] , [ x1 , x2 ] ,
[1.5 ,3.5])
simplify()
İfadeleri Sadeleştirme simplify() fonksiyonu ile ifadeleri sadeleştirebilirsiniz.
import sympy as sp
ifade = ( x **2 - 1) / ( x + 1)
print ( sp . simplify ( ifade ) ) # Ç ı k t ı : x - 1
diff()
Türev Alma diff() fonksiyonu ile türev hesaplayabilirsiniz.
import sympy as sp
turev = sp . diff ( x **3 + 2* x **2 + x , x )
print ( turev ) # Ç ı k t ı : 3 * x * * 2 + 4 * x + 1
integrate()
İntegral Hesaplama integrate() fonksiyonu ile integral hesaplayabilirsiniz.
import sympy as sp
integral = sp . integrate ( x **2 , x )
print ( integral ) # Ç ı k t ı : x * * 3 / 3
integral = sp . integrate ( x **2 , (x , 0 , 2) )
print ( integral ) # Ç ı k t ı : 8 / 3
limit()
Limit Hesaplama limit() fonksiyonu ile limit hesaplayabilirsiniz.
import sympy as sp
lim = sp . limit (( x **2 - 1) / ( x - 1) , x , 1)
print ( lim ) # Ç ı k t ı : 2
trigonometri
Trigonometrik İfadeler SymPy, trigonometrik ifadeleri sembolik olarak işleyebilir.
series()
Seri Açılımları series() fonksiyonu ile seri açılımları yapabilirsiniz.
import sympy as sp
seri = sp . series ( sp . exp ( x ) , x , 0 , 5)
print ( seri ) # Ç ı k t ı : 1 + x + x * * 2 / 2 + x * * 3 / 6 + x * * 4 / 2 4 + O ( x * * 5 )
LaTeX Çıktısı: SymPy, matematiksel ifadeleri LaTeX formatında çıktı olarak verebilir.
import sympy as sp
ifade = x **2 + y **2
print ( sp . latex ( ifade ) ) # Ç ı k t ı : x ^{2} + y ^{2}
evalf()
Sayısal Hesaplamalar SymPy, sembolik hesaplamalar yapar, ancak sayısal sonuçlar elde etmek için evalf() kul-
lanılabilir.
import sympy as sp
sonuc = sp . sqrt (2) . evalf ()
functions
Fonksiyon Tanımlama: Sembolik fonksiyonlar tanımlayabilirsiniz.
import sympy as sp
x , y , z = sp . symbols ( "x , y , z " )
f = sp . Function ( ’f ’) ( x )
print ( f ) # Ç ı k t ı : f ( x )
g = sp . Function ( " g " ) (x , y , z ) # d e f i n i n g funtions
h = sp . Lambda (x , x **2+1) # h(x)
Matplotlib
85
import matplotlib . pyplot as plt
x = [1 , 2 , 3 , 4 , 5]
y = [2 , 3 , 5 , 7 , 11]
plt . plot (x , y ,"b - - v " )
plt . show ()
• Renkler İnglizce ismlerin ilk harfi: ’b’, ’g’,’r’, ’c’, ’m’, ’y’, ’k’, ’w’
• Çizigi sitilleri: ’-’ , ’–’, ’-.’, ’:’
• İşaretler ’.’ nokta ’,’ pixel, ’o’ çember, ’v’ üçgen, ’ˆ’ üçgen, ’¡’ üçgen, ’¿’ üçgen, ’1’ tri down marker, ’2’ tri up marker,
’3’ tri left marker, ’4’ tri right marker, ’s’ square marker, ’p’ pentagon marker, ’*’ star marker, ’h’ hexagon1
marker, ’H’ hexagon2 marker, ’+’ plus marker, ’x’ x marker, ’D’ diamond marker, ’d’ thin diamond marker, ’—’
vline marker, ’ ’ hline marker
Grafik Türleri:
etiketler = [ ’A ’ , ’B ’ , ’C ’ , ’D ’]
boyutlar = [15 , 30 , 45 , 10]
plt . pie ( boyutlar , labels = etiketler , autopct = ’ %1.1 f %% ’)
Grafik Özelleştirme:
plt . plot (x , y )
plt . title ( ’ Ba ş l ı k ’)
plt . xlabel ( ’X Ekseni ’)
plt . ylabel ( ’Y Ekseni ’)
2. Eksen Sınırları:
plt . xlim (0 , 6)
plt . ylim (0 , 12)
plt . grid ()
plt . grid ( axis = ’y ’ , linewidth =1 , linestyle = " --" , color = " blue " )
plt . grid ( axis = ’x ’ , linewidth =2 , linestyle = " -" , color = " red " )
subplot() fonksiyonu ile birden fazla grafik aynı pencere içinde gösterilebilir.
plt . subplot (1 , 2 , 1) # 1 s a t ı r , 2 s ü t u n , 1 . g r a f i k
plt . plot (x , y )
plt . title ( ’ Grafik 1 ’)
plt . subplot (1 , 2 , 2) # 1 s a t ı r , 2 s ü t u n , 2 . g r a f i k
plt . scatter (x , y )
plt . title ( ’ Grafik 2 ’)
plt . show ()
Grafikleri Kaydetme
Matplotlib, önceden tanımlanmış stiller sunar. Bu stillerle grafiklerin görünümünü hızlıca değiştirebilirsiniz. [Link](’ggplo
Diğer stiller: ’seaborn’, ’dark background’, ’bmh’, vb.
3D Grafikler:
ax . scatter (x , y , z )
plt . show ()
5. Parametrik Grafik Çizimi: Parametrik bir grafik çizmek için plot_parametric fonksiyonu kullanılır. Örneğin, bir
çember çizmek için:
6. 3D Grafik Çizimi: 3D grafikler çizmek için plot3d fonksiyonu kullanılır. Örneğin, sin(x) * cos(y) fonksiyo-
nunun grafiğini çizmek için:
x , y = symbols ( ’x y ’)
plot3d ( sin ( x ) * cos ( y ) , (x , -5 , 5) , (y , -5 , 5) )
Pandas
92
>> pip install pandas
Kurulan sürümü öğrenmek aşağıdaki kod yazılır.
import pandas as pd
print ( pd . _version__ )
13.1 Series
Series, tek boyutlu etiketli bir dizi (array) olarak düşünülebilir. Her bir elemanın bir indeksi (etiket) vardır ve bu sayede
verilere erişim ve manipülasyon kolaylaşır. Series, bir vektör gibi davranır.
Series Oluşturma
Series, bir liste, NumPy dizisi veya sözlük (dictionary) gibi farklı veri yapılarından oluşturulabilir.
import pandas as pd
# Listeden Series o l u ş t u r m a
data = [235 , 275 , 350 , 420]
series = pd . Series ( data )
print ( series )
Seri indeksleri
Bir önceki örnekte eğer bir kez daha aşağıdaki şekilde yazılırsa
import pandas as pd
data = [235 , 275 , 350 , 420]
series = pd . Series ( data , index =[ " S235 " ," S275 " ," S350 " ," S420 " ])
print ( series )
-----
S235 235
S275 275
S350 350
S420 420
Dict veri yapısından [Link] oluşturulduğunda, dict veri yapısındaki anahtarlar (keys) otomatik olarak indeksler
olur.
import pandas as pd
data = { " a " : 10 , " b " : 20 , " c " : 30 , " d " : 40}
s = pd . Series ( data )
print ( s )
Değerler erişme
import pandas as pd
data = [235 , 275 , 350 , 420]
s = pd . Series ( data )
filtre = s [ s > 300]
print ( filtre )
s = s * 2
import pandas as pd
data =[92 ,35 ,45 ,63 ,92 ,46 ,55 ,36 ,67 ,84 ,97 ,90 ,100]
s = pd . Series ( data )
print ( s . describe () )
print ( s . count () )
----
count 13.0000
mean 69.3846
std 24.2437
min 35.0000
25% 46.0000
50% 67.0000
75% 92.0000
max 100.0000
dtype : float64
s_sirali = s . sort_values ()
print ( s_sirali )
import pandas as pd
df1 = pd . DataFrame ([[101 ,102 ,103 ,104 ,105] ,
[201 ,202 ,203 ,204 ,205]])
print ( df1 )
---
0 1 2 3 4
0 101 102 103 104 105
1 201 202 203 204 205
- columns and index kullanımı isteğe bağlıdır. - DataFrame() fonksiyonu doğrudan dict veri yapısından da elde
edilebilir.
import pandas as pd
data = {
" Isim " : [ ’ Ali ’ , ’ Veli ’ , ’ Ay ş e ’ , ’ Fatma ’] ,
" Ya ş " : [25 , 30 , 22 , 27] ,
" Ş ehir " : [ ’ Ankara ’ , ’ Istanbul ’ , ’ Izmir ’ , ’ Bursa ’]
}
df = pd . DataFrame ( data )
print ( df )
---
Isim Ya ş Ş ehir
0 Ali 25 Ankara
DataFrame fonksiyonları
import pandas as pd
df = pd . DataFrame ({
" A " : [10 , 20 , 30] ,
" B " : [100 , 200 , 300]
} , index =[ " x " , " y " , " z " ])
# Etikete g ö r e e r i ş i m
df . loc [ " x " ] # ’x ’ etiketli sat ı r
df . loc [ " x " : " y " ] # ’x ’ ile ’y ’ aras ı ndaki sat ı rlar ( her ikisi de
dahil )
df . loc [[ " x " , " z " ]] # Belirli etiketlerin listesi
# K o ş u l a g ö r e e r i ş i m
df . loc [ df [ " A " ] > 15] # A s ü t u n u 15 ’ ten b ü y ü k olan sat ı rlar
5. [Link][]
# Sat ı r ve s ü t u n pozisyonu
df . iloc [0 , 1] # 0. sat ır , 1. s ü t u n ( yani B s ü t u n u )
6. Herhangi bir elemanı, satır veya sutüna [Link][] veya [Link][] komutları ile ulaşılabilir.
iloc[] index tabanlı çalışır; loc[] isim tabanlı çalışır. Eğer sütün ve satırları isim verilmedi ise aynıdır. Ancak
isim verildi ise [Link][] kullanılır.
import pandas as pd
# Ö r n e k veri o l u ş t u r m a
veri = {
" Ö ğ renci No " : [101 , 102 , 103 , 104] ,
" Ad " : [ " Ali " , " Ay ş e " , " Mehmet " , " Zeynep " ] ,
" Not " : [85 , 92 , 78 , 88] ,
" S ı n ı f " : [ " 10 A " , " 10 B " , " 10 A " , " 10 B " ]
}
df = pd . DataFrame ( veri )
# Excel ’e yazma
df . to_excel ( " ogrenci_notlari . xlsx " , sheet_name = " Notlar " )
df [ ’ Yeni_S ü tun ’] = df [ ’ Ya ş ’] * 2
print ( df )
2. Filtreleme
3. Sıralama
4. Gruplama ve Toplama
DataFrame Görselleştirme
import pandas as pd
import matplotlib . pyplot as plt
# Ö r n e k veri o l u ş t u r m a
data ={
’Y ı l ’: [2010 , 2011 , 2012 , 2013 , 2014] ,
’ Sat ı ş ’: [200 , 250 , 300 , 350 , 400]
}
df = pd . DataFrame ( data )
# Ç i z g i g r a f i ğ i
df . plot ( x = ’Y ı l ’ , y = ’ Sat ı ş ’ , kind = ’ line ’ , title = ’Y ı llara G ö re Sat ı ş lar ’)
plt . ylabel ( ’ Sat ı ş Miktar ı ’)
plt . show ()
import pandas as pd
import matplotlib . pyplot as plt
# Ö r n e k veri o l u ş t u r m a
data ={
’Y ı l ’: [2010 , 2011 , 2012 , 2013 , 2014] ,
’ Sat ı ş ’: [200 , 250 , 300 , 350 , 400]
}
df = pd . DataFrame ( data )
plt . tight_layout ()
plt . show ()