Bilgisayar Programlamasına ve Veri Analizine Giriş - III Hüsnü Yenigün Sabancı Üniversitesi Lise Yaz Okulu 2016
Sabancı Üniversitesi Lise Yaz Okulu Modül 3 için Planımız Veri Tipleri Arasında Dönüşüm Koşullu İfadeler (Conditional Statements) Bool Cebri (Boolean) Döngüler (Loops) 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Gerçek Sayılar Gerçek sayılar Örnek >>> Bir sayi giriniz: 5 Bu sayinin yarisi: 2 sayi = input("Bir sayi giriniz: ") print "Bu sayinin yarisi: ", sayi/2 sayi = float(raw_input("Bir sayi giriniz: ")) print "Bu sayinin yarisi: ", sayi/2 >>> Bir sayi giriniz: 5 Bu sayinin yarisi: 2.5 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Veri Tipleri str() Karakter dizisine dönüştürür ("Husnu") int() Tam sayıya dönüştürür float() Gerçek sayıya dönüştürür complex() Karmaşık sayıya dönüştürür eval() Girdinin değerini hesaplar 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Koşullu İfadeler Programın hangi yönde ilerleyeceğini belirlemek için bir koşul test edilir. Koşul gerçekleşiyorsa program bir yöne; Geçekleşmiyorsa başka bir yöne doğru ilerler. Bunun için if ifadesini kullanırız. Kelime anlamı “eğer” dir Eğer (if) bir koşul gerçekleşiyorsa/doğruysa program bir işi yapar Aksi takdirde (else) yapmaz 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu İf-else koşulu Koşul??? Eğer koşul doğru ise Eğer koşul yanlış ise if kodu else kodu 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu if-else koşulu: Örnek sayi = int(raw_input("Bir sayi giriniz: ")) if sayi > 5: print "Girdiginiz sayi 5'ten buyuktur " else: print "Girdiginiz sayi 5'ten buyuk degildir" Yazılma Biçimine dikkat! >>> Bir sayi giriniz: 7 Girdiginiz sayi 5'ten buyuktur Bir sayi giriniz: 4 Girdiginiz sayi 5'ten buyuk degildir 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Karşılaştırma Operatörleri Her bir karşılaştırmadan sonra, bir Bool değeri oluşur “doğru” ya da “yanlış”; “evet” ya da “hayır”; 0 ya da 1 Karşılaştırma Operatörü İşlevi < Küçüktür <= Küçük ya da eşittir > Büyüktür >= Büyük ya da eşittir != Eşit değildir <> == Eşittir 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Zincirleme Koşullu İfadeler Bazı durumlarda ardarda bir koşul serisi kullanmamız gerekebilir: Örneğin, girilen sayıyı 10’dan küçük, 11-20 arası, 21-30 arası, 30’dan büyük şeklinde gruplamak istediğimizi düşünelim. sayi = int(raw_input("Bir sayi giriniz: ")) if sayi <= 10: print "Girdiginiz sayi 10'dan kucuk ya da esittir" if sayi > 10 and sayi <= 20: print "Girdiginiz sayi 11 ile 20 arasindadir" if sayi > 20 and sayi <= 30: print "Girdiginiz sayi 21 ile 30 arasindadir" if sayi > 30: print "Girdiginiz sayi 30'dan bile buyuktur" 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
if-elif-else Koşullu İfadeleri Bu şekilde zincirleme koşullar için elif ifadeleri, yazmasi ve anlamasi daha kolay bir yol saglar. Örnek sayi = int(raw_input("Bir sayi giriniz: ")) if sayi <= 10: print "Girdiginiz sayi 10'dan kucuk ya da esittir" elif sayi > 10 and sayi <= 20: print "Girdiginiz sayi 11 ile 20 arasindadir" elif sayi > 20 and sayi <= 30: print "Girdiginiz sayi 21 ile 30 arasindadir" else: print "Girdiginiz sayi 30'dan bile buyuktur" 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
if-elif-else Koşullu İfadeleri elif ifadelerinde, önceki koşulların yanlış olmasından faydalanabiliriz: Örnek sayi = int(raw_input("Bir sayi giriniz: ")) if sayi <= 10: print "Girdiginiz sayi 10'dan kucuk ya da esittir" elif sayi > 10 and sayi <= 20: print "Girdiginiz sayi 11 ile 20 arasindadir" elif sayi > 20 and sayi <= 30: print "Girdiginiz sayi 21 ile 30 arasindadir" else: print "Girdiginiz sayi 30'dan bile buyuktur" Eğer program buraya geliyorsa, sayımızın 10’dan büyük olduğunu zaten biliyoruz Eğer program buraya geliyorsa, sayımızın 20’den büyük olduğunu zaten biliyoruz 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
if-elif-else Koşullu İfadeleri elif ifadelerinde, önceki koşulların yanlış olmasından faydalanabiliriz: Örneğimizin sadeleştirilmiş hali: sayi = int(raw_input("Bir sayi giriniz: ")) if sayi <= 10: print "Girdiginiz sayi 10'dan kucuk ya da esittir" elif sayi <= 20: print "Girdiginiz sayi 11 ile 20 arasindadir" elif sayi <= 30: print "Girdiginiz sayi 21 ile 30 arasindadir" else: print "Girdiginiz sayi 30'dan bile buyuktur" 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Küçük Bir Ödev Program kullanıcıdan(öğrenciden) 100 üzerinden aldığı notu girmesini istesin. Program 100 üzerinden girilen notu harf notuna çevirsin. Dönüşüm kuralları Not >= 95 A+, Not >= 90 A, Not >= 80 B, Not >= 70 C, Not >= 60 D, Not < 60 F. Ders geçme kuralı F alan öğrenci dersten kalır, diğerleri geçer Program öğrencinin harf notunu ekrana bastırsın ve geçip geçmediğini bildirsin. 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
if-elif-else Koşullu İfadeleri Not = int(raw_input("100 uzerinden notunuzu giriniz: ")) if Not >= 95: harf_notu = 'A+' elif Not >= 90: harf_notu = 'A' elif Not >= 80: harf_notu = 'B' elif Not >= 70: harf_notu = 'C' … … elif Not >= 60: harf_notu = 'D' else: harf_notu = 'F' if harf_notu == 'F': print "Harf Notunuz: ", harf_notu print "Uzgunum Kaldiniz:(:(" print "Tebrikler Gectiniz:):)" 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Unutmayın Sona else ifadesi koyun! Bu hiçbir koşulun gerçekleşmediği durumlarda işe yarayacaktır. Aksi takdirde hata mesajı alabilirsiniz Traceback (most recent call last): File "C:/Users/Husnu Yenigun/Documents/classes/lise_yaz_okulu/python/module_3/deneme1.py", line 15, in <module> if harf_notu == 'F': NameError: name 'harf_notu' is not defined 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Başka Örnekler Programımız bizden şifremizi girmemizi istesin Şifremiz: "qwert123" olsun Doğru şifreyi girersek bize "Hoş geldiniz", Aksi takdirde "Yanlış şifre girdiniz" desin. 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Şifre Girme Programı dogru_sifre = "qwert123" girilen_sifre = raw_input("Lutfen sifrenizi giriniz: ") if girilen_sifre == dogru_sifre: print "Hos geldiniz" else: print "Yanlis sifre girdiniz" 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Ne fark Var? dogru_sifre = "qwert123" girilen_sifre = input("Lutfen sifrenizi giriniz: ") if girilen_sifre == dogru_sifre: print "Hos geldiniz" else: print "Yanlis sifre girdiniz" 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Çalıştırırsak >>> Lutfen sifrenizi giriniz: qwert123 Traceback (most recent call last): File "C:/Users/Husnu Yenigun/Documents/classes/lise_yaz_okulu/python/module_3/sifre1.py", line 3, in <module> girilen_sifre = input("Lutfen sifrenizi giriniz: ") File "<string>", line 1, in <module> NameError: name 'qwert123' is not defined 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Ne Yapmamız Gerekiyordu? >>> Lutfen sifrenizi giriniz: Hos geldiniz >>> Lutfen sifrenizi giriniz: "husnu" Yanlis sifre girdiniz "qwert123 " Ya da raw_input() fonksiyonunu kullanırız. 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Daha Zor Bir Şey Yapalım Program kullanıcıya doğru şifreyi girmesi için iki hak versin. Kullanıcı ikisinden birinde doğru şifreyi girerse "Hoş geldiniz", Aksi takdirde "Yanlış şifre girdiniz" desin. 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Çözüm dogru_sifre = "qwert123" girilen_sifre = raw_input("Lutfen sifrenizi giriniz: ") if girilen_sifre == dogru_sifre: print "Hos geldiniz" else: girilen_sifre = raw_input("Lutfen sifrenizi tekrar giriniz: ") print "Yanlis sifre girdiniz" 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Ya Üç Hak Vermek İstersek? dogru_sifre = "qwert123" girilen_sifre = raw_input("Lutfen sifrenizi giriniz: ") if girilen_sifre == dogru_sifre: print "Hos geldiniz" else: girilen_sifre = raw_input("Lutfen sifrenizi tekrar giriniz: ") print "Yanlis sifre girdiniz" 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Döngüler (Loops) Bazen benzer ya da tıpatıp aynı işi defalarca yapmamız gerekir Örnek: 1 ile 10 arasındaki tüm tek tam sayıları bastır tek_sayi = 1 print tek_sayi tek_sayi = tek_sayi+2 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Döngüler Bilgisayara aynı işlemi defalarca tekrarlamasını söylemenin daha kolay bir yolu var while döngüsü tek_sayi = 1 while tek_sayi <= 10: print tek_sayi tek_sayi = tek_sayi + 2 print "Bitti" >>> 1 3 5 7 9 Bitti 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Ne, Nasıl Oldu? tek_sayi = 1 Kontrol: tek_sayi <= 10 print tek_sayi tek_sayi = tek_sayi + 2 print tek_sayi print 3 tek_sayi = tek_sayi + 2 tek_sayi = 5 print tek_sayi print 5 tek_sayi = tek_sayi + 2 tek_sayi = 7 print 1 tek_sayi = 3 tek_sayi = 1 while tek_sayi <= 10: print tek_sayi tek_sayi = tek_sayi + 2 print "Bitti" 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Ne, Nasıl Oldu? Kontrol: tek_sayi <= 10 print tek_sayi print 7 tek_sayi = tek_sayi + 2 tek_sayi = 9 print tek_sayi print 9 tek_sayi = tek_sayi + 2 tek_sayi = 11 print "Bitti" tek_sayi = 1 while tek_sayi <= 10: print tek_sayi tek_sayi = tek_sayi + 2 print "Bitti" 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu while döngüsü while ile sonsuz döngü x = 1 while x == 1: print "Sonsuza Kadar Giderim" … Sonsuza Kadar Giderim Traceback (most recent call last): File "C:/Users/Husnu Yenigun/Documents/classes/lise_yaz_okulu/python/module_3/deneme1.py", line 3, in <module> print "Sonsuza Kadar Giderim" File "C:\Python27\lib\idlelib\PyShell.py", line 1356, in write return self.shell.write(s, self.tags) KeyboardInterrupt 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Kontrollü Sonsuz Döngü print "Hos Geldiniz!" devam = 'E' sayac = 1 while devam == 'E': print "%d. kez merhaba dunyali" %sayac sayac = sayac + 1 devam = raw_input("Devam etmek icin E giriniz: ") print "Gule Gule:):)" 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Biraz Esnek Olalım print "Hos Geldiniz!" devam = 'E' sayac = 1 while devam == 'E' or devam == 'e': print "%d. kez merhaba dunyali" %sayac sayac = sayac + 1 devam = raw_input("Devam etmek icin E giriniz: ") print "Gule Gule:):)" 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu while Döngüsü Koşul tek_sayi = 1 while tek_sayi <= 10: print tek_sayi tek_sayi = tek_sayi + 2 Koşul ??? Eğer koşul yanlış ise Eğer koşul doğru ise koşullu kod Koşullu kod 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Küçük Bir Ödev Program kullanıcıdan bir sayı girmesini istesin Bu sayıyı N isimli bir değişkene tamsayı olarak atasın Bundan sonra 1’den N’e kadar olan tüm çift sayıların toplamını hesaplasın. Toplama N sayısı dahil olmasın Sonucu ekrana bastırsın Formül kullanmamıza gerek yok. Bilgisayar bizim için yapar. 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Peki Biraz Kolaylaştıralım Program 1’den N-1’e kadar olan pozitif tamsayıları toplasın 1 + 2 + 3 + … + N-1 Bunu bilgisayarımızda nasıl yaparız? Bir anda iki sayıyı toplayabiliriz; örneğin a + b İki değişken kullanmalıyız. O zaman yöntem 1 + 2 = 3 3 + 3 = 6 6 + 4 = 10 … 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Tamsayıları Topluyoruz İki değişken i: 1’den N’e kadar olan sayılar için toplam: toplam için Başlangıçta Henüz hiç toplama yapmadık i = 1 toplam = 0 İlk adım Koşul test edelim i < N ??? 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Tamsayıları Topluyoruz i = 1 toplam = 0 Eğer i < N toplam = toplam + i i = i +1 Aksi takdirde Bitti, toplam değişkenini bas i < N False True i = 1 toplam = 0 while i < N: toplam = toplam + i i = i +1 print toplam toplam = toplam + i i = i + 1 toplam’ı ekrana bas 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Diğer Kısımlar N = int(raw_input("Bir sayi giriniz: ")) i = 1 toplam = 0 while i < N: toplam = toplam + i i = i+1 print "1'den %d'e kadar olan pozitif tam sayilarin toplami: %d" %(N-1, toplam) 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Kullanıcıyı Pozitif Sayı Girmesi için Zorlayalım N = 0 while (N < 1): N = int(raw_input(“Pozitif bir tamsayi giriniz: ")) i = 1 toplam = 0 while i < N: toplam = toplam + i i = i+1 print "1'den %d'e kadar olan pozitif tam sayilarin toplami: %d" %(N-1, toplam) 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Kullanıcı Ya Sayıdan Başka Bir Şey Girerse? >>> Pozitif bir tamsayi giriniz: e Traceback (most recent call last): File "C:/Users/Husnu Yenigun/Documents/classes/lise_yaz_okulu/python/module_4/input_check.py", line 3, in <module> n = int(raw_input("Bir pozitif bir tamsayi giriniz: ")) ValueError: invalid literal for int() with base 10: 'e' 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Şöyle Yapmak Gerekir while True: try: N = int(raw_input(“Pozitif bir tam sayi giriniz:")) except ValueError: print "Sayi girmediniz!" continue else: print "Aferin! Sayi girdiniz" break 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Küçük Ödev Program kullanıcıdan bir sayı girmesini istesin Bu sayıyı N isimli bir değişkene tamsayı olarak atasın Bundan sonra 1’den N’e kadar olan tüm çift sayıların toplamını hesaplasın. Toplama N sayısı dahil olmasın Sonucu ekrana bastırsın Formül kullanmamıza gerek yok. Bilgisayar bizim için yapar. 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Çözüm N = int(raw_input(“Pozitif bir tam sayi giriniz: ")) i = 2 toplam = 0 while i < N: toplam = toplam + i i = i+2 print "1'den %d'e kadar olan cift sayilarin toplami: %d" %(N, toplam) 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Küçük Ödev 2 Program “Toplamlar Programına Hoş Geldiniz” desin Sonra program kullanıcıdan bir sayı girmesini istesin Bu sayıyı N isimli bir değişkene tamsayı olarak atasın Bundan sonra 1’den N’e kadar olan tüm çift sayıların toplamını hesaplasın. Toplama N sayısı dahil olmasın Sonucu ekrana bastırsın Kullanıcıya devam etmek isteyip istemediğini sorsun Devam etmek istiyorsa kullanıcıdan bir sayı girerek aynı şeyleri yapsın Aksi takdirde, program sonlansın 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Çözüm print "Cift Sayilari Toplama Programina Hos Geldiniz" devam = 'E' while devam == 'E' or devam == 'e': N = int(raw_input("Pozitif bir tam sayi giriniz: ")) i=2 toplam = 0 while i < N: toplam = toplam + i i = i+2 print "1'den %d'e kadar olan cift sayilarin toplami: %d" %(N, toplam) devam = raw_input("Devam etmek icin 'E' ya da 'e' tusuna basiniz: ") print "Program Sonlaniyor, Gule Gule" 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu for Döngüsü Belirli bir aralıkta tekrar yapmak için kullanılır for i in range(1, 5): print i >>> 1 2 3 4 >>> S a b n c i universite = "Sabanci" for harf in universite: print harf 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Dizideki bir sonraki eleman for Döngüsü Karakter dizisi (string) universite = "Sabanci" for harf in universite: print harf Dizide eleman var mı? Eğer dizide başka eleman kalmamışsa Döngü Değişkeni Dizideki bir sonraki eleman koşullu kod for dongu_degiskeni in dizi: kosullu kod 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu range() Fonksiyonu range(ilk,son,fark) bize bir aralıktaki değerleri veren bir fonksiyondur >>> 1 3 5 7 9 for i in range(1, 10, 2): print i >>> 10 8 6 4 2 for i in range(10, 1, -2): print i 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Örnek for i in range(10, 1, -1): print i >>> 10 9 8 7 6 5 4 3 2 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Başka Bir Örnek for i in range(1, 10, -1): print i Sonuç ne olurdu? 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu break komutu Döngüleri zamanından önce (döngü koşulu yanlış olmadan) sonlandırmaya yarar isim = raw_input("Sadece isminizi giriniz: ") for karakter in isim: if karakter == " ": break print karakter >>> Sadece isminizi giriniz: Husnu Yenigun H u s n 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu break Fonksiyonu Koşul Koşul for karakter in isim: if karakter == " ": break print karakter yanlış doğru Break koşulu Döngüden çık doğru yanlış döngü kodu 23.02.2019 Döngüden çık Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu continue Fonksiyonu for x in range(-2,3): if x == 0: continue print 1.0/x Koşul yanlış doğru continue koşulu >>> -0.5 -1.0 Traceback (most recent call last): File "C:\Users\Hüsnü\Desktop\temp\test.py", line 2, in <module> print 1.0/x ZeroDivisionError: float division by zero >>> -0.5 -1.0 1.0 0.5 doğru yanlış döngü kodu 23.02.2019 Döngüden çık Sabancı Üniversitesi Lise Yaz Okulu
Sabancı Üniversitesi Lise Yaz Okulu Ödev Sayı bulma oyunu Bilgisayar 1 ile 20 ([1,20]) arasında rasgele bir sayı seçer ve programa girer Oyuncu bu sayıyı dört tahminde bulmaya çalışır Birinci, ikinci ve üçüncü tahminlerinde bulamazsa program sayının tahminden büyük mü yoksa küçük mü olduğunu söyler Oyuncu dört hakkında da bilemezse oyunu kaybeder Programın başına aşağıdakini yazın import random sayi = random.randint(1, 20) 23.02.2019 Sabancı Üniversitesi Lise Yaz Okulu