• Save
Python - Giriş
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Python - Giriş

  • 606 views
Uploaded on

Temel programlama konularına aşina olanlar için Python'a giriş. Veri yapıları, akış denetimi, fonksiyonlar. ...

Temel programlama konularına aşina olanlar için Python'a giriş. Veri yapıları, akış denetimi, fonksiyonlar.

Bu yansılardaki örnek kodları şu adresten alabilirsiniz:
https://dl.dropboxusercontent.com/u/61579540/Python/01.giris.kod.zip

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
606
On Slideshare
606
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Python Giri¸ s H. Turgut Uyar Ocak 2014
  • 2. License © 2013-2014 H. Turgut Uyar You are free to: Share – copy and redistribute the material in any medium or format for any purpose, even commercially. Under the following terms: Attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. NoDerivatives – If you remix, transform, or build upon the material, you may not distribute the modified material. For more information: https://creativecommons.org/licenses/by-nd/4.0/ Read the full license: https://creativecommons.org/licenses/by-nd/4.0/legalcode
  • 3. Konular 1 Genel Bilgiler Giri¸ s Veri Tipleri Standart Fonksiyonlar Paketler 2 Akı¸ Denetimi s Temel Yapılar Fonksiyonlar ¨ Ornekler
  • 4. Konular 1 Genel Bilgiler Giri¸ s Veri Tipleri Standart Fonksiyonlar Paketler 2 Akı¸ Denetimi s Temel Yapılar Fonksiyonlar ¨ Ornekler
  • 5. ¨ Ozellikler basit yazım, y¨ksek ifade g¨c¨: daha az kod satırı u u u dinamik tip sistemi, g¨¸l¨ tip denetimi uc u ¸oklu paradigma: nesneye dayalı, fonksiyonel c zengin standart kitaplık, her alanda ¸ok sayıda ek paket c
  • 6. Calı¸ma Sekilleri ¸ s ¸ .py uzantılı kaynak kodu dosyaları: hello.py ¸alı¸tırma: python hello.py c s etkile¸imli calı¸ma: REPL (Read-Eval-Print Loop) s ¸ s kullanıcının yazdı˘ı ifade hesaplanır ve sonu¸ basılır g c >>> 5 + 8 13 >>> x = 14 * 3 >>> x 42
  • 7. Yazım Kuralları bir satıra bir komut bir satırı ge¸en komutlarda satır sonuna c # i¸aretinden satır sonuna kadarki kısım a¸ıklama s c bloklar tutarlı girintileme ile belirlenir
  • 8. Referanslar b¨t¨n de˘i¸kenler referans uu gs bo¸ referans: None s referans sorgulama: id(expression) referans kar¸ıla¸tırması: r1 is r2, r1 is not r2 s s >>> x = 42 >>> id(x) 8975328 >>> x += 1 >>> id(x) 8975360 >>> y = None >>> y >>> y is None True
  • 9. Dinamik Tip Sistemi de˘i¸kenlerin tipleri yok, de˘erlerin var gs g tip sorgulama: type(expression) >>> y = 27 + 15 >>> type(y) <class ’int’> >>> y = 3.14159 >>> type(y) <class ’float’> >>> type(27 + 15) <class ’int’>
  • 10. Konular 1 Genel Bilgiler Giri¸ s Veri Tipleri Standart Fonksiyonlar Paketler 2 Akı¸ Denetimi s Temel Yapılar Fonksiyonlar ¨ Ornekler
  • 11. Tekil Tipler tamsayı (int) kayan noktalı sayı (float) mantıksal (bool): True, False
  • 12. Sekans Tipleri liste (list): [item_1, item_2, ...] ¸oklu (tuple): (item_1, item_2, ...) c ¸oklularda eleman de˘i¸tirilemez, eklenemez, cıkarılamaz c gs ¸ eleman sayısı: len(sequence) uyelik sorgulama: item in sequence ¨ ilk elemanın indisi 0 negatif indisler sondan ba¸layarak sayılır s
  • 13. Listeler >>> years = [] >>> years.append(2014) >>> years [2014] >>> years.append(1991) >>> years.append(2001) >>> years.append(1974) >>> years [2014, 1991, 2001, 1974] >>> years[2] 2001 >>> years[-3] 1991 >>> years = [2014, 1991, 2001, 1974]
  • 14. Coklular ¸ >>> years = [2014, 1991, 2001, 1974] >>> years[1] = 1990 >>> years [2014, 1990, 2001, 1974] >>> today = (2014, 1, 13) >>> today[0] 2014 >>> today[0] = 1990 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: ’tuple’ object does not support item assignment
  • 15. Coklular ¸ >>> empty = () >>> type(empty) <class ’tuple’> >>> single = (1) >>> single 1 >>> type(single) <class ’int’> >>> single = (1,) >>> single (1,) >>> type(single) <class ’tuple’> >>> len(single) 1
  • 16. Coklu Ataması ¸ ¸oklular birbirlerine atanabilir c >>> >>> 5 >>> 8 >>> >>> 8 >>> 5 (a, b) = (5, 8) a b a, b = b, a a b
  • 17. Aralıklar aralık (range): range(start, end, step) yarı a¸ık: ba¸langı¸ dahil, biti¸ hari¸ c s c s c >>> >>> 0 >>> 9 >>> >>> (1, >>> 5 >>> >>> (8, digits = range(10) digits[0] digits[-1] odds = range(1, 10, 2) odds[0], odds[-1] 9) len(odds) evens = range(8, -1, -2) evens[0], evens[-1] 0)
  • 18. Dilimleme sekanslar aralıklarla indislenebilir >>> years = [2012, 1988, 1992, 2001, 1995, 2013] >>> years[2:5] [1992, 2001, 1995] >>> years[2:] [1992, 2001, 1995, 2013] >>> years[:3] [2012, 1988, 1992] >>> years[:-2] [2012, 1988, 1992, 2001] >>> years[1:5:2] [1988, 2001]
  • 19. Sekans Sıralama sıralama: sorted(sequence) tersine ¸evirme: reversed(sequence) c >>> years = (2014, 1991, 1992, 2001, 1995) >>> sorted(years) [1991, 1992, 1995, 2001, 2014] >>> reversed(years) <reversed object at 0x7f540a8b5ba8> >>> list(reversed(years)) [1995, 2001, 1992, 1991, 2014]
  • 20. Liste Sıralama listeler kendi i¸lerinde sıralanabilir: c .sort(), .reverse() >>> years = [2014, 1991, 1992, 2001, 1995] >>> years.sort() >>> years [1991, 1992, 1995, 2001, 2014] >>> years.reverse() >>> years [2014, 2001, 1995, 1992, 1991]
  • 21. Katarlar katar (str): de˘erler ’ ya da " ¸iftleri arasında g c katardaki simgelere indisleriyle eri¸ilebilir ama de˘i¸tirilemez s gs karakter tipi yok: 1 uzunluklu katar
  • 22. Katar ˙slemleri I¸ ba¸tan ve sondan bo¸luk silme: .strip() s s par¸alama: .split(delimiter) c birle¸tirme: delimiter.join(sequence) s >>> fullname = ’ Wolfgang Amadeus Mozart >>> fullname.strip() ’Wolfgang Amadeus Mozart’ >>> names = fullname.strip().split(’ ’) >>> names [’Wolfgang’, ’Amadeus’, ’Mozart’] >>> ’ - ’.join(names) ’Wolfgang - Amadeus - Mozart’ ’
  • 23. K¨meler u k¨me (set): {item_1, item_2, ...} u elemanlar sırasız ve tekrarsız >>> years = {2014, 1991, 2001, 2014} >>> years {2001, 2014, 1991} >>> years.add(1974) >>> years {1974, 2001, 2014, 1991} >>> len(years) 4 >>> 2001 in years True >>> years[0] Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: ’set’ object does not support indexing
  • 24. S¨zl¨kler o u s¨zl¨k (dict): {key_1: value_1, key_2: value_2, ...} o u anahtar - de˘er e¸le¸tirmeleri g s s anahtarlar sırasız ve tekrarsız >>> prices = {} >>> prices[’ham’] = 1.5 >>> prices {’ham’: 1.5} >>> prices[’spam’] = 0.02 >>> prices {’spam’: 0.02, ’ham’: 1.5} >>> prices[’spam’] = 0.05 >>> prices {’spam’: 0.05, ’ham’: 1.5} >>> prices = {’ham’: 1.5, ’spam’: 0.02}
  • 25. S¨zl¨kler o u anahtarlar, de˘erler: .keys(), .values() g anahtar - de˘er ¸iftleri: .items() g c uyelik denetimi anahtarlar uzerinden ¨ ¨ >>> prices = {’ham’: 1.5, ’spam’: 0.02, ’eggs’: 1.1} >>> list(prices.keys()) [’spam’, ’ham’, ’eggs’] >>> list(prices.values()) [0.02, 1.5, 1.1] >>> list(prices.items()) [(’spam’, 0.02), (’ham’, 1.5), (’eggs’, 1.1)] >>> ’ham’ in prices True >>> len(prices) 3
  • 26. S¨zl¨k ˙slemleri o u I¸ anahtar de˘eri alma: .get(key, default) g anahtar yoksa varsayılan de˘er, ya da None g >>> prices = {’ham’: 1.5, ’spam’: 0.02} >>> prices[’ham’] 1.5 >>> prices[’eggs’] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: ’eggs’ >>> prices.get(’eggs’, 1.0) 1.0 >>> prices.get(’eggs’)
  • 27. Konular 1 Genel Bilgiler Giri¸ s Veri Tipleri Standart Fonksiyonlar Paketler 2 Akı¸ Denetimi s Temel Yapılar Fonksiyonlar ¨ Ornekler
  • 28. Standart Fonksiyonlar basit matematik: abs round pow basit istatistik: sum max min
  • 29. Giri¸ - Cıkı¸ s ¸ s ¸ıkı¸: print(output1, output2, ...) c s giri¸: input(prompt) s print("Hello, world!") name = input("What is your name? ") print("Hello", name)
  • 30. Katar Formatlama format_str % (v1, v2, ...) format_str.format(v1, v2, ...) >>> ’Today: %d.%d.%d’ % (30, 11, 2013) ’Today: 30.11.2013’ >>> ’Today: {0}.{1}.{2}’.format(30, 11, 2013) ’Today: 30.11.2013’ >>> name = ’Alan’ >>> print(’Hello %s!’ % name) Hello Alan!
  • 31. Konular 1 Genel Bilgiler Giri¸ s Veri Tipleri Standart Fonksiyonlar Paketler 2 Akı¸ Denetimi s Temel Yapılar Fonksiyonlar ¨ Ornekler
  • 32. Paketler bir paketi kullanmak i¸in: import package c paketten bir isme eri¸im: package.name s alırken isim de˘i¸tirilebilir: import package as name gs >>> import math >>> math.pi 3.141592653589793 >>> math.sin(math.pi / 2) 1.0
  • 33. Paketler paket adı kullanmadan eri¸im i¸in: s c from package import name >>> from math import sin >>> from math import pi as PI >>> sin(PI / 2) 1.0
  • 34. ¨ Ornek: Mastermind bilgisayar tutacak, insan bulmaya calı¸acak ¸ s renkler yerine rakamlar rakam tekrarlanmıyor hane sayısı de˘i¸ken gs
  • 35. Konular 1 Genel Bilgiler Giri¸ s Veri Tipleri Standart Fonksiyonlar Paketler 2 Akı¸ Denetimi s Temel Yapılar Fonksiyonlar ¨ Ornekler
  • 36. Se¸me c se¸me: if c if condition: block if condition: block_true else: block_false ¸oklu se¸me yok c c yerine: if condition_1: block_1 elif condition_2: block_2 ... else: block_else
  • 37. Yineleme ko¸ul uzerinden yineleme: while s ¨ while condition: block en i¸ d¨ng¨den ¸ıkma: break c o u c sonraki yinelemeye atlama: continue
  • 38. Yineleme sekans uzerinden yineleme: for ¨ for item in sequence: block s¨zl¨k uzerinden yineleme o u ¨ for key in dictionary: block for key, value in dictionary.items(): block
  • 39. Yineleme sekans indisi uzerinden yineleme: ¨ for index in range(len(sequence)): item = sequence[index] ... hem indis hem de sekans uzerinden yineleme: ¨ enumerate(sequence) >>> years = [2014, 1991, 2001] >>> list(enumerate(years)) [(0, 2014), (1, 1991), (2, 2001)] for index, item in enumerate(sequence): block
  • 40. ¨ Ornek: Sır Se¸me c import random n_items = 4 secret = [] i = 0 while i < n_items: element = random.randrange(0, 10) secret.append(element) i += 1 print(secret) o c ¨rnek ekran ¸ıktısı: [8, 8, 0, 4]
  • 41. ¨ Ornek: Sır Se¸me (Tekrarsız) c secret = [] i = 0 while i < n_items: element = random.randrange(0, 10) unused = True for item in secret: if element == item: unused = False break if unused: secret.append(element) i += 1
  • 42. Yinelemeden Cıkı¸ ¸ s for d¨ng¨lerinin else kısmı var o u break ile cıkılmazsa calı¸tırılır ¸ ¸ s for item in sequence: block if condition: break else: block_if_no_break
  • 43. ¨ Ornek: Sır Se¸me (Tekrarsız) c secret = [] i = 0 while i < n_items: element = random.randrange(0, 10) for item in secret: if element == item: break else: secret.append(element) i += 1
  • 44. ¨ Ornek: Sır Se¸me (Tekrarsız) c >>> import random >>> choices = list(range(10)) >>> random.sample(choices, 4) [7, 5, 2, 1] >>> choices = [’red’, ’green’, ’blue’, ’cyan’, ... ’magenta’, ’yellow’, ’black’, ’white’] >>> random.sample(choices, 3) [’green’, ’magenta’, ’blue’]
  • 45. Konular 1 Genel Bilgiler Giri¸ s Veri Tipleri Standart Fonksiyonlar Paketler 2 Akı¸ Denetimi s Temel Yapılar Fonksiyonlar ¨ Ornekler
  • 46. Fonksiyonlar fonksiyon tanımı: def giri¸ parametrelerine varsayılan de˘er verilebilir s g ¸a˘rılırken parametreler isimle ge¸irilebilir c g c def function_name(parameter_1, parameter_2, ..., parameter_n=value_n, ...): block return expression
  • 47. ¨ Ornek: Sır Se¸me c >>> >>> ... ... ... >>> >>> [9, >>> [5, >>> [8, import random def get_secret(choices, n=4): secret = random.sample(choices, n) return secret choices = list(range(10)) get_secret(choices, 2) 6] get_secret(n=3, choices=choices) 2, 0] get_secret(choices) 3, 0, 7]
  • 48. ¨ Ornek: Tahmin Alma def get_guess(): value = input("Make a guess: ") guess = [] for c in value: guess.append(int(c)) return guess
  • 49. ¨ Ornek: Tahmin De˘erlendirme g def evaluate_guess(guess, secret): plus = 0 for i in range(len(secret)): if guess[i] == secret[i]: plus += 1 minus = 0 for i in range(len(secret)): for j in range(len(secret)): if (i != j) and (guess[i] == secret[j]): minus += 1 return (plus, minus)
  • 50. ¨ Ornek: Tek Turluk Oyun def main(): choices = list(range(10)) n_items = 4 secret = get_secret(choices, n_items) print("I have selected a secret.") guess = get_guess() (plus, minus) = evaluate_guess(guess, secret) print(’%d+%d-’ % (plus, minus)) if __name__ == ’__main__’: main()
  • 51. Alı¸tırma s kullanıcı sırrı bulana ya da oyunu bırakana kadar tekrarlansın kullanıcı oyunu bırakacaksa tahmini bo¸ bıraksın s kullanıcı sırrı bulursa ka¸ turda buldu˘u yazılsın c g kullanıcı oyunu bırakırsa ka¸ turdan sonra bıraktı˘ı c g ve sırrın ne oldu˘u yazılsın g
  • 52. Konular 1 Genel Bilgiler Giri¸ s Veri Tipleri Standart Fonksiyonlar Paketler 2 Akı¸ Denetimi s Temel Yapılar Fonksiyonlar ¨ Ornekler
  • 53. ¨ Ornek: Rasgele Tahmin tahmin eden oyuncuyu da bilgisayar oynasın rasgele tahmin yapsın def get_guess(choices, n): guess = random.sample(choices, n) return guess
  • 54. ¨ Ornek: Rasgele Tahmin (Tekrarsız) aynı tahmini birden fazla kere yapmasın o ¨nceki tahminler bir listede tutulsun def get_guess(choices, n, guesses): guess = random.sample(choices, n) while guess in guesses: guess = random.sample(choices, n) return guess # in main() guesses = [] while continue_playing: guess = get_guess(choices, n_items, guesses) guesses.append(guess)
  • 55. ¨ Ornek: Rasgele Tahmin (Tekrarsız) o u ¨nceki tahminler bir k¨mede tutulsun guesses = set() while continue_playing: guess = get_guess(choices, n_items, guesses) guesses.add(guess) TypeError: unhashable type: ’list’
  • 56. ¨ Ornek: Rasgele Tahmin (Tekrarsız) listeler k¨me elemanı ya da s¨zl¨k anahtarı olamaz u o u ¸oklular olabilir c def get_guess(choices, n, guesses): guess = tuple(random.sample(choices, n)) while guess in guesses: guess = tuple(random.sample(choices, n)) return guess de˘i¸meyecek di˘er listeler de coklu olsa daha iyi: gs g ¸ choices, secret
  • 57. ¨ Ornek: Ge¸erli Tahmin c o ¸ s ¨nceki tahminlerle celi¸en tahmin yapmasın olası t¨m sırları ve ¨nceki tahminleri alsın u o tahminlerle birlikte de˘erlendirmeleri de tutulmalı → s¨zl¨k g o u all_secrets = ... guesses = {} while continue_playing: guess = get_guess(all_secrets, guesses) (plus, minus) = evaluate_guess(guess, secret) guesses[guess] = (plus, minus)
  • 58. ¨ Ornek: Olası T¨m Sırları Olu¸turma u s all_secrets = [] for d1 in choices: for d2 in choices: if d2 == d1: continue for d3 in choices: if d3 in (d1, d2): continue for d4 in choices: if d4 in (d1, d2, d3): continue all_secrets.append((d1, d2, d3, d4))
  • 59. ¨ Ornek: Olası T¨m Sırları Olu¸turma u s o c ¸ ou ¨nceki yansıdaki ger¸ekleme cok k¨t¨ hem uzun hem de hane sayısına sıkı ba˘lı g >>> import itertools >>> choices = tuple(range(3)) >>> n_items = 2 >>> tuple(itertools.permutations(choices, n_items)) ((0, 1), (0, 2), (1, 0), (1, 2), (2, 0), (2, 1))
  • 60. ¨ Ornek: Ge¸erli Tahmin c daha ¨nceki tahminlerle celi¸meyen ilk tahmin o ¸ s def get_guess(all_secrets, guesses): guess = () for candidate in all_secrets: for prev in guesses: if evaluate_guess(prev, candidate) != guesses[prev]: break else: guess = candidate break return guess
  • 61. Alı¸tırmalar s tahmin eden oyuncu deterministik davranıyor sayı se¸en oyuncu buna g¨re se¸ebilir: 8241 c o c tekrarlı rakamlara izin verilsin all_secrets her seferinde ba¸tan taranmasın s