Dersler

View on GitHub

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

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)