ile Python gibi kod yazma



Benzer belgeler
Yukarıdaki kod aksi belirtilmediği sürece sürekli çalışır. Yani ekrana sürekli Bilgisayar çıldırdı! yazısı gelir. Ancak;

Al Ruby'i Vur Python'a

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

YAZILIM VE PROGRAMLAMA DİLİ. Donanım ve yazılım nedir? Yazılım nedir? Yazılım çeşitleri nelerdir? Programlama dili nedir

Kaya Oğuz.

Pythonda değişkenlerin türlerini tanımlamaya gerek yoktur

PYTHON PROGRAMLAMA DİLİ

Lambda, Map, Filter ve Dizi Tamamlama



İ Ö İ


Karşılaştırma İşlemleri ve Koşullu İfadeler

Python GELECEK. Barış Metin Linux Sistemleri. Python Programlama Dili

PYTHON PROGRAMLAMA DİLİ

Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:

Nesne Yönelimli Programlama

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

İskambil Kağıtları. Bir İskambil kağıdı

Mantıksal Kontrol ve Döngü Komutları

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Veri Tipleri. Prof.Dr. Bahadır AKTUĞ JFM212 Python ile Mühendislik Uygulamaları. *Kaynakça bölümünde verilen kaynaklardan derlenmiştir.

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

KARAR YAPILARI. Acaba hangi yöne gitmeliyim? Oturduğun yerden kalkıp, kapıya varana kadar kaç kez karar verdiniz biliyor musunuz?

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

C# Çalışma Örnekleri

MAT213 Bilgisayar Programlama I

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

PYTHON 3. Python Nedir? Yrd. Doç. Dr. Murat Olcay ÖZCAN

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

=~ Metodu 92 Karakter Sınıfları 94 sub ve gsub metotları 101 Hızlı Tekrar 102 Kontrol Noktası 103 Düello 106 Sonraki Bölümde 109

PyQt ile İş Uygulaması Geliştirimi

İNTERNET PROGRAMCILIĞI DERSİ ÇALIŞMA SORULARI

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

Spring Framework Eğitimi



BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

Glade. hitokiri. Eylül, 2012



Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi



PYTHON ĐLE PROGRAMLAMAYA GĐRĐŞ




ğ ğ Ö ğ ğ ğ ğ ğ ğ ğ ğ ğ ğ ğ ğ ğ ğ Ö ğ ğ ğ ğ















Ö Ç Ö


Ç Ç Ş Ö








İ İ



Ç Ö Ş Ş Ç Ü Ş Ş Ö Ü











İ İ Ö Ö



Ş Ç İ İ İ Ç Ş




Görsel Programlama 1

Ö



Transkript:

ile Python gibi kod yazma G ü r e r Ö z e n g u r e r @ p a r d u s. o r g. t r

Liste [ 1, 2, 3, 4 ]? Demet ( 1, 2, 3, 4 )

Tek elemanlı demet ( 1, )

int find_cell(char *text, int *row, int *column) { if (found) { *row = x; *column = y; return 1; } else return 0; } def find_cell(text): if found: return (row, column) else: return None Birden fazla değeri döndürmek için demet idealdir!

Liste içinde demet! adaylar = [ ( Ali, 24 ), ( Zeynep, 22 ), ( Ekin, 90 ) ] for aday in adaylar: if aday[1] > 20 in aday[1] < 25: print Adı, aday[0], yaşı, aday[1] Dönüşte demet! for aday, yas in adaylar: if yas in range(21, 25): print Adı, aday, yaşı, yas Karşılaştırmada demet!

Metin nasıl birleştirilir? merhaba + dünya %s %s % ( merhaba, dünya ) string.join(( merhaba, dünya )).join(( merhaba, dünya ))

isimler = ( ali, barış, can, didem ) metin = for isim in isimler: metin +=, %s % metin,.join(isimler) metin ==.join( metin.split() )

Temel döngü yapısı for (int i = 0; i < 100; i++) { } i = 0 while i < 100: i += 1 for i in range(100):

a = (1, 2, 3, 4, 5) def cift_mi(x): return x & 1 == 0 def kare(x): return x * x b = [] for x in a: if cift_mi(x): b.append(x) b = filter(cift_mi, a) b = [] for x in a: b.append(a * a) b = map(kare, a) d = map( kare, filter( cift_mi, a ) )

QListBox dns = [] item = self.dns_widget.firstitem() while item: dns.append(str(item.text())) item = item.next() API yetersiz! class Iter: def init (self, box): self.item = box.firstitem() def next(self): item = self.item if not item: raise StopIteration self.item = item.next() return item class IterableListBox(QListBox): def iter (self): return Iter(self) self.dns = IterableListBox() dns = list(self.dns)

İçiçe bir kod for yol, dizinler, dosyalar in os.walk( /home/koray ): for dosya in dosyalar: if dosya.endswith(.key ): if sha1sum(yol, dosya)!= db_get_sha1(yol, dosya): dosya_kurtar(yol, dosya) Bellek harcayan bir kod def get_key_files(path): tmp = [] for yol, dizinler, dosyalar in os.walk(path): if dosya.endswith(.key ): tmp.append((yol, dosya)) return tmp for dosya, yol in get_key_files( /home/koray ): if sha1sum(yol, dosya)!= db_get_sha1(yol, dosya): dosya_kurtar(yol, dosya)

Üreteç kullanan bir kod def get_key_files(path): for yol, dizinler, dosyalar in os.walk(path): if dosya.endswith(.key ): yield (yol, dosya) for dosya, yol in get_key_files( /home/koray ): if sha1sum(yol, dosya)!= db_get_sha1(yol, dosya): dosya_kurtar(yol, dosya)

switch case yok bu Python'da? switch(x - 2) { case 0: return y + 1; case 1: return y*y + 5*y 9 case 2: return y (y+1) / 3 default: return x*y } t = x - 2 if t == 0: return y + 1 elif t == 1: return y*y + 5*y 9 elif t == 2: return y (y+1) / 3 else: return x*y

Ya da var! operations = { 0: lambda: y + 1, 1: lambda: y*y + 5*y 9 2: lambda: y (y + 1) / 3 } func = operations.get(x 2, lambda: x*y) func()

Pythonic olmayan bir API örneği: from xml.dom.minidom import getdomimplementation impl = getdomimplementation() doc = impl.createdocument(none, Etiket, None) top = doc.documentelement text = doc.createtextnode( Karakter verisi ) top.appendchild(text) Pythonic olan başka bir tasarım: import piksemel doc = piksemel.newdocument( Etiket ) doc.insertdata( Karakter verisi )

API ilk uyarlama: def komut_oku(soket): return (istemci, komut, deger1, deger2) t = komut_oku(s) print t[0]

API gelişmesini sürdürür: class Cevap: def init (self, istemci, komut,deger1, deger2): self.istemci = istemci self.komut = komut self.deger1 = deger1 self.deger2 = deger2 def getitem (self, key): return (self.istemci, self.komut, self.deger1, self.deger2)[int(key)] def komut_oku(soket): return Cevap(istemci, komut, deger1, deger2) t = komut_oku(soket) print t[0] print t.istemci

class Cevap: def init (self, istemci, komut,deger1, deger2): self.istemci = istemci self.komut = komut self.deger1 = deger1 self.deger2 = deger2 class Struct: def init (self, **args): self. dict.update(args) Tekrarlı bir kısım! class Cevap(Struct): pass Cevap(istemci=istemci, komut=komut, )

Standart tipleri de geliştirebiliriz: a = { en : Hello world, tr : Merhaba dünya } metin = a.get(language(), None) if not metin: a.get( en ) print metin class Metin(dict): def str (self): txt = self.get(language(), None) if not txt: txt = self.get( en ) return txt a= Metin(a) print a

Değişken isimleri önemli, çünkü tip bilgisi yok! if aday == Ali Veli : if aday > 30: print aday.aday if aday_ismi == Ali Veli : if aday_adedi > 30: print aday.isim Sakın ha! I = 5 l = 8 O = 4 l I + 0

dosya.py (Javadan etkilenmiş) dosya.py (Pythonic) TGZ, ZIP, NORMAL = range(3) class Dosya: @staticmethod def tip(ad): if ad.endswith(.tar.gz ): return TGZ elif ad.endswith(.zip ): return ZIP else: return NORMAL TGZ, ZIP, NORMAL = range(3) def tip(ad): if ad.endswith(.tar.gz ): return TGZ elif ad.endswith(.zip ): return ZIP else: return NORMAL class Dosya:

Boş except çok tehlikeli bir yapı! try: asdf except: pass

Doğru yanlış kime göre dogru_ahmet = True Berbat Kötü if dogru_ahmet is True: if dogru_ahmet == True: Singleton: if deger is None: Pythonic if dogru_ahmet:

Sorularınız