Python İle Bilimsel Kodlama 1. Bölüm
Günümüz yüzyılında yazılım artık herkesin bilmesi ve işlerinin içinde olan bir yetenek haline geldi. Peki biz bu serimizde ne yapacağız? Fizikte sayısal analiz yöntemlerini Python dilinde inceleyeceğiz. Sayısal analiz, matematiksel problemlere yaklaşık çözümler bulmak için kullanılan yöntemleri inceler. Çoğu gerçek hayattaki problem, kapalı formda çözüm vermez; sayısal analiz bu boşluğu doldurur.
Fizikteki başlıca uygulama yöntemleri; diferansiyel denklemler, kuantum mekaniği ve fiziksel simülasyonlardır.
Bu serimizde sizlere Spyder programı üzerinden Python anlatacağım. Spyder uygulaması için https://repo.anaconda.com/archive/ sitesine giriş yaparak cihazınızla uyumlu olan dosyayı indirip kurmanız yeterli olacaktır.

Ekranımızdaki işaretli olan "File" kısmından yeni dosya açabilir ve dosyamızı kaydedebiliriz. Kırmızı daire ile işaretli olan tuştan yeni dosya açabilir; turuncu işaretli kısmından kaydedebilir; sarı işaretli kısımdansa kodumuzu çalıştırabiliriz bu kısım Spyder uygulamasının temel fonksiyonlarının kısayollarıdır. Ekranın sol kısmından kod setimizi yazabilir; sağ kısmından ise (mavi ile işaretli) çıktımızı alabiliriz.
Basitçe giriş yapalım;
print("merhaba biricik okurları")
bunun çıktısı;
merhaba biricik okurları
şeklinde olacaktır ve bu çoğu kişinin sizlerle de birlikte yazdığımız ilk kod olacak.
Matematiksel işlemleri normalde +, -, . , : olarak el yazımıyla yapabiliyoruz fakat bilgisayarda ufak farklılıklarla işlemleri gerçekleştireceğiz ve bu işlemler sırasıyla;
| İşlemler | Normal Yazım | Bilgisayar Yazımı |
|---|---|---|
| Toplama | a+b | a+b |
| Çıkarma | a-b | a-b |
| Çarpma | a.b | a*b |
| Bölme | a:b | a/b |
| Üs Alma | a^b | |
| Bunu öğrendiğimize göre ufak bi örnekle pekiştirelim. |
Örnek 1:
i)
ii)
iii)
işlemlerini pythonda yazalım.
Girdimiz bu şekilde olacaktır;
print("(a+b-c)*((2*a/2*b)+7*c)")
print("a+b^3-c^2")
print("((a+b)^1/2)+((a^2+b^3)/(b^2-4*a*c))")
Çıktımıza böyle olacaktır;
(a+b-c)*((2*a/2*b)+7*c)
a+b^3-c^2
((a+b)^1/2)+((a^2+b^3)/(b^2-4*a*c))
Günlük işlemlerde kullandığımız büyüklük ve eşitlik ifadeleri bilgisayar ortamında da aynı anlama sahiptirler. Aşağıda sıklıkla kullanılan ifadeler ve anlamlarını görebilirsiniz.
| Karşılaştırma İşlemleri | |
|---|---|
| == | Eşittir |
| <> | Eşit değil |
| > | Büyüktür |
| < | Küçüktür |
| >= /=> | Büyük eşittir |
| <=/=< | Küçük eşittir |
Günlük olarak kullandığımız ve/veya/değil gibi mantıksal ifadeler bilgisayar ortamında aşağıdaki şekilde ifade edilir;
| Mantıksal İfadeler | |
|---|---|
| Ve | . |
| Veya | + |
| Değil | ' |
Bunları öğrendiğimize göre mantıksal ve karşılaştırma ifadelerini içeren örnekler yapalım.
Örnek 2:
Bir sınıftaki öğrenciler arasından yalnızca yaşı 23 üzerinde olup, not olarak geçer not alanların isimleri isteniyor. Buna uygun kod setini yazınız.
(Veriler;
- Şükrü → Yaş: 24, Not: 55
- Suer → Yaş: 22, Not: 70
- Mehmet → Yaş: 25, Not: 45
- Begüm → Yaş: 26, Not: 80
- Yusuf → Yaş: 23, Not: 60
- Elif → Yaş: 27, Not: 50)
ogrenciler = [
{"isim": "Şükrü", "yas": 24, "not": 55},
{"isim": "Suer", "yas": 22, "not": 70},
{"isim": "Mehmet", "yas": 25, "not": 45},
{"isim": "Begüm", "yas": 26, "not": 80},
{"isim": "Yusuf", "yas": 23, "not": 60},
{"isim": "Elif", "yas": 27, "not": 50}
]
for ogrenci in ogrenciler:
if ogrenci["yas"] > 23 and ogrenci["not"] >= 50:
print(ogrenci["isim"])
Bu kodun çıktısı bize yaşı 23 üstünde ve geçer not alan öğrencilerin isimlerini verecektir;
Şükrü
Begüm
Elif
Örnek 3: Bir sınıfta Bilgisayar dersinden 65 in üzerinde not alıp, Türk Dili veya Yabancı Dil derslerinin herhangi birinden 65'in üzerinde not alanların isimleri istenmektedir.
(Veriler;
- Mert → Bilgisayar: 70, Türk Dili: 60, Yabancı Dil: 50
- Ömer → Bilgisayar: 80, Türk Dili: 66, Yabancı Dil: 40
- Emin → Bilgisayar: 60, Türk Dili: 70, Yabancı Dil: 75
- Bahar → Bilgisayar: 90, Türk Dili: 50, Yabancı Dil: 68
- Can → Bilgisayar: 67, Türk Dili: 40, Yabancı Dil: 30
- Büşra → Bilgisayar: 72, Türk Dili: 70, Yabancı Dil: 80)
Öncelikle verilerimizi Python'a tanıtmalıyız bunun için "ogrenciler[]" adlı bir liste oluşturalım (Python'da liste şu şekilde oluşturulur: Liste[eleman1,eleman2,...])ve elimizdeki verileri sırasıyla yazalım ardından da ogrenciler[] listesindeki veriler için bir "o" terimi belirleyelim ve bu "o" terimi bize ogrenciler[] listesinden istediğimiz verileri bize versin ve yazdırsın.
ogrenciler = [
{"isim": "Mert", "bil": 70, "td": 60, "yd": 50},
{"isim": "Ömer", "bil": 80, "td": 66, "yd": 40},
{"isim": "Emin", "bil": 60, "td": 70, "yd": 75},
{"isim": "Bahar", "bil": 90, "td": 50, "yd": 68},
{"isim": "Can", "bil": 67, "td": 40, "yd": 30},
{"isim": "Büşra", "bil": 72, "td": 70, "yd": 80}
]
for o in ogrenciler:
if o["bil"] > 65 and (o["td"] > 65 or o["yd"] > 65):
print(o["isim"])
yazdığımız kodun çıktısı ve dolayısıyla çözümü şu şekildedir;
Ömer
Bahar
Büşra
Python'da Değişkenler
Matematikte uzun formüller veya kalıplarda boğulmak yerine bunlara bir değişken tanımlayabiliriz. Fakat Python'da rastgele değişken tanımlayamayız, değişken tanımlamak için temel birkaç kuralımız vardır. Değişken adı rakamla başlayamaz. Değişken adı harf veya alt çizgiyle başlayabilir ardından rakamlar dahil edilebilir.
x=5 #int=sayı
y="merhaba" #str=metin
z=3.14 #float=ondalıklı sayı
x=5 #int
y="merhaba" #str
z=3.14 #float
print(x)
print(y)
print(z)
Çıktımız;
5
merhaba
3.14
Python'da kullandığımız ifadenin tipini öğrenmek veya kontrol etmek için print(type(x)) komutu kullanılır şimdi yukarıda kullandığımız ifadeleri yazdıralım ve türlerini kontrol edelim;
x=5 #int
y="merhaba" #str
z=3.14 #float
print(x)
print(y)
print(z)
#bu bir yorum satırıdır python bunu algılamaz notlar almak için kullanılabilir
print(type(x))
print(type(y))
print(type(z))
Bu komutu çalıştırdığımızda;
5
merhaba
3.14
<class 'int'>
<class 'str'>
<class 'float'>
şeklinde bize ifadelerimizi ve türlerini çıktı olarak vermiş oldu.
Python büyük küçük harfe duyarlıdır! Buna dikkat etmeliyiz çünkü belirlediğimiz değişkenler farklı ifadelere karşılık geliyorsa işlemlerimizde hata yapmamıza sebep olacaktır bu yüzden değişken adlarında büyük/küçük harflerine dikkat etmeliyiz. Hemen bir örnek verecek olursak;
A=5
a=10
x=17 diyelim ve bunlarla ufak bir işlem yapalım
A=5
a=10
x=17
print(A+x)
print(a+x)
çıktımız;
22
27
olup buradan değişkenlerde büyük/küçük harf duyarlılığının ne derece önemli olduğunu anlayabiliriz.
Python'da değişkenler rakam ile başlayamaz ancak harf ardından rakamla birlikte değişken tanımlanabilir.
5x=5 → Olmaz!
5x=5
print(5x)
çıktada hata verecektir;
File <unknown>:8
5x=5
^
SyntaxError: invalid decimal literal
x_=5 olarak tanımlarsak sistem bunu tanıyacaktır.
x_=5
print(x_)
çıktısı;
5
olacaktır.
Pythonda farklı değişkenler aynı ifadeye eşit olabilir.
Örneğin;
x_=5
a=5
bir=5
bunu tanıtırsak;
x_=5
a=5
bir=5
print(x_,a,bir)
ve çıktısını isteyecek olursak;
5 5 5
Şeklinde farklı değişkenler kullansak bile belirlediğimiz ifadeye eşit olabileceğini görmüş olduk.
Örnek 4: İki değişken tanımlayıp bunlarla ilgili işlemler yapınız.
a=17
b=5
print(a + b) # Toplama → 22
print(a - b) # Çıkarma → 12
print(a * b) # Çarpma → 85
print(a / b) # Bölme → 3.4
print(a // b) # Tam sayı bölme → 3
print(a % b) # Kalan (mod) → 2
print(a ** b) # Üs alma → 1419857
çıktımız;
22
12
85
3.4
3
2
1419857
şeklinde istediğimiz işlemleri sırayla verecektir.
Değişken Türünü Dönüştürme
Python'da aynı türden değişkenler üstünde işlemler yapılabilir.
x="Ali"
y="Veli"
print(x+" "+y)
Sonucumuz;
Ali Veli
Fakat farklı türden değişkenler birleştiremez. Python'da iki farklı değişken tipi birleştiremez yani int+str şeklinde bir ifade yazdırmak istersek bu hatayla sonuçlanacaktır.
x=5
y="Merhaba"
print(x+y)
Bunun bize çıktıdaki karşılığı hatamızı söylemek olacaktır;
TypeError Traceback (most recent call last)
File c:\users\yusuf\onedrive\desktop\fizik\dersler\python\biricik.py:10
0 <Error retrieving source code with stack_data see ipython/ipython#13598>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Python'da farklı türden değişkenlerle işlem yapamayacağımızı öğrendik fakat bunu çözmenin bir yolu mevcuttur. Bunun yolu eşitliğin karşı kısmındaki ifademizi istediğimiz formatın parantez içine yazarak istediğimiz türe dönüştürebiliriz. Öyleyse 3 rakamını str ve float cinsinden yazdıralım.
Kod satırına
x=str(3)
y=int(3)
z=float(3)
şeklinde yazmalıyız.
x=str(3)
y=int(3)
z=float(3)
print(x)
print(y)
print(z)
Çıktımız;
3
3
3.0
şeklinde olup istenilen ifade türlerine başarıyla dönüştürülmüştür. Başarıyla dönüştürdük peki ne işimize yarayacak hemen uygulamada gösterelim;
x="Yusuf"
y=str(23)
z="yaşında"
print(x+" "+y+" "+z)
çıktımız;
Yusuf 23 yaşında
2 farklı tür ifadeyi birleştirip bir cümle oluşturduk ve yukarıda anlattıklarımızı pekiştirmiş olduk.
Python'da Ondalık Sayıların Gösterimi
Örneğin x=3.14, y=3 ∗ 10¹⁴ şeklinde iki sayımız olsun bunları bilgisayar ortamında yazmak istersek şu şekilde olacaktır;
x=3.14
y=3e14
print(x,y)
bunu yazdırsak;
3.14 30000000000000.0
x ve y'yi açık şekilde yazmış olacağız.
Örnek 5: 3 adet ondalık sayı yazıp bu sayıların ortalamasını yazdıralım.
x=3.14
y=3e14
z=3e-14
print((x+y+z)/3)
bunu Python'a hesaplatırsak
100000000000001.05
sonucuna ulaşmış olacağız.
Kompleks Sayılar
Python'da kompleks sayıları ifade etmek için "j" ifadesini kullanırız ve bu "j" karakteri bize sanal kısmı ayırmamızda yardımcı olur.
X=2+3j
Y=1j
ise bunun yazılımı aşağıdaki şekilde olacaktır;
x=2+3j
y=1j
print(x+y)
ve bunları toplarsak reel kısımla reeli, sanal kısımla sanal kısımları toplayacaktır;
(2+4j)
bu sayıları toplayıp reel(z.real) ve imaginer(z.imag) kısmını ayrı şekilde yazdıralım.
x=2+3j
y=1j
print(x+y)
z=x+y
print(z.real)
print(z.imag)
sonucumuz;
(2+4j)
2.0
4.0
şeklinde olacaktır.
Örnek 6: Rastgele 10 tane değişken belirleyip bunların en büyüğünü en küçüğünü ve ortalamasını yazdırın.
(sum komutu listedeki sayıları toplar, len komutu listenin eleman sayısını verir.)
a1=5
a2=7
a3=9
a4=12
a5=15
a6=17
a7=23
a8=52
a9=55
a10=72
#Hepsini bir listede toplayalım
sayilar = [a1,a2,a3,a4,a5,a6,a7,a8,a9,a10]
en_kucuk=min(sayilar)
en_buyuk=max(sayilar)
ortalama = sum(sayilar) / len(sayilar)
print("En küçük:", en_kucuk)
print("En büyük:", en_buyuk)
print("Ortalama:", ortalama)
çıktımız;
En küçük: 5
En büyük: 72
Ortalama: 26.7
şeklinde işlemler hesaplanıp verilecektir.
Bu yazımızda Python'da temel işlemlerden bahsettik, bir sonraki yazımızda Pyhton'da liste işlemleri, operatörler, döngüler ve demetlerden (tuples) bahsedeceğiz. Herkese esenlikler dilerim.
