Bilgisayar Programlamasna ve Veri Analizine Giri Sabanc niversitesi
Bilgisayar Programlamasına ve Veri Analizine Giriş Sabancı Üniversitesi Lise Yaz Okulu 2018 8. Ders
Ders 8 için Planımız • Liste tipi değişkenler • Sözlük (Dictionary) tipi değişkenler 28. 2. 2021 Sabancı Üniversitesi Lise Yaz Okulu 2
Liste Tipi Değişkenler • Birden fazla değeri tek bir değişkende tutabiliriz. • Bu değişken tipine “list” adı verilir. • Değerler arasında “, ” karakteri vardır, ayrıca herşeyi köşeli paranteze [] alırız • Örnek: liste 1 = [0, 2, 3, 4, 5] liste 2 = ['a', 'b', 'c', 'd'] liste 3 = ["fizik", "kimya", "biyoloji", "tarih", "cografya", "turkce"] • Listelerin elemanlarına sıra numaralarını kullanarak erişebiliriz – Sıra numarası 0'dan başlar; yani ilk eleman sıfırıncı elemandır. • Örnek: – print (liste 1[1], liste 2[0], liste 3[2]) – 2 a biyoloji 28. 2. 2021 Sabancı Üniversitesi Lise Yaz Okulu 3
Liste Tipi Değişkenler • Listelerde erişime kolaylık sağlayan bir şey de Python’un listelerde geriden saymaya başlayabilmesidir. • Örnek: liste 3 = ["fizik", "kimya", "biyoloji", "tarih", "cografya", "turkce"] print (liste 3[0]) print (liste 3[-1]) print (liste 3[-2]) print (liste 3[-3]) 28. 2. 2021 >>> fizik turkce cografya tarih >>> Sabancı Üniversitesi Lise Yaz Okulu 4
Listeye Eleman Eklemek/Silmek • Listelerin içine elemanlar append() fonskiyonu ile eklenir. • Elementler del fonksiyonu ile listeden silinebilir. • Örnek liste 3 = ["fizik", "kimya", "biyoloji", "tarih", "cografya", "turkce"] print (liste 3[-1]) >>> liste 3. append("matematik") turkce print (liste 3[-1]) matematik del (liste 3[-1]) turkce print (liste 3[-1]) >>> 28. 2. 2021 Sabancı Üniversitesi Lise Yaz Okulu 5
Liste Elemanlarına Döngü ile Erişebiliriz Örnek: liste 3 = ["fizik", "kimya", "biyoloji", "tarih", "cografya", "turkce"] for ders in liste 3: print (ders) >>> fizik kimya biyoloji tarih cografya turkce >>> 28. 2. 2021 Sabancı Üniversitesi Lise Yaz Okulu 6
Listeler Üzerinde İşlemler Örnek: liste 3 = ["fizik", "kimya", "biyoloji", "tarih", "cografya", "turkce"] print (liste 3[: : -1]) print (liste 3[2: 4]) >>> ['turkce', 'cografya', 'tarih', 'biyoloji', 'kimya', 'fizik'] ['biyoloji', 'tarih'] >>> 28. 2. 2021 Sabancı Üniversitesi Lise Yaz Okulu 7
Listeler Üzerinde İşlemler Örnek: liste 3 = ["fizik", "kimya", "biyoloji", "tarih", "cografya", "turkce"] print (liste 3[0][0]) print (liste 3[-1]) >>> f e >>> 28. 2. 2021 Sabancı Üniversitesi Lise Yaz Okulu 8
split() Fonksiyonu • Bu fonksiyon bir cümleyi bırakılan boşluklara göre parçalara ayırıp bir liste oluşturur. • Örnek cumle = "Akilli insan aklini kullanir daha akilli insan baskalarinin da aklini kullanir" listem = cumle. split() print (listem) >>> ['Akilli', 'insan', 'aklini', 'kullanir', 'daha', 'akilli', 'insan', 'baskalarinin', 'da', 'aklini', 'kullanir'] >>> 28. 2. 2021 Sabancı Üniversitesi Lise Yaz Okulu 9
join() Fonksiyonu • split() fonksiyonunun tam tersini yapar, – bir listenin içindeki elementleri verilen parametre ile birleştirip cümle kurar. • Örnek cumle = "Akilli insan aklini kullanir daha akilli insan baskalarinin da aklini kullanir " Akilli insan aklini kullanir daha akilli listem = cumle. split() insan baskalarinin da aklini kullanir print (" ". join(listem)) Akilli, insan, aklini, kullanir, daha, akilli, i print (", ". join(listem)) nsan, baskalarinin, da, aklini, kullanir print ("". join(listem)) Akilliinsanaklinikullanirdahaakilliinsan baskalarinindaaklinikullanir 28. 2. 2021 Sabancı Üniversitesi Lise Yaz Okulu 10
Sözlük (Dictionary) Veri Tipi • Listelere çok benzerler ama her değere belli bir ‘key’, yani anahtar atanır. Bu sözlüklerin içinde değer aramayı çok kolaylaştırır • Örnek: gunler = {'Pazartesi': 0, 'Sali': 1, 'Carsamba': 2, 'Persembe': 3, 'Cuma': 4, 'Cumartesi': 5, 'Pazar': 6} print (gunler['Pazartesi']) print (gunler['Cumartesi']) 28. 2. 2021 >>> 0 5 >>> Sabancı Üniversitesi Lise Yaz Okulu 11
Sözlük (Dictionary) Veri Tipi gunler = {'Pazartesi': 'Monday', 'Sali': 'Tuesday', 'Carsamba': 'Wednesday', 'Persembe': 'Thursday', 'Cuma': 'Friday', 'Cumartesi': 'Saturday', 'Pazar': 'Sunday'} print (gunler['Pazartesi']) print (gunler['Cumartesi']) 28. 2. 2021 >>> Monday Saturday >>> Sabancı Üniversitesi Lise Yaz Okulu 12
Sezar’ın şifresi • Arkadaşımız ile şifreli bir şekilde konuşmak istediğimizi varsayalım: Açık mesaj: erkay hoca cok sert Şifreli mesaj: hundb krfd frn vhuw • Sezar (Gaius Julius Caesar) gizli mesajlarini bu şekilde şifreleyerek gönderirdi asıl harf a b c d e f g h i j k l m n o p q r s t u v w x y z k=3 (anahtar) a b c d e şifreli harf 28. 2. 2021 Sabancı Üniversitesi Lise Yaz Okulu 13
Sezar’ın şifresi Anahtar (k) olarak 1 ile 25 arasında herhangi bir değer kullanılabilir. 0 1 2 3 4 5 6 7 8 9 10 a b c d e f g h i j a b c d e f g h i 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 a b c d e 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 k l m n o p q r s t u v w x y z j k l m n o p q r s t u v w x y z 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 5 6 8 9 10 k=3 k=9 1 28. 2. 2021 2 3 4 7 11 12 13 14 15 Sabancı Üniversitesi Lise Yaz Okulu 16 17 18 19 20 21 22 23 24 25 14
Sezar’ın şifresi • Kullanıcıdan 1 ile 25 arasında bir tam sayı girmesini isteyiniz. – Bu sizin anahtarınız olacak. Bunu k değişkeninde tutalım • Daha sonra bir mesaj girmesini isteyiniz. • Her harfi sayısal bir değeri olsun (ör: A 0, B 1, …) – Anahtarı kullanarak, mesajın harflerini tek şifreleyeniz. – Şifrelemek için her harfi, k sonraki harf ile değiştirelim. • k sonraki harfin sayısal değeri 25’dan büyük ise, 26 ile modül alın • Boşlukları ve noktalama işaretlerini şifrelemeyin • Kolaylık olsun diye küçük harfle çalışabilirsiniz. 28. 2. 2021 Sabancı Üniversitesi Lise Yaz Okulu 15
Örnek >>> Anahtari girin: 0 Mesajinizi girin: sabanci Sifreli Mesaj: sabanci >>> Anahtari girin: 1 Mesajinizi girin: sabanci Sifreli Mesaj: tbcbodj >>> 28. 2. 2021 >>> Anahtari girin: 2 Mesajinizi girin: sabanci univ Sifreli Mesaj: ucdcpek wpkx >>> Anahtari girin: 4 Mesajinizi girin: saldirin! Sifreli Mesaj: wephmvmr! >>> Sabancı Üniversitesi Lise Yaz Okulu 16
İpucu • Dictionary tipi değişken kullanabilirsiniz alfabe ={'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5, 'g': 6, 'h': 7, 'i': 8, 'j': 9, 'k': 10, 'l': 11, 'm': 12, 'n': 13, 'o': 14, 'p': 15, 'q': 16, 'r': 17, 's': 18, 't': 19, 'u': 20, 'v': 21, 'w': 22, 'x': 23, 'y': 24, 'z': 25} ters_alfabe = {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h', 8: 'i', 9: 'j', 10: 'k', 11: 'l', 12: 'm', 13: 'n', 14: 'o', 15: 'p', 16: 'q', 17: 'r', 18: 's', 19: 't', 20: 'u', 21: 'v', 22: 'w', 23: 'x', 24: 'y', 25: 'z'} 28. 2. 2021 Sabancı Üniversitesi Lise Yaz Okulu 17
Sezar Şifresi Kodu alfabe ={'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5, 'g': 6, 'h': 7, 'i': 8, 'j': 9, 'k': 10, 'l': 11, 'm': 12, 'n': 13, 'o': 14, 'p': 15, 'q': 16, 'r': 17, 's': 18, 't': 19, 'u': 20, 'v': 21, 'w': 22, 'x': 23, 'y': 24, 'z': 25} ters_alfabe = {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h', 8: 'i', 9: 'j', 10: 'k', 11: 'l', 12: 'm', 13: 'n', 14: 'o', 15: 'p', 16: 'q', 17: 'r', 18: 's', 19: 't', 20: 'u', 21: 'v', 22: 'w', 23: 'x', 24: 'y', 25: 'z'} k = int(input("Anahtari girin: ")) mesaj = input("Mesajinizi girin: ") 28. 2. 2021 Sabancı Üniversitesi Lise Yaz Okulu 18
Sezar Şifresi Kodu sifreli_mesaj = '' for karakter in mesaj: if karakter not in alfabe: sifreli_mesaj += karakter else: pozisyon = alfabe[karakter] pozisyon = (pozisyon+k)%26 sifreli_mesaj += ters_alfabe[pozisyon] print("Sifreli Mesaj: ", sifreli_mesaj ) 28. 2. 2021 Sabancı Üniversitesi Lise Yaz Okulu 19
Sezar Şifresi Çözme Yarışması KURALLAR • Size Sezar şifresi kullanılarak elde edilmiş şifreli bir mesaj vereceğiz. • Asıl mesajı (şifresiz mesajı) ilk bulan yarışmayı kazanır. • Asıl mesajı bulunca: – erkays@sabanciuniv. edu adresine gönderin – e-posta mesajınızın konusu büyük harflerle asıl mesaj olsun. • Şifreli mesaj: ve slplb wvevi 28. 2. 2021 Sabancı Üniversitesi Lise Yaz Okulu 20
- Slides: 20