Python - Giriş

927 views

Published on

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

Published in: Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
927
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
1
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Python - Giriş

  1. 1. Python Giri¸ s H. Turgut Uyar Ocak 2014
  2. 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. 3. Konular 1 Genel Bilgiler Giri¸ s Veri Tipleri Standart Fonksiyonlar Paketler 2 Akı¸ Denetimi s Temel Yapılar Fonksiyonlar ¨ Ornekler
  4. 4. Konular 1 Genel Bilgiler Giri¸ s Veri Tipleri Standart Fonksiyonlar Paketler 2 Akı¸ Denetimi s Temel Yapılar Fonksiyonlar ¨ Ornekler
  5. 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. 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. 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. 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. 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. 10. Konular 1 Genel Bilgiler Giri¸ s Veri Tipleri Standart Fonksiyonlar Paketler 2 Akı¸ Denetimi s Temel Yapılar Fonksiyonlar ¨ Ornekler
  11. 11. Tekil Tipler tamsayı (int) kayan noktalı sayı (float) mantıksal (bool): True, False
  12. 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. 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. 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. 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. 16. Coklu Ataması ¸ ¸oklular birbirlerine atanabilir c >>> >>> 5 >>> 8 >>> >>> 8 >>> 5 (a, b) = (5, 8) a b a, b = b, a a b
  17. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 27. Konular 1 Genel Bilgiler Giri¸ s Veri Tipleri Standart Fonksiyonlar Paketler 2 Akı¸ Denetimi s Temel Yapılar Fonksiyonlar ¨ Ornekler
  28. 28. Standart Fonksiyonlar basit matematik: abs round pow basit istatistik: sum max min
  29. 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. 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. 31. Konular 1 Genel Bilgiler Giri¸ s Veri Tipleri Standart Fonksiyonlar Paketler 2 Akı¸ Denetimi s Temel Yapılar Fonksiyonlar ¨ Ornekler
  32. 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. 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. 34. ¨ Ornek: Mastermind bilgisayar tutacak, insan bulmaya calı¸acak ¸ s renkler yerine rakamlar rakam tekrarlanmıyor hane sayısı de˘i¸ken gs
  35. 35. Konular 1 Genel Bilgiler Giri¸ s Veri Tipleri Standart Fonksiyonlar Paketler 2 Akı¸ Denetimi s Temel Yapılar Fonksiyonlar ¨ Ornekler
  36. 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. 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. 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. 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. 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. 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. 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. 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. 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. 45. Konular 1 Genel Bilgiler Giri¸ s Veri Tipleri Standart Fonksiyonlar Paketler 2 Akı¸ Denetimi s Temel Yapılar Fonksiyonlar ¨ Ornekler
  46. 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. 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. 48. ¨ Ornek: Tahmin Alma def get_guess(): value = input("Make a guess: ") guess = [] for c in value: guess.append(int(c)) return guess
  49. 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. 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. 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. 52. Konular 1 Genel Bilgiler Giri¸ s Veri Tipleri Standart Fonksiyonlar Paketler 2 Akı¸ Denetimi s Temel Yapılar Fonksiyonlar ¨ Ornekler
  53. 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. 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. 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. 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. 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. 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. 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. 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. 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

×