EEM-241 İleri Düzey Programlama
2024-2025 Güz Dönemi
Ders 9 - Python Programlama
local global değişkenler
a=1
def f():
print("f fonksiyonu:",a)
f()
print(a)
f fonksiyonu: 1 1
a=1
def f():
a=2
print("f fonksiyonu:",a)
f()
print(a)
f fonksiyonu: 2 1
a=1
def f():
a = a+5
print("f fonksiyonu:",a)
f()
print(a)
--------------------------------------------------------------------------- UnboundLocalError Traceback (most recent call last) Cell In[2], line 5 3 a = a+5 4 print("f fonksiyonu:",a) ----> 5 f() 6 print(a) Cell In[2], line 3, in f() 2 def f(): ----> 3 a = a+5 4 print("f fonksiyonu:",a) UnboundLocalError: cannot access local variable 'a' where it is not associated with a value
a=1
def f():
global a
a = a+5
print("f fonksiyonu:",a)
f()
print(a)
f fonksiyonu: 6 6
Dosya okuma, dosyaya yazma
- dosya okuma yazma modları: r, w, a
- bir üst klasöre geçmek için iki nokta “..” kullanılır.
f=open("dosyalar/a.txt","r")
icerik=f.read()
f.close()
print(icerik)
abc def
Eğer python programı x klasöründe, text dosyası y klasöründe ise a.txt için dosya yolu: ../y/a.txt olur.
f=open("a.txt","r", encoding="utf8")
icerik=f.read()
f.close()
print(icerik)
abc def
metin="123,234,abc"
f=open("a.txt","w", encoding="utf8")
f.write(metin)
f.close()
metin="123,234,abc"
f=open("a.txt","a", encoding="utf8")
f.write(metin)
f.close()
Nesne Yönelimli Programlama
class Kisi:
def selam(self):
print("Merhaba")
mehmet = Kisi()
mehmet.selam()
Merhaba
class Kisi:
def __init__(self, isim, yas):
self.isim = isim
self.yas = yas
def bilgi(self):
print(f"{self.isim} isimli kişinin yaşı: {self.yas}")
ogrenci=Kisi("ali",22)
ogrenci.yas, ogrenci.isim
(22, 'ali')
ogrenci.bilgi()
ali isimli kişinin yaşı: 22
class Ogrenci(Kisi):
def __init__(self, isim, yas, sinif=None):
super().__init__(isim, yas)
ogrenci1 = Ogrenci("ali",22,4)
ogrenci1.bilgi()
ali isimli kişinin yaşı: 22
class Ogrenci(Kisi):
def __init__(self, isim, yas, sinif):
super().__init__(isim, yas)
self.sinif=sinif
def sinif_bilgisi(self):
print(f"{self.isim} isimli ögrencinin sınıfı: {self.sinif} ")
ogrenci1 = Ogrenci("ali",22,4)
ogrenci1.bilgi()
ogrenci1.sinif_bilgisi()
ali isimli kişinin yaşı: 22 ali isimli ögrencinin sınıfı: 4
import math
class Sekil:
def cevre(self):
return 0
def alan(self):
return 0
class Dikdortgen(Sekil):
def __init__(self, uzunluk, genislik):
super().__init__()
self.uzunluk = uzunluk
self.genislik = genislik
def cevre(self):
return 2*(self.uzunluk+self.genislik)
def alan(self):
return self.uzunluk*self.genislik
def __str__(self):
return f"{self.genislik}x{self.uzunluk} dikdortgen"
def __repr__(self):
return f"{self.genislik}x{self.uzunluk} dikdortgen"
#less than
def __lt__(self,other):
return self.alan() < other.alan()
class Daire(Sekil):
def __init__(self, yaricap):
super().__init__()
self.yaricap = yaricap
def cevre(self):
return 2*math.pi*self.yaricap
def alan(self):
return math.pi * self.yaricap**2
def __str__(self):
return f"{self.yaricap} yaricapinda daire"
def __repr__(self):
return f"{self.yaricap} yaricapinda daire"
def __lt__(self,other):
return self.alan() < other.alan()
a=Dikdortgen(10,20)
a.cevre(),a.alan()
(60, 200)
print(a)
20x10 dikdortgen
a
20x10 dikdortgen
b=Daire(5)
b.alan()
78.53981633974483
b
5 yaricapinda daire
a>b
True
import cmath
class KarmasikSayi:
def __init__(self, sayi):
if type(sayi)==complex:
self.sayi = sayi
elif type(sayi)==tuple and len(sayi)==2:
r, theta = sayi
theta_rad = (theta/180)*cmath.pi
self.sayi=cmath.rect(r, theta)
else:
print("sayı formatın hata var")
def kutupsal(self):
r, theta_rad=cmath.polar(self.sayi)
theta = (theta_rad / cmath.pi)*180
return r, theta
def __str__(self):
return f"{self.sayi.real} + j{self.sayi.imag}"
def __repr__(self):
return f"{self.sayi.real} + j{self.sayi.imag}"
def __add__(self, other):
toplam=self.sayi+other.sayi
return KarmasikSayi(toplam)
def __mul__(self, other):
r1, theta1 = self.kutupsal()
r2, theta2 = other.kutupsal()
r=r1*r2
theta=theta1+theta2
return KarmasikSayi((r, theta))
def __truediv__(self, other):
r1, theta1 = self.kutupsal()
r2, theta2 = other.kutupsal()
r=r1/r2
theta=theta1-theta2
return KarmasikSayi((r, theta))
def __abs__(self):
return abs(self.sayi)
def __lt__(self, other):
return abs(self.sayi) < abs(other.sayi)
a = KarmasikSayi(1+2j)
b = KarmasikSayi((5,53.13))
print(a)
1.0 + j2.0
a+b
-3.809298179237886 + j3.3677174500528815
a*b
2.2841922595086497 + j10.94451761027414
a/b
0.44158298088294906 + j-0.07074228575985561
abs(a), abs(b)
(2.23606797749979, 5.0)
a>b
False
c=a+b
c.kutupsal()
(5.084513097803541, 138.52080304179407)