├── toplama.py ├── nesneler ├── ogrenci.py ├── ogrenciler.txt ├── README.md ├── sinif.py ├── uygulama.py ├── okul.py └── okullar.py ├── modul ├── modul2.py ├── modul1.py ├── README.md └── ana.py ├── soketler ├── README.md ├── istemci.py ├── sunucu.py ├── coklu_istemci.py └── coklu_sunucu.py ├── oyunlar ├── tombala │ ├── main.py │ └── tombala │ │ └── __init__.py ├── sayitahmin.py └── adam_asmaca.py ├── islem.py ├── grafik.py ├── insan.py ├── analogsaat.py ├── hesap.py ├── web └── flask │ └── uygulama.py ├── siniflar ├── sinav.py ├── kitap.py ├── dondurma.py ├── ornek.py └── README.md ├── .gitignore ├── arayuz └── listwidget │ ├── main.py │ ├── ui_listwidget.py │ └── listwidget.ui ├── rehber.py └── borsa.py /toplama.py: -------------------------------------------------------------------------------- 1 | 2 | def topla(x,y): 3 | return x + y 4 | -------------------------------------------------------------------------------- /nesneler/ogrenci.py: -------------------------------------------------------------------------------- 1 | class Ogrenci: 2 | def __init__(self, adi, numara): 3 | self.adi = adi 4 | self.numara = numara 5 | -------------------------------------------------------------------------------- /modul/modul2.py: -------------------------------------------------------------------------------- 1 | 2 | def carpma(a,b): 3 | return a*b 4 | 5 | if __name__ == "__main__": 6 | import sys 7 | print(carpma(int(sys.argv[1]),int(sys.argv[2]))) 8 | -------------------------------------------------------------------------------- /modul/modul1.py: -------------------------------------------------------------------------------- 1 | 2 | def toplama(a,b): 3 | return a+b 4 | 5 | if __name__ == "__main__": 6 | import sys 7 | print(toplama(int(sys.argv[1]),int(sys.argv[2]))) 8 | -------------------------------------------------------------------------------- /soketler/README.md: -------------------------------------------------------------------------------- 1 | Istemci ve sunucu, basit echo sunucusu olarak calisir. 2 | 3 | Coklu istemci ve coklu sunucu, birden fazla istemcinin ayni nda baglanip kullanabildigi bir yapi sunar. -------------------------------------------------------------------------------- /oyunlar/tombala/main.py: -------------------------------------------------------------------------------- 1 | from tombala import Kart 2 | from random import choice 3 | 4 | 5 | k = Kart() 6 | 7 | sayilar = range(100) 8 | 9 | for i in range(300): 10 | sayi = choice(sayilar) 11 | print(sayi) 12 | print(k.sayicek(sayi)) 13 | 14 | 15 | -------------------------------------------------------------------------------- /nesneler/ogrenciler.txt: -------------------------------------------------------------------------------- 1 | #Sira No,ogrno,Adi soyadi,Sinifi, Okulu 2 | 1,1211,ilker manap,1E,Mevlana Ilkokulu 3 | 2,576,Ahmet Tas,10A,Mustafa Kemal Lisesi 4 | 3,9856,Mehmet Tas,3D,Mustafa Kemal Lisesi 5 | 4,6533,Elif Mert,10A,Halide Edip Lisesi 6 | 5,4532,Ayse test,11A,Halide Edip Lisesi 7 | 6,1212,Mehmet Ahmet,1E,Mevlana Ilkokulu 8 | -------------------------------------------------------------------------------- /soketler/istemci.py: -------------------------------------------------------------------------------- 1 | import socket 2 | 3 | HOST = '127.0.0.1' # The server's hostname or IP address 4 | PORT = 12345 # The port used by the server 5 | 6 | with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as myclientsocket: 7 | myclientsocket.connect((HOST, PORT)) 8 | myclientsocket.sendall(b'Hello, world') 9 | data = myclientsocket.recv(1024) 10 | 11 | print('Received', repr(data)) -------------------------------------------------------------------------------- /islem.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | class Islem: 4 | def __init__(self, x,y ): 5 | self.x = x 6 | self.y = y 7 | 8 | def topla(self): 9 | return (self.x + self.y) 10 | 11 | def cikar(self): 12 | return (self.x - self.y) 13 | 14 | def carp(self): 15 | return (self.x * self.y) 16 | 17 | def bol(self): 18 | if self.y != 0: 19 | return (self.x / self.y) 20 | else: 21 | return None 22 | -------------------------------------------------------------------------------- /grafik.py: -------------------------------------------------------------------------------- 1 | 2 | class Nokta: 3 | def __init__(self, x,y): 4 | self.x = x 5 | self.y = y 6 | 7 | class Daire(Nokta): 8 | def __init__(self, x,y, yaricap): 9 | Nokta.__init__(self, x,y) 10 | self.yaricap = yaricap 11 | 12 | 13 | class Cizgi(Nokta): 14 | def __init__(self, x,y, x1,y1): 15 | Nokta.__init__(self, x,y) 16 | self.bitis = Nokta(x1,y1) 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /soketler/sunucu.py: -------------------------------------------------------------------------------- 1 | import socket 2 | 3 | HOST = '127.0.0.1' 4 | PORT = 12345 5 | 6 | with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as mysocket: 7 | mysocket.bind((HOST, PORT)) 8 | mysocket.listen() 9 | conn, addr = mysocket.accept() 10 | with conn: 11 | print(addr, ' den baglanti') 12 | while True: 13 | data = conn.recv(1024) 14 | if not data: 15 | break 16 | conn.sendall(data) 17 | -------------------------------------------------------------------------------- /nesneler/README.md: -------------------------------------------------------------------------------- 1 | # Açıklamalar 2 | 3 | Genelde anlaması pek kolay olmayan nesneleri kullanarak, basit bir örnek yapacağız. 4 | Burada hedeflenen, bir il içinde bulunan okulların ve öğrencilerinin tanımlanabileceği 5 | bir nesneler grubunu olabildiğince basit tanımlayabilmektir. 6 | 7 | Bu amaçla, uygulamayı oluşturan nesneleri ve uygulamanın kendisini biraz daha detaylı şekilde 8 | anlatmaya çalışacağım. 9 | 10 | Bu belge eklemelerle genişleyecektir. 11 | 12 | Calistirmak icin 13 | 14 | python3 uygulama.py ogrenciler.txt -------------------------------------------------------------------------------- /modul/README.md: -------------------------------------------------------------------------------- 1 | Modüller 2 | ======== 3 | 4 | __name__ Değişkeni 5 | ------------------ 6 | 7 | Çoğu python uygulamasında, en altta aşağıdakine benzer bir blok görürsünüz: 8 | 9 | if __name__ == '__main__': 10 | ... 11 | 12 | Bir python uygulamasını çalıştırdığınızda, adını vererek çağırdığınız uygulama için __name__ değişkeni __main__ değerini alır. 13 | 14 | Eğer uygulamanız başka bir python dosyasını da import ediyorsa, örneğin modul.py olsun; modul.py icinde __name__ değişkeni 'modul' değerini alacaktır. 15 | 16 | -------------------------------------------------------------------------------- /nesneler/sinif.py: -------------------------------------------------------------------------------- 1 | class Sinif: 2 | def __init__(self, sinifadi): 3 | self.adi = sinifadi 4 | self.ogrenciler = {} 5 | 6 | def ogrenci_ekle(self, ogrenci): 7 | if ogrenci.numara not in self.ogrenciler.keys(): 8 | self.ogrenciler[ogrenci.numara] = ogrenci 9 | 10 | def rapor(self): 11 | print( "-" * 50) 12 | print( "%s Sinifi Ogrenci Listesi " % self.adi) 13 | for ogrno, ogr in sorted(self.ogrenciler.items()): 14 | print( "%7s %s" % (ogrno, ogr.adi)) 15 | 16 | 17 | -------------------------------------------------------------------------------- /insan.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | class Insan: 4 | def __init__(self, adi, cinsiyeti, dogumyili): 5 | self.adi = adi 6 | self.cins = cinsiyeti 7 | self.dogumyili = dogumyili 8 | 9 | def rapor(self): 10 | print("adi :", self.adi) 11 | print("dogum yili :", self.dogumyili) 12 | 13 | class Calisan(Insan): 14 | def __init__(self, ad, cins, dy, maas): 15 | Insan.__init__(self, ad, cins, dy) 16 | self.maas = maas 17 | 18 | def rapor(self): 19 | Insan.rapor(self) 20 | print("maasi :", self.maas) 21 | 22 | 23 | a = Insan("ilker","e",1972) 24 | 25 | b = Calisan("ilker","e",1972, 100) 26 | 27 | a.rapor() 28 | b.rapor() 29 | 30 | 31 | -------------------------------------------------------------------------------- /nesneler/uygulama.py: -------------------------------------------------------------------------------- 1 | from okul import Okul 2 | from sinif import Sinif 3 | from ogrenci import Ogrenci 4 | from okullar import Okullar 5 | 6 | if __name__ == "__main__": 7 | import sys, os 8 | yenimahalle = Okullar("Yenimahalle") 9 | fname = sys.argv[1] 10 | if os.path.isfile(fname): 11 | for satir in open(fname, "r"): 12 | if satir.strip().startswith("#"): 13 | pass 14 | else: 15 | sira, ogrno, adi, sinifadi,okulu = satir.strip().split(",") 16 | ogr = Ogrenci(adi, ogrno) 17 | yenimahalle.ogrenci_ekle(okulu, sinifadi, ogr) 18 | 19 | yenimahalle.rapor() 20 | 21 | # 1,1211,ilker manap,1E,Mevlana Ilkokulu 22 | -------------------------------------------------------------------------------- /modul/ana.py: -------------------------------------------------------------------------------- 1 | from modul1 import toplama 2 | from modul2 import carpma 3 | import sys 4 | 5 | yardim = """ 6 | toplama icin 7 | python3 ana.py toplama 3 5 8 | 9 | carpma icin 10 | python3 ana.py carpma 3 5 11 | 12 | """ 13 | if __name__ == "__main__": 14 | argc = len(sys.argv) 15 | if argc != 4: 16 | print("Parametre sayisi yanlis.") 17 | print(yardim) 18 | else: 19 | sayi1 = float(sys.argv[2]) 20 | sayi2 = float(sys.argv[3]) 21 | islem = sys.argv[1] 22 | if islem == "toplama": 23 | print(toplama(sayi1, sayi2)) 24 | elif islem == "carpma": 25 | print(carpma(sayi1, sayi2)) 26 | else: 27 | print("Hatali islem secilmis : %s" % islem) 28 | print(yardim) 29 | -------------------------------------------------------------------------------- /analogsaat.py: -------------------------------------------------------------------------------- 1 | __author__ = 'ilker' 2 | 3 | import math, time 4 | 5 | 6 | def radian(ang): 7 | return ang * math.pi / 180.0 8 | 9 | 10 | def analog_saat(r=100): 11 | t = time.localtime() 12 | h = t.tm_hour 13 | h = h % 12 14 | m = t.tm_min 15 | s = t.tm_sec 16 | 17 | secangle = radian(s * 6) 18 | sx = r * math.sin(secangle) 19 | sy = r * math.cos(secangle) 20 | 21 | minangle = radian(m * 6) 22 | mx = r * math.sin(minangle) 23 | my = r * math.cos(minangle) 24 | 25 | hangle = radian((h * 30) + ((m / 60) * 30)) 26 | hx = r * math.sin(hangle) 27 | hy = r * math.cos(hangle) 28 | return ((hx, hy), (mx, my), (sx, sy)) 29 | 30 | 31 | while 1: 32 | h, m, s = analog_saat() 33 | print(h[0], h[1], m[0], m[1], s[0], s[1]) 34 | time.sleep(1) 35 | -------------------------------------------------------------------------------- /nesneler/okul.py: -------------------------------------------------------------------------------- 1 | from ogrenci import Ogrenci 2 | from sinif import Sinif 3 | 4 | class Okul: 5 | def __init__(self, okuladi): 6 | self.adi = okuladi 7 | self.siniflar = {} 8 | 9 | def sinif_ekle(self, sinif): 10 | if sinif.adi not in self.siniflar.keys(): 11 | self.siniflar[sinif.adi] = sinif 12 | 13 | def ogrenci_ekle(self, sinif, ogrenci): 14 | self.sinif_ekle(sinif) 15 | self.siniflar[sinif.adi].ogrenci_ekle(ogrenci) 16 | 17 | def rapor(self, sinifadi=None): 18 | print( "*" * 50) 19 | print( " %s Okulu Siniflar Raporu" % self.adi) 20 | if sinifadi is None: 21 | for sinif in self.siniflar.values(): 22 | sinif.rapor() 23 | print( "") 24 | 25 | else: 26 | if sinifadi in self.siniflar.keys(): 27 | self.siniflar[sinifadi].rapor() 28 | else: 29 | print( "Hatali sinif adi") 30 | -------------------------------------------------------------------------------- /nesneler/okullar.py: -------------------------------------------------------------------------------- 1 | from okul import Okul 2 | from sinif import Sinif 3 | from ogrenci import Ogrenci 4 | 5 | 6 | class Okullar: 7 | def __init__(self,ilcesi): 8 | self.ilce = ilcesi 9 | self.okullar = {} 10 | 11 | def okul_ekle(self, okul): 12 | if okul.adi not in self.okullar.keys(): 13 | self.okullar[okul.adi] = okul 14 | 15 | 16 | def sinif_ekle(self, okuladi, sinif): 17 | self.okul_ekle(Okul(okuladi)) 18 | self.okullar[okuladi].sinif_ekle(sinif) 19 | 20 | def ogrenci_ekle(self, okuladi, sinifadi, ogrenci): 21 | self.sinif_ekle(okuladi, Sinif(sinifadi)) 22 | self.okullar[okuladi].siniflar[sinifadi].ogrenci_ekle(ogrenci) 23 | 24 | def rapor(self, okuladi=None): 25 | print( "*" * 50) 26 | print( " %s Ilcesi Okullar Raporu" % self.ilce) 27 | if okuladi is None: 28 | for okulu in self.okullar.values(): 29 | okulu.rapor() 30 | 31 | else: 32 | if okuladi in self.okullar.keys(): 33 | self.okullar[okuladi].rapor() 34 | else: 35 | print( "Hatali okul adi, ekli okullar asagida:") 36 | for k in self.okullar.keys(): 37 | print( k) 38 | -------------------------------------------------------------------------------- /hesap.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Yukaridaki iki satir, kod icinde turkce harfler kullandigimiz 6 | zaman problem cikmamasini saglar. 7 | """ 8 | 9 | import sys 10 | 11 | """ 12 | sys modulunu, programa verilen parametreleri okuyabilmek icin kullanacagiz 13 | """ 14 | 15 | 16 | import toplama 17 | 18 | """ 19 | toplama modulu, ayni dizinde bulunan toplama.py dosyasindan kullanilacak 20 | import toplama dedigimizde, toplama.py icindeki fonksiyonlara 21 | 22 | toplama.topla(3,5) 23 | 24 | gibi erisiriz.. 25 | 26 | eger 27 | 28 | from toplama import topla 29 | 30 | dersek o zaman 31 | topla(3,5) 32 | diyebiliriz. 33 | 34 | """ 35 | 36 | sayi1 = float(sys.argv[1]) 37 | sayi2 = float(sys.argv[2]) 38 | 39 | sonuc = toplama.topla(sayi1,sayi2) 40 | 41 | print(sonuc) 42 | 43 | 44 | from toplama import topla 45 | 46 | sonuc2 = topla(sayi1, sayi2) 47 | print(sonuc2) 48 | 49 | 50 | """ 51 | simdi, islem.py icinden nesne kullanacagiz. 52 | """ 53 | 54 | print("Asagisi islem.py icindeki Islem nesnesini kullanarak hesap yapacak") 55 | 56 | from islem import Islem 57 | 58 | h = Islem(sayi1, sayi2) 59 | 60 | print("toplama %0.2f" % h.topla()) 61 | print("cikarma %0.2f" % h.cikar()) 62 | print("carpma %0.2f" % h.carp()) 63 | print("bolme %0.2f" % h.bol()) 64 | -------------------------------------------------------------------------------- /soketler/coklu_istemci.py: -------------------------------------------------------------------------------- 1 | import selectors 2 | import socket 3 | import types 4 | 5 | if __name__ == "__main__": 6 | 7 | import selectors 8 | sel = selectors.DefaultSelector() 9 | # ... 10 | lsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 11 | sel.register(lsock, selectors.EVENT_READ, data=None) 12 | 13 | 14 | 15 | 16 | def start_connections(host, port, num_conns): 17 | messages = [b'Message 1 from client.', b'Message 2 from client.'] 18 | 19 | server_addr = (host, port) 20 | for i in range(0, num_conns): 21 | connid = i + 1 22 | print('starting connection', connid, 'to', server_addr) 23 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 24 | sock.setblocking(False) 25 | sock.connect_ex(server_addr) 26 | events = selectors.EVENT_READ | selectors.EVENT_WRITE 27 | data = types.SimpleNamespace(connid=connid, 28 | msg_total=sum(len(m) for m in messages), 29 | recv_total=0, 30 | messages=list(messages), 31 | outb=b'') 32 | sel.register(sock, events, data=data) 33 | 34 | start_connections("127.0.0.1",10500, 2) -------------------------------------------------------------------------------- /web/flask/uygulama.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, jsonify, request 2 | import json 3 | 4 | from sqlalchemy import Column,ForeignKey, Boolean, Integer, String, DateTime 5 | from sqlalchemy.ext.declarative import declarative_base 6 | from sqlalchemy import create_engine 7 | from sqlalchemy.orm import sessionmaker 8 | 9 | Base = declarative_base() 10 | 11 | class Personel(Base): 12 | __tablename__ = "personel" 13 | tcno = Column(Integer, primary_key=True) 14 | adi = Column(String(30)) 15 | soyadi = Column(String(30)) 16 | 17 | engine = create_engine('postgresql://postgres:system@localhost/deneme') 18 | session = sessionmaker() 19 | session.configure(bind=engine) 20 | s = session() 21 | 22 | app = Flask(__name__) 23 | 24 | 25 | def db_to_json(rows): 26 | temp = {} 27 | return rows[0] 28 | 29 | 30 | @app.route('/') 31 | def hello_world(): 32 | return 'Hello World!' 33 | 34 | 35 | @app.route('/personel') 36 | @app.route('/personel/') 37 | def personel(tcno = -1): 38 | if tcno == -1: 39 | liste = s.query(Personel).all() 40 | else: 41 | liste = s.query(Personel).filter(Personel.tcno == tcno).all() 42 | temp = {} 43 | for r in liste: 44 | temp[r.tcno] = {'adi':r.adi, 'soyadi':r.soyadi} 45 | 46 | return jsonify(temp) 47 | 48 | 49 | if __name__ == '__main__': 50 | app.run(host="0.0.0.0", debug=True) 51 | -------------------------------------------------------------------------------- /oyunlar/sayitahmin.py: -------------------------------------------------------------------------------- 1 | 2 | class Takim: 3 | def __init__(self, adi, max_yanlis=3): 4 | self.adi = adi 5 | self.puan = 0 6 | self.sayi = None 7 | self.yanlis_tahmin = 0 8 | self.sira = False 9 | self.max_yanlis = max_yanlis 10 | 11 | def tahmin(self, takim, sayi): 12 | #Karsi takimin sayisi tahmin ediliyor 13 | if takim.sayi == sayi: 14 | self.puan += 10 15 | 16 | else: 17 | self.yanlis_tahmin += 1 18 | if self.yanlis_tahmin == self.max_yanlis: 19 | self.sira = False 20 | 21 | def rapor(self): 22 | print("%s\t%d\t%d" % (self.adi,self.puan, self.yanlis_tahmin)) 23 | 24 | class Oyun: 25 | def __init__(self, adi): 26 | self.adi = adi 27 | self.takimlar = {} 28 | 29 | def takim_ekle(self, takim): 30 | self.takimlar[takim.adi] = takim 31 | 32 | def rapor(self): 33 | print("Adi\tPuan\tYanlis Tahmin\n-------------------------------------------") 34 | for adi, takim in self.takimlar.items(): 35 | takim.rapor() 36 | 37 | def oyna(self): 38 | #to be implemented 39 | pass 40 | 41 | if __name__ == "__main__": 42 | oyun = Oyun("Bizim Oyun") 43 | oyun.takim_ekle(Takim("Kirmizi", 123)) 44 | oyun.takim_ekle(Takim("Mavi", 351)) 45 | oyun.rapor() 46 | 47 | -------------------------------------------------------------------------------- /oyunlar/tombala/tombala/__init__.py: -------------------------------------------------------------------------------- 1 | from random import choice 2 | 3 | class Kart: 4 | def __init__(self): 5 | dizi = range(1,100) 6 | self.sayilar = [] 7 | self.cinkolar = {1:[], 2:[], 3:[]} 8 | for cinko in range(15): 9 | sayi = choice(dizi) 10 | if sayi not in self.sayilar: 11 | self.sayilar.append(sayi) 12 | else: 13 | found = False 14 | while not found: 15 | sayi = choice(dizi) 16 | if sayi not in self.sayilar: 17 | self.sayilar.append(sayi) 18 | found = True 19 | 20 | 21 | i = 0 22 | for sayi in self.sayilar: 23 | cinko = int((i / 5)) + 1 24 | self.cinkolar[cinko].append(sayi) 25 | i+=1 26 | 27 | def sayicek(self, cekilen): 28 | for k, cinko in self.cinkolar.items(): 29 | if cekilen in cinko: 30 | self.cinkolar[k].remove(cekilen) 31 | 32 | print(self.cinkolar) 33 | if len(self.cinkolar[1]) == 0: 34 | if len(self.cinkolar[2]) == 0: 35 | if len(self.cinkolar[3]) == 0: 36 | return "TOMBALA" 37 | else: 38 | return "Ikinci cinko" 39 | else: 40 | return "Birinci Cinko" 41 | else: 42 | return "Devam" 43 | 44 | -------------------------------------------------------------------------------- /siniflar/sinav.py: -------------------------------------------------------------------------------- 1 | 2 | class Soru: 3 | def __init__(self, soru_metni, cevap, max_deneme=3): 4 | self.metin = soru_metni 5 | self.cevap = cevap.lower() 6 | self.max_deneme = max_deneme 7 | self.yanlis = 0 8 | 9 | def sor(self): 10 | for i in range(self.max_deneme): 11 | cevap = input(self.metin + " :") 12 | if cevap.lower() == self.cevap: 13 | return True 14 | print("Yanlis cevap, %d hakkin kaldi" % (self.max_deneme - i -1)) 15 | self.yanlis = i+1 16 | return False 17 | 18 | def rapor(self): 19 | durum = "bildiniz" 20 | if self.yanlis == self.max_deneme: 21 | durum = "bilemediniz" 22 | print(self.metin, " sorusunu %d denemede %s." % (self.yanlis, durum)) 23 | 24 | class Sinav: 25 | def __init__(self, baslik): 26 | self.baslik = baslik 27 | self.sorular = {} 28 | 29 | def soru_ekle(self, metin, cevap): 30 | son_soru = len(self.sorular.keys()) 31 | self.sorular[son_soru +1 ] = Soru(metin, cevap) 32 | 33 | def sinav(self): 34 | print(self.baslik, " sinavi basladi") 35 | for i in sorted(self.sorular.keys()): 36 | self.sorular[i].sor() 37 | 38 | for i in sorted(self.sorular.keys()): 39 | self.sorular[i].rapor() 40 | 41 | 42 | 43 | if __name__ == "__main__": 44 | sinav = Sinav("Baskentler") 45 | sinav.soru_ekle("Turkiye","Ankara") 46 | sinav.soru_ekle("Bulgaristan","Sofya") 47 | sinav.soru_ekle("Yunanistan","Atina") 48 | 49 | sinav.sinav() 50 | -------------------------------------------------------------------------------- /siniflar/kitap.py: -------------------------------------------------------------------------------- 1 | 2 | class Kitap: 3 | def __init__(self, isbn, yazar, adi, yayinevi): 4 | self.isbn = isbn 5 | self.yazar = yazar 6 | self.adi = adi 7 | self.yayinevi = yayinevi 8 | self.veri = {"isbn":isbn, "yazar":yazar, "adi":adi, "yayinevi":yayinevi} 9 | 10 | def __str__(self): 11 | return "%s\t%s\t%s\t%s" % (self.isbn, self.yazar, self. adi, self.yayinevi) 12 | 13 | def arama(self, anahtar, deger): 14 | if anahtar not in self.veri.keys(): 15 | return False 16 | else: 17 | if self.veri[anahtar] == deger: 18 | return True 19 | return False 20 | return False 21 | 22 | class Kitaplik: 23 | def __init__(self, adi): 24 | self.adi = adi 25 | self.kitaplar = {} 26 | 27 | def arama(self, anahtar, deger): 28 | sonuc = [] 29 | for k in self.kitaplar.values(): 30 | 31 | if k.arama(anahtar, deger): 32 | sonuc.append(k) 33 | return sonuc 34 | 35 | def ekle(self, k): 36 | if k.isbn not in self.kitaplar.keys(): 37 | self.kitaplar[k.isbn] = k 38 | 39 | if __name__ == "__main__": 40 | k = Kitaplik("Kutuphanem") 41 | k.ekle(Kitap("1234","Maksim Gorki", "Ekmegimi Kazanirken", "Is Bankasi")) 42 | k.ekle(Kitap("2345","Tolstoy", "Itiraflarim", "Antik")) 43 | k.ekle(Kitap("3456","Ahmet Izzet Pasa", "Feryadim", "Timas")) 44 | k.ekle(Kitap("3556","Maksim Gorki", "Benim Universitelerim", "Roman Yayinlari")) 45 | 46 | sonuc = k.arama("yazar", "Maksim Gorki") 47 | 48 | for kitap in sonuc: 49 | print(kitap) 50 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | *~ 6 | 7 | # C extensions 8 | *.so 9 | 10 | # Distribution / packaging 11 | .Python 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .coverage 43 | .coverage.* 44 | .cache 45 | nosetests.xml 46 | coverage.xml 47 | *.cover 48 | .hypothesis/ 49 | .pytest_cache/ 50 | 51 | # Translations 52 | *.mo 53 | *.pot 54 | 55 | # Django stuff: 56 | *.log 57 | local_settings.py 58 | db.sqlite3 59 | 60 | # Flask stuff: 61 | instance/ 62 | .webassets-cache 63 | 64 | # Scrapy stuff: 65 | .scrapy 66 | 67 | # Sphinx documentation 68 | docs/_build/ 69 | 70 | # PyBuilder 71 | target/ 72 | 73 | # Jupyter Notebook 74 | .ipynb_checkpoints 75 | 76 | # pyenv 77 | .python-version 78 | 79 | # celery beat schedule file 80 | celerybeat-schedule 81 | 82 | # SageMath parsed files 83 | *.sage.py 84 | 85 | # Environments 86 | .env 87 | .venv 88 | env/ 89 | venv/ 90 | ENV/ 91 | env.bak/ 92 | venv.bak/ 93 | 94 | # Spyder project settings 95 | .spyderproject 96 | .spyproject 97 | 98 | # Rope project settings 99 | .ropeproject 100 | 101 | # mkdocs documentation 102 | /site 103 | 104 | # mypy 105 | .mypy_cache/ 106 | -------------------------------------------------------------------------------- /arayuz/listwidget/main.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | from PyQt5.QtWidgets import QApplication, QDialog 4 | from ui_listwidget import Ui_ornek 5 | 6 | class MainWindow(QDialog, Ui_ornek): 7 | def __init__(self, app=None): 8 | super(MainWindow, self).__init__() 9 | self.app = app 10 | self.secili = None 11 | self.setupUi(self) 12 | self.show() 13 | 14 | def btn_sil_basildi(self): 15 | templiste = [] 16 | for i in range(self.liste.count()): 17 | if i == self.secili: 18 | pass 19 | else: 20 | templiste.append(self.liste.item(i).text()) 21 | self.liste.clear() 22 | self.edit_eleman.setText("") 23 | for eleman in templiste: 24 | self.liste.addItem(eleman) 25 | 26 | def list_eleman_tiklandi(self): 27 | self.secili = self.liste.currentRow() 28 | self.edit_eleman.setText(self.liste.item(self.secili).text()) 29 | 30 | 31 | def btn_ekle_basildi(self): 32 | metin = self.edit_eleman.text().strip() 33 | if metin != "": 34 | durum = self.eleman_kontrol(metin) 35 | if durum == False: 36 | print(metin, " ekleyecegiz") 37 | self.liste.addItem(metin) 38 | else: 39 | print(metin, " zaten eklenmis") 40 | 41 | def eleman_kontrol(self, metin): 42 | eleman_sayisi = self.liste.count() 43 | if eleman_sayisi > 0: 44 | for ndx in range(eleman_sayisi): 45 | item = self.liste.item(ndx) 46 | if item.text() == metin: 47 | return True 48 | return False 49 | 50 | 51 | if __name__ == "__main__": 52 | app = QApplication(sys.argv) 53 | mainWin = MainWindow(app) 54 | ret = app.exec_() 55 | app.exit() 56 | sys.exit(ret) 57 | -------------------------------------------------------------------------------- /rehber.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | class Kisi: 4 | def __init__(self,tcno, adi,soyadi,sehir, meslek, tel, adres): 5 | self.tcno = tcno 6 | self.adi = adi 7 | self.soyadi = soyadi 8 | self.sehir = sehir 9 | self.meslek = meslek 10 | self.tel = tel 11 | self.adres = adres 12 | 13 | 14 | def rapor(self): 15 | print("Adi :", self.adi) 16 | print("Soyadi :", self.soyadi) 17 | print("TC No :", self.tcno) 18 | print("Sehir :", self.sehir) 19 | print("Meslek :", self.meslek) 20 | print("Telefon:", self.tel) 21 | print("Adres :", self.adres) 22 | 23 | def csv(self, ayirac = ";"): 24 | a = ayirac 25 | b = self.adi + a 26 | b += self.soyadi + a 27 | b += self.tcno + a 28 | b += self.sehir + a 29 | b += self.meslek + a 30 | b += self.tel + a 31 | b += self.adres 32 | return b 33 | 34 | class Rehber: 35 | def __init__(self, adi): 36 | self.adi = adi 37 | self.kisiler = {} 38 | 39 | def ekle(self, kisi): 40 | self.kisiler[kisi.tcno] = kisi 41 | 42 | 43 | def rapor(self): 44 | print("-" * 50) 45 | print(self.adi, " Rehberi") 46 | print("-" * 50) 47 | for tcno, kisi in self.kisiler.items(): 48 | kisi.rapor() 49 | print("-" * 50) 50 | 51 | def csv(self): 52 | print("adi;soyadi;tcno;sehir;meslek;tel;adres") 53 | for tcno, kisi in self.kisiler.items(): 54 | print(kisi.csv()) 55 | 56 | 57 | 58 | if __name__ == "__main__": 59 | r = Rehber("Ev Telefon") 60 | a = Kisi("1", "Nurullah", "Caliskan", "Mugla","Ogrenci","0000","Mugla/Milas") 61 | b = Kisi("2", "Abdullah", "Caliskan", "Mugla","Ogrenci","0100","Mugla/Milas") 62 | c = Kisi("3", "Ilker", "Manap", "Stokholm","Muhendis","00230","Stokholm/Alvsjo") 63 | r.ekle(a) 64 | r.ekle(b) 65 | r.ekle(c) 66 | r.csv() 67 | r.rapor() 68 | -------------------------------------------------------------------------------- /arayuz/listwidget/ui_listwidget.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'listwidget.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.15.7 6 | # 7 | # WARNING: Any manual changes made to this file will be lost when pyuic5 is 8 | # run again. Do not edit this file unless you know what you are doing. 9 | 10 | 11 | from PyQt5 import QtCore, QtGui, QtWidgets 12 | 13 | 14 | class Ui_ornek(object): 15 | def setupUi(self, ornek): 16 | ornek.setObjectName("ornek") 17 | ornek.resize(509, 371) 18 | self.liste = QtWidgets.QListWidget(ornek) 19 | self.liste.setGeometry(QtCore.QRect(10, 10, 481, 241)) 20 | self.liste.setObjectName("liste") 21 | self.btn_ekle = QtWidgets.QPushButton(ornek) 22 | self.btn_ekle.setGeometry(QtCore.QRect(410, 320, 80, 25)) 23 | self.btn_ekle.setObjectName("btn_ekle") 24 | self.edit_eleman = QtWidgets.QLineEdit(ornek) 25 | self.edit_eleman.setGeometry(QtCore.QRect(130, 320, 251, 25)) 26 | self.edit_eleman.setObjectName("edit_eleman") 27 | self.btn_sil = QtWidgets.QPushButton(ornek) 28 | self.btn_sil.setGeometry(QtCore.QRect(20, 320, 80, 25)) 29 | self.btn_sil.setObjectName("btn_sil") 30 | 31 | self.retranslateUi(ornek) 32 | self.btn_sil.clicked.connect(ornek.btn_sil_basildi) # type: ignore 33 | self.btn_ekle.clicked.connect(ornek.btn_ekle_basildi) # type: ignore 34 | self.liste.itemActivated['QListWidgetItem*'].connect(ornek.list_eleman_tiklandi) # type: ignore 35 | self.liste.clicked['QModelIndex'].connect(ornek.list_eleman_tiklandi) # type: ignore 36 | QtCore.QMetaObject.connectSlotsByName(ornek) 37 | 38 | def retranslateUi(self, ornek): 39 | _translate = QtCore.QCoreApplication.translate 40 | ornek.setWindowTitle(_translate("ornek", "Dialog")) 41 | self.btn_ekle.setText(_translate("ornek", "Ekle")) 42 | self.btn_sil.setText(_translate("ornek", "Sil")) 43 | -------------------------------------------------------------------------------- /oyunlar/adam_asmaca.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | 4 | 5 | class Kelime: 6 | def __init__(self, kelime): 7 | self.kelime = kelime 8 | self.bulunan = [] 9 | 10 | def kontrol(self): 11 | for harf in self.kelime: 12 | if harf not in self.bulunan: 13 | return False 14 | return True 15 | 16 | def tahmin(self, harf): 17 | harf = harf[0] 18 | if harf not in self.bulunan: 19 | if harf in self.kelime: 20 | self.bulunan.append(harf) 21 | return True 22 | return False 23 | else: 24 | print("%s zaten soylenmis" % harf) 25 | return True 26 | 27 | def __str__(self): 28 | s = "" 29 | for harf in self.kelime: 30 | if harf in self.bulunan: 31 | s += harf 32 | else: 33 | s += "_" 34 | return s 35 | 36 | class Oyuncu: 37 | def __init__(self, adi, max_hata): 38 | self.adi = adi 39 | self.hata = 0 40 | self.max_hata = max_hata 41 | 42 | def cevap(self, durumu): 43 | if durumu == False: 44 | self.hata += 1 45 | if self.hata == self.max_hata: 46 | return False 47 | return True 48 | 49 | def kalan(self): 50 | return self.max_hata - self.hata 51 | 52 | class Oyun: 53 | def __init__(self, oyuncu, kelime): 54 | self.oyuncu = oyuncu 55 | self.kelime = kelime 56 | self.bitti = False 57 | 58 | def sor(self, harf): 59 | if self.oyuncu.cevap(self.kelime.tahmin(harf)) == False: 60 | print("Kaybettin") 61 | self.bitti = True 62 | else: 63 | print(self.oyuncu.kalan(), " hakkin kaldi") 64 | print(str(self.kelime)) 65 | if self.kelime.kontrol() == True: 66 | print("Bildin") 67 | sys.exit() 68 | 69 | if __name__ == "__main__": 70 | oyuncu = Oyuncu("ilker", 5) 71 | kelime = Kelime("Deneme") 72 | oyun = Oyun(oyuncu, kelime) 73 | while not oyun.bitti: 74 | harf = input("Harf gir ") 75 | oyun.sor(harf) 76 | -------------------------------------------------------------------------------- /soketler/coklu_sunucu.py: -------------------------------------------------------------------------------- 1 | import selectors 2 | import socket 3 | import types 4 | 5 | class Message: 6 | def __init__(self, host, port, msg): 7 | self.host = host 8 | self.port = port 9 | self.msg = msg 10 | 11 | def __str__(self): 12 | return f"{self.host}:{self.port}" 13 | 14 | 15 | class MYSocketServer: 16 | def __init__(self, host, port): 17 | self.queue = [] 18 | self.myselector = selectors.DefaultSelector() 19 | lsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 20 | lsock.bind((host, port)) 21 | lsock.listen() 22 | print('listening on', (host, port)) 23 | lsock.setblocking(False) 24 | self.myselector.register(lsock, selectors.EVENT_READ, data=None) 25 | 26 | while True: 27 | events = self.myselector.select(timeout=None) 28 | for key, mask in events: 29 | if key.data is None: 30 | self.accept_wrapper(key.fileobj) 31 | else: 32 | self.service_connection(key, mask) 33 | 34 | def accept_wrapper(self, sock): 35 | conn, addr = sock.accept() # Should be ready to read 36 | print('accepted connection from', addr) 37 | conn.setblocking(False) 38 | data = types.SimpleNamespace(addr=addr, inb=b'', outb=b'') 39 | events = selectors.EVENT_READ | selectors.EVENT_WRITE 40 | self.myselector.register(conn, events, data=data) 41 | 42 | 43 | def service_connection(self, key, mask): 44 | sock = key.fileobj 45 | data = key.data 46 | if mask & selectors.EVENT_READ: 47 | recv_data = sock.recv(1024) # Should be ready to read 48 | if recv_data: 49 | print('received', repr(recv_data), 'from connection', data.connid) 50 | data.recv_total += len(recv_data) 51 | if not recv_data or data.recv_total == data.msg_total: 52 | print('closing connection', data.connid) 53 | self.myselector.unregister(sock) 54 | sock.close() 55 | if mask & selectors.EVENT_WRITE: 56 | print(data) 57 | if not data.outb and data.messages: 58 | data.outb = data.messages.pop(0) 59 | if data.outb: 60 | print('sending', repr(data.outb), 'to connection', data.connid) 61 | sent = sock.send(data.outb) # Should be ready to write 62 | data.outb = data.outb[sent:] 63 | 64 | 65 | if __name__ == "__main__": 66 | s = MYSocketServer("127.0.0.1", 10500) -------------------------------------------------------------------------------- /siniflar/dondurma.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | class Dondurma: 4 | def __init__(self, tur, topsayisi = 100, fiyat=5, maliyet=2): 5 | self.tur = tur 6 | self.miktar = topsayisi # 100 top 7 | self.fiyat = fiyat 8 | self.maliyet = maliyet 9 | self.kar = fiyat - maliyet 10 | 11 | def satis(self, topsayisi): 12 | if self.miktar > topsayisi: 13 | self.miktar -= topsayisi 14 | print("BASARILI %s %d top satildi, %d top kaldi" % (self.tur, topsayisi, self.miktar)) 15 | return True 16 | else: 17 | print("SATAMADIK %s %d top istendi, elde %d kadar var" % (self.tur, topsayisi, self.miktar)) 18 | return False 19 | 20 | def rapor(self): 21 | print(f"{self.tur}\t{self.miktar}") 22 | 23 | class Dukkan: 24 | def __init__(self): 25 | self.liste = {} 26 | self.satilan = [] 27 | 28 | def ekle(self, turu, topsayisi=100, fiyat=5, maliyet=2): 29 | self.liste[turu] = Dondurma(turu, topsayisi=topsayisi, fiyat=fiyat, maliyet=maliyet) 30 | 31 | 32 | def satisrapor(self): 33 | print("------- Satis Raporu --------------") 34 | _ciro = 0 35 | _maliyet = 0 36 | _kar = 0 37 | for tur, top in self.satilan: 38 | t = self.liste[tur] 39 | _ciro += t.fiyat * top 40 | _maliyet += t.maliyet * top 41 | _kar += t.kar * top 42 | print(tur, top, " ciro : ", t.fiyat * top, " maliyet : ", t.maliyet * top, " kar : ", t.kar * top) 43 | 44 | print("-"*50) 45 | print(f"Toplam ciro : {_ciro} Toplam maliyet : {_maliyet} Toplam Kar : {_kar}") 46 | 47 | def rapor(self): 48 | print("------- Envanter -------------") 49 | for dondurma in self.liste.values(): 50 | dondurma.rapor() 51 | 52 | 53 | def satis(self, tur, topsayisi): 54 | turdurum = tur in self.liste 55 | satisdurum = False 56 | if turdurum: 57 | satisdurum = self.liste[tur].satis(topsayisi) 58 | if satisdurum: 59 | self.satilan.append((tur, topsayisi)) 60 | return turdurum, satisdurum 61 | 62 | 63 | if __name__ == "__main__": 64 | d = Dukkan() 65 | d.ekle("Limon", topsayisi=200, fiyat=5, maliyet=2) 66 | d.ekle("Karadut", topsayisi=10, fiyat=7, maliyet=4) 67 | 68 | d.rapor() 69 | 70 | d.satis("Limon", 5) 71 | d.satis("Karadut",4) 72 | d.satis("Karadut",3) 73 | d.satis("Limon", 12) 74 | d.satis("Limon", 15) 75 | d.satis("Karadut",4) 76 | 77 | d.satisrapor() 78 | 79 | 80 | d.rapor() -------------------------------------------------------------------------------- /siniflar/ornek.py: -------------------------------------------------------------------------------- 1 | 2 | """ 3 | skala dict, 4 | { 5 | 0 : 0, tecrube suresi : karsilik gelen maas artisi 6 | 5 : 3000 7 | 7 : 4000 8 | 10: 6000 9 | } 10 | 11 | 12 | """ 13 | class Yetenek: 14 | def __init__(self, adi, skala = None): 15 | self.adi = adi 16 | self.skala = skala 17 | 18 | def katki(self, tecrube): 19 | ek = 0 20 | 21 | for i in sorted(self.skala.keys()): 22 | if tecrube >= i: 23 | ek = self.skala[i] 24 | else: 25 | return ek 26 | return ek 27 | 28 | class Insan: 29 | def __init__(self, adi, soyadi, dogumyili): 30 | self.adi = adi 31 | self.soyadi = soyadi 32 | self.dogumyili = dogumyili 33 | 34 | 35 | class Calisan(Insan): 36 | def __init__(self, adi, soyadi, dogumyili, taban_maas): 37 | Insan.__init__(self, adi, soyadi, dogumyili) 38 | self.yetenekler = {} 39 | self.taban_maas = taban_maas 40 | 41 | def yetenek_ekle(self, yetenek, tecrube): 42 | self.yetenekler[yetenek.adi] = (yetenek,tecrube) 43 | 44 | def maas(self): 45 | maas_ = self.taban_maas 46 | for yetenek, tecrube in self.yetenekler.values(): 47 | maas_ += yetenek.katki(tecrube) 48 | return maas_ 49 | 50 | 51 | def rapor(self, bordro=False): 52 | if bordro: 53 | s = "%s %s %f\n" % (self.adi, self.soyadi, self.taban_maas) 54 | for y,t in self.yetenekler.values(): 55 | s += " + %s %f\n" % ( y.adi, y.katki(t)) 56 | s += " Toplam : %0.2f" % self.maas() 57 | return s 58 | else: 59 | print("%s %s" % (self.adi, self.soyadi)) 60 | print("Taban maas %f" % self.taban_maas) 61 | for y,t in self.yetenekler.values(): 62 | print("%s icin %d yil tecrube karsiligi %d katki" % (y.adi, t, y.katki(t))) 63 | print("-"*40) 64 | print("Toplam %f" % self.maas()) 65 | 66 | 67 | class Isyeri: 68 | def __init__(self, adi): 69 | self.adi = adi 70 | self.calisanlar = [] 71 | 72 | def calisan_ekle(self, calisan): 73 | self.calisanlar.append(calisan) 74 | 75 | 76 | def bordro(self): 77 | gider = 0 78 | print("%s isyeri bordrosu" % self.adi) 79 | for c in self.calisanlar: 80 | print(c.rapor(bordro=True)) 81 | gider += c.maas() 82 | print("-"*40) 83 | print("Gider Toplami %f" % gider) 84 | 85 | if __name__ == "__main__": 86 | 87 | 88 | isyeri = Isyeri("IMB") 89 | py = Yetenek("Python", {0:0, 3:1500, 5:2500, 10:4000}) 90 | csharp = Yetenek("CSharp", {0:0, 3:1000, 5:1500, 10:3000}) 91 | java = Yetenek("Java", {0:0, 3:500, 5:1500, 10:2000}) 92 | c = Calisan("ilker", "manap", 1972, 3500) 93 | c.yetenek_ekle(py, 7) 94 | c.yetenek_ekle(csharp, 3) 95 | d = Calisan("Ahmet", "Mehmet", 1986, 2200) 96 | d.yetenek_ekle(py,1) 97 | d.yetenek_ekle(java, 6) 98 | 99 | isyeri.calisan_ekle(c) 100 | isyeri.calisan_ekle(d) 101 | 102 | isyeri.bordro() 103 | 104 | -------------------------------------------------------------------------------- /arayuz/listwidget/listwidget.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | ornek 4 | 5 | 6 | 7 | 0 8 | 0 9 | 509 10 | 371 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 10 20 | 10 21 | 481 22 | 241 23 | 24 | 25 | 26 | 27 | 28 | 29 | 410 30 | 320 31 | 80 32 | 25 33 | 34 | 35 | 36 | Ekle 37 | 38 | 39 | 40 | 41 | 42 | 130 43 | 320 44 | 251 45 | 25 46 | 47 | 48 | 49 | 50 | 51 | 52 | 20 53 | 320 54 | 80 55 | 25 56 | 57 | 58 | 59 | Sil 60 | 61 | 62 | 63 | 64 | 65 | 66 | btn_sil 67 | clicked() 68 | ornek 69 | btn_sil_basildi() 70 | 71 | 72 | 58 73 | 329 74 | 75 | 76 | 54 77 | 303 78 | 79 | 80 | 81 | 82 | btn_ekle 83 | clicked() 84 | ornek 85 | btn_ekle_basildi() 86 | 87 | 88 | 452 89 | 330 90 | 91 | 92 | 447 93 | 307 94 | 95 | 96 | 97 | 98 | liste 99 | itemActivated(QListWidgetItem*) 100 | ornek 101 | list_eleman_tiklandi() 102 | 103 | 104 | 243 105 | 224 106 | 107 | 108 | 251 109 | 275 110 | 111 | 112 | 113 | 114 | liste 115 | clicked(QModelIndex) 116 | ornek 117 | list_eleman_tiklandi() 118 | 119 | 120 | 144 121 | 228 122 | 123 | 124 | 147 125 | 269 126 | 127 | 128 | 129 | 130 | 131 | btn_sil_basildi() 132 | btn_ekle_basildi() 133 | list_eleman_tiklandi() 134 | 135 | 136 | -------------------------------------------------------------------------------- /siniflar/README.md: -------------------------------------------------------------------------------- 1 | # Sınıf Örnekleri 2 | 3 | ## Dondurmacı 4 | 5 | Bir dondurma dükkanını tanımlamak için en az iki nesne gerekir. Dondurma ve dükkan. 6 | 7 | ### Dondurma Nesnesi 8 | 9 | Dondurma denince aklımıza türü gelir. Dondurma nesnemizi türü, toplam top sayısı, bir top maliyeti, bir top fiyatı bilgilerini vererek oluştururuz. 10 | 11 | Dondurma satışı için satis fonksiyonu var. Bu fonksiyona parametre olarak satılmak istenen top sayısı verilir. Satılmak istenen top sayısı eldeki miktardan az ise satış gerçekleşir ve satılan top sayısı o dondurma türünün toplam miktarından düşülür ve True değeri döndürülür. Eğer satılmak istenen top sayısı eldeki miktardan az ise, satış gerçekleşmez, miktar aynı kalır ve False değeri döndürülür. 12 | 13 | 14 | ### Dükkan Nesnesi 15 | 16 | Dükkan için önemli olan depo durumu ve satışlardır. Bu bilgileri saklayabilecek iki değişken kullandık, liste ve satılan. 17 | 18 | liste değişkeni dict tipindedir. Anahtar olarak dondurma türünü kullanır. O tür adı için Dondurma sınıfından türetilmiş bir değişken saklar. 19 | 20 | satilan değişkeni, list tipindedir. Yapılan her başarılı satış için bu listeye satılan dondurma türü ve satılan top miktarı eklenir. 21 | 22 | Envantere dondurma eklemek için ekle fonksiyonu kullanılır. Dondurma türü, toplam top sayısı, bir top fiyatı ve bir top maliyeti bilgileri verilir. Bu bilgiler kullanılarak Dondurma nesnesi oluşturulur ve dükkanın liste değişkenine eklenir. 23 | 24 | Dükkandan satış için satis fonksiyonu yazılmıştır. Dondurma türü ve satılacak top sayısı verilir. Bu fonksiyon bize iki değer döndürür. Birincisi istenen dondurma türünün dükkanda olup olmadığı, ikincisi ise istenen dondurmadan elde yeterince olup olmadığıdır. 25 | 26 | ## Uygulama 27 | 28 | Ana uygulamada önce boş bir dükkan tanımlayarak başlarız: 29 | 30 | dukkan = Dukkan() 31 | 32 | Dükkanımıza dondurmaları ekleriz: 33 | 34 | dukkan.ekle("Limon", topsayisi=200, fiyat=5, maliyet=2) 35 | 36 | Bu satırla, dükkana bir topu 5 liraya satılacak olan 200 top limonlu dondurma ekledik. 37 | 38 | Yeni bir tür daha ekleyelim: 39 | 40 | dukkan.ekle("Karadut", topsayisi=10, fiyat=7, maliyet=4) 41 | 42 | Böylece dükkana 200 top limonlu, 10 top karadutlu dondurma ekledik. 43 | 44 | Envanteri görmek için dükkanın rapor fonksiyonunu çağırırız. 45 | 46 | ------- Envanter ------------- 47 | Limon 200 48 | Karadut 10 49 | 50 | 51 | Dondurma satışı için dükkanın satis foksiyonunu kullanırız. 52 | 53 | dukkan.satis("Limon", 5) 54 | dukkan.satis("Karadut",4) 55 | dukkan.satis("Karadut",3) 56 | dukkan.satis("Limon", 12) 57 | dukkan.satis("Limon", 15) 58 | dukkan.satis("Karadut",4) 59 | 60 | Son satış hariç bütün satışlar başarılı olur. 61 | 62 | BASARILI Limon 5 top satildi, 195 top kaldi 63 | BASARILI Karadut 4 top satildi, 6 top kaldi 64 | BASARILI Karadut 3 top satildi, 3 top kaldi 65 | BASARILI Limon 12 top satildi, 183 top kaldi 66 | BASARILI Limon 15 top satildi, 168 top kaldi 67 | SATAMADIK Karadut 4 top istendi, elde 3 kadar var 68 | 69 | Bir daha envanter durumu alırsak: 70 | 71 | dukkan.rapor() 72 | 73 | ------- Envanter ------------- 74 | Limon 168 75 | Karadut 3 76 | 77 | 78 | Dükkanın satış ve parasal durumu için: 79 | 80 | ------- Satis Raporu -------------- 81 | Limon 5 ciro : 25 maliyet : 10 kar : 15 82 | Karadut 4 ciro : 28 maliyet : 16 kar : 12 83 | Karadut 3 ciro : 21 maliyet : 12 kar : 9 84 | Limon 12 ciro : 60 maliyet : 24 kar : 36 85 | Limon 15 ciro : 75 maliyet : 30 kar : 45 86 | -------------------------------------------------- 87 | Toplam ciro : 209 Toplam maliyet : 92 Toplam Kar : 117 88 | -------------------------------------------------------------------------------- /borsa.py: -------------------------------------------------------------------------------- 1 | import requests 2 | from bs4 import BeautifulSoup as bs 3 | import os 4 | import time 5 | 6 | class Hisse: 7 | def __init__(self, adi): 8 | self.adi = adi 9 | self.fiyat = None 10 | self.alis = None 11 | self.satis = None 12 | self.enyuksek = None 13 | self.endusuk = None 14 | self.aort = None 15 | self.yuzde = None 16 | self.hacim_lot = None 17 | self.hacim_tl = None 18 | 19 | def guncelle(self, etiket, rakam): 20 | if etiket.find("fiyat_id") > -1: 21 | self.fiyat = rakam 22 | if etiket.find("alis_id") > -1: 23 | self.alis = rakam 24 | if etiket.find("satis_id") > -1: 25 | self.satis = rakam 26 | if etiket.find("yuksek_id") > -1: 27 | self.enyuksek = rakam 28 | if etiket.find("dusuk_id") > -1: 29 | self.dusuk = rakam 30 | if etiket.find("aort_id") > -1: 31 | self.aort = rakam 32 | if etiket.find("yuzde_id") > -1: 33 | self.yuzde = rakam 34 | if etiket.find("fiyat_id") > -1: 35 | self.fiyat = rakam 36 | 37 | def rapor(self, tarih): 38 | print( "%s\t%s\t%02.2f\t%02.2f" % (tarih, self.adi, self.alis, self.satis)) 39 | 40 | class Sayfa: 41 | def __init__(self, icerik): 42 | self.icerik = icerik 43 | self.tarih = None 44 | self.soup = bs(self.icerik, features="lxml") 45 | self.li = self.soup.find_all("li") 46 | 47 | 48 | 49 | class LokalSayfa(Sayfa): 50 | def __init__(self, fname): 51 | self.dosya = fname 52 | icerik = open(fname,"r").read() 53 | Sayfa.__init__(self, icerik) 54 | self.tarih = time.gmtime(os.stat(fname).st_ctime) 55 | 56 | def guncelle(self): 57 | icerik = open(self.dosya,"r").read() 58 | Sayfa.__init__(self, icerik) 59 | self.tarih = time.gmtime(os.stat(self.dosya).st_ctime) 60 | 61 | class UzakSayfa(Sayfa): 62 | def __init__(self, url): 63 | self.url = url 64 | r = requests.get(url) 65 | icerik = r.text 66 | Sayfa.__init__(self, icerik) 67 | self.tarih = time.localtime() 68 | 69 | def guncelle(self): 70 | r = requests.get(self.url) 71 | icerik = r.text 72 | Sayfa.__init__(self, icerik) 73 | self.tarih = time.localtime() 74 | 75 | class Borsa: 76 | def __init__(self, adi, kaynak): 77 | self.adi = adi 78 | self.kaynak = kaynak 79 | self.veriler = {} 80 | 81 | def guncelle(self): 82 | self.kaynak.guncelle() 83 | if self.kaynak.tarih not in self.veriler.keys(): 84 | hs = {} 85 | for listitem in self.kaynak.li: 86 | if ('class' in listitem.attrs.keys()) and ('id' in listitem.attrs.keys()): 87 | if listitem.attrs['class'][0] == 'cell048': 88 | adi = listitem.attrs['id'].split("_")[-1] 89 | etiket = listitem.attrs['id'] 90 | rakam = float(listitem.text.replace(",",".")) 91 | if adi not in hs.keys(): 92 | hs[adi] = Hisse(adi) 93 | hs[adi].guncelle(etiket, rakam) 94 | self.veriler[self.kaynak.tarih] = hs 95 | 96 | 97 | def rapor(self, hisse=None): 98 | print( "Tarih hisse alis satis") 99 | print( "----------------------------------------------") 100 | for tr, v in self.veriler.items(): 101 | tstr = time.strftime("%Y-%m-%d %H:%M:%S", tr) 102 | if hisse is None: 103 | for k, hs in sorted(v.items()): 104 | hs.rapor(tstr) 105 | else: 106 | if hisse in v.keys(): 107 | v[hisse].rapor(tstr) 108 | else: 109 | print( hisse, " icin %s tarihinde veri bulunamadi" % tstr) 110 | if __name__ == "__main__": 111 | s = LokalSayfa("bigpara.html") 112 | #u = UzakSayfa("http://www.bigpara.com/borsa/canli-borsa/") 113 | b = Borsa("IMKB",s) 114 | b.guncelle() 115 | b.rapor() 116 | b.rapor("ZOREN") 117 | b.rapor("ZOsdf") 118 | --------------------------------------------------------------------------------