Bilgisayar Programlamasına ve Veri Analizine Giriş - III Erkay Savaş Sabancı Üniversitesi Lise Yaz Okulu.

Download Report

Transcript Bilgisayar Programlamasına ve Veri Analizine Giriş - III Erkay Savaş Sabancı Üniversitesi Lise Yaz Okulu.

Bilgisayar Programlamasına ve
Veri Analizine Giriş - III
Erkay Savaş
Sabancı Üniversitesi
Lise Yaz Okulu
2015
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)
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
2
Gerçek Sayılar
• Gerçek sayılar
• Örnek
sayi = input("Bir sayi giriniz: ")
print "Bu sayinin yarisi: ", sayi/2
sayi = float(raw_input("Bir sayi giriniz: "))
print "Bu sayinin yarisi: ", sayi/2
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
>>>
Bir sayi giriniz: 5
Bu sayinin yarisi: 2
>>>
>>>
Bir sayi giriniz: 5
Bu sayinin yarisi: 2.5
>>>
3
Veri Tipleri
• str()
– Karakter dizisine dönüştürür (“Erkay”)
• 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
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
4
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 bir koşul gerçekleşiyorsa/doğruysa program bir
işi yapar
• Aksi takdirde yapmaz
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
5
İf-else koşulu
Eğer koşul doğru ise
Koşul
???
Eğer koşul yanlış ise
if kodu
else kodu
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
6
if-else koşulu: Örnek
sayi = int(raw_input("Bir sayi giriniz: "))
if sayi > 5:
print "Girdiginiz sayi 5'ten buyuktur "
else:
Yazılma Biçimine dikkat!
print "Girdiginiz sayi 5'ten buyuk degildir"
>>>
Bir sayi giriniz: 7
Girdiginiz sayi 5'ten buyuktur
>>>
Bir sayi giriniz: 4
Girdiginiz sayi 5'ten buyuk degildir
>>>
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
7
if-elif-else Koşullu İfadeleri
• Eğer koşullar daha karmaşık ise elif ifadeleri ve
and kullanılır
• Ö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 10 ile 21 arasindadir"
elif sayi > 20 and sayi <= 30:
print "Girdiginiz sayi 20 ile 31 arasindadir"
else:
print "Girdiginiz sayi 30'dan bile buyuktur"
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
8
Küçük Ö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.
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
9
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'
…
06.11.2015
…
elif Not >= 60:
harf_notu = 'D'
else:
harf_notu = 'F'
if harf_notu == 'F':
print "Harf Notunuz: ", harf_notu
print "Uzgunum Kaldiniz:(:("
else:
print "Harf Notunuz: ", harf_notu
print "Tebrikler Gectiniz:):)"
Sabancı Üniversitesi Lise Yaz Okulu
10
Unutmayın
• Sona else ifadesi koyun!
• Bu hiçbir koşulun gerçekleşmediği durumlarda işe
yarayacaktır.
• Aksi takdirde hata mesajı alırsınız
Traceback (most recent call last):
File "C:/Users/Erkay
Savaş/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
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
11
Bool Değerleri
• Her bir koşul test edildikten sonra, bir Bool değeri
oluşur
– “doğru” ya da “yanlış”;
– “evet” ya da “hayır”; 0 ya da 1
Bool ifadesi
<
06.11.2015
İş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şit değildir
Eşittir
Sabancı Üniversitesi Lise Yaz Okulu
12
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.
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
13
Ş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"
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
14
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"
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
15
Çalıştırırsak
>>>
Lutfen sifrenizi giriniz: qwert123
Traceback (most recent call last):
File "C:/Users/Erkay
Savaş/Documents/classes/lise_yaz_okulu/python/modul
e_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
>>>
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
16
Ne Yapmamız Gerekiyordu?
>>>
Lutfen sifrenizi giriniz: "qwert123 "
Hos geldiniz
>>> Lutfen sifrenizi giriniz: "erkay"
Yanlis sifre girdiniz
>>>
Ya da raw_input() fonksiyonunu kullanırız.
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
17
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.
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
18
Çö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: ")
if girilen_sifre == dogru_sifre:
print "Hos geldiniz"
else
print "Yanlis sifre girdiniz"
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
19
Yaz Üç 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: ")
if girilen_sifre == dogru_sifre:
print "Hos geldiniz"
else:
girilen_sifre = raw_input("Lutfen sifrenizi tekrar giriniz: ")
if girilen_sifre == dogru_sifre:
print "Hos geldiniz"
else:
print "Yanlis sifre girdiniz"
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
20
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
print tek_sayi
tek_sayi = tek_sayi+2
print tek_sayi
tek_sayi = tek_sayi+2
print tek_sayi
tek_sayi = tek_sayi+2
print tek_sayi
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
21
Döngüler
• Bilgisayara aynı işlemi defalarca yapmasını
söylemenin daha kolay bir yolu var
• while döngüsü
tek_sayi = 1
>>>
1
while tek_sayi <= 10:
3
print tek_sayi
5
7
tek_sayi = tek_sayi + 2
9
>>>
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
22
Ne, Nasıl Oldu?
• tek_sayi = 1
• Kontrol: tek_sayi <= 10
– print tek_sayi  print 1
– tek_sayi = tek_sayi + 2  tek_sayi = 3
• Kontrol: tek_sayi <= 10
– print tek_sayi  print 3
– tek_sayi = tek_sayi + 2  tek_sayi = 5
• Kontrol: tek_sayi <= 10
– print tek_sayi  print 5
– tek_sayi = tek_sayi + 2  tek_sayi = 7
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
23
Ne, Nasıl Oldu?
• Kontrol: tek_sayi <= 10
– print tek_sayi  print 7
– tek_sayi = tek_sayi + 2  tek_sayi = 9
• Kontrol: tek_sayi <= 10
– print tek_sayi  print 9
– tek_sayi = tek_sayi + 2  tek_sayi = 11
• Kontrol: tek_sayi <= 10
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
24
while döngüsü
• while ile sonsuz döngü
x=1
…
while x == 1:
Sonsuza Kadar Giderim
print "Sonsuza Kadar Giderim" Sonsuza Kadar Giderim
Sonsuza Kadar Giderim
Sonsuza Kadar Giderim
Traceback (most recent call last):
File "C:/Users/Erkay
Savaş/Documents/classes/lise_yaz_okulu/python/mod
ule_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
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
25
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:):)"
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
26
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:):)"
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
27
while Döngüsü
Koşul
Koşul
???
Eğer koşul
yanlış ise
tek_sayi = 1
while tek_sayi <= 10:
print tek_sayi
tek_sayi = tek_sayi + 2
Eğer koşul doğru ise
Koşullu kod
koşullu kod
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
28
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.
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
29
Peki Biraz Kolaylaştıralım
• Progam 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
–
–
–
–
06.11.2015
1+2=3
3+3=6
6 + 4 = 10
…
Sabancı Üniversitesi Lise Yaz Okulu
30
Tamsayıları Topluyoruz
• İki değişken
– i: 1’den n’ye 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 ???
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
31
i=1
toplam = 0
Tamsayıları Topluyoruz
• Eğer i < n
– toplam = toplam + i
– i = i +1
i<n
• Aksi takdirde
True
– Bitti, toplam değişkenini bas
i=1
toplam = 0
while i < n:
toplam = toplam + i
i = i +1
print toplam
06.11.2015
False
toplam = toplam + i
i=i+1
Sabancı Üniversitesi Lise Yaz Okulu
toplam’ı
ekrana bas
32
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)
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
33
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)
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
34
Kullanıcı Ya Sayıdan Başka Bir Şey
Girerse?
>>>
Pozitif bir tamsayi giriniz: e
Traceback (most recent call last):
File "C:/Users/Erkay
Savaş/Documents/classes/lise_yaz_okulu/python/m
odule_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'
>>>
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
35
Şöyle Yapmak Gerekir
while True:
try:
Girdi = int(raw_input("Bir sayi giriniz:"))
except ValueError:
print "Sayi girmediniz!"
continue
else:
print "Aferin! Sayi girdiniz"
break
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
36
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.
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
37
Çözüm
n = int(raw_input(“Pozitif bir 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)
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
38
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
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
39
Çözüm
print "Toplamlar Programina Hos Geldiniz"
devam = 'E'
while devam == 'E' or devam == 'e':
n = int(raw_input("Bir 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"
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
40
for Döngüsü
• Belirli bir aralıkta tekrar yapmak için kullanılır
for i in range(1, 5):
print i
isim = "Erkay"
for harf in isim:
print harf
06.11.2015
>>>
E
r
k
a
y
Sabancı Üniversitesi
>>>Lise Yaz Okulu
>>>
1
2
3
4
>>>
41
for Döngüsü
Dizide
eleman
var mı?
Dizideki
Eğer dizide başka
eleman kalmamışsa
isim = "Erkay"
for harf in isim:
print harf
Döngü
Değişkeni
bir sonraki eleman
koşullu kod
06.11.2015
Karakter dizisi (string)
for dongu_degiskeni in dizi:
kosullu kod
Sabancı Üniversitesi Lise Yaz Okulu
42
range() Fonksiyonu
• range(alt,ust,fark) bize bir aralıktaki
değerleri veren bir fonksiyondur
for i in range(1, 10, 2):
print i
>>>
10
8
for i in range(10, 1, -2):
6
print i
4
2
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
>>>
>>>
1
3
5
7
9
>>>
43
Örnek
for i in range(10, 1, -1):
print i
06.11.2015
>>>
10
9
8
7
6
5
4
3
2
>>>
Sabancı Üniversitesi Lise Yaz Okulu
44
Başka Bir Örnek
for i in range(1, 10, -1):
print i
• Sonuç ne olurdu?
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
45
break komutu
• Döngüleri zamanından önce sonlandırmaya yarar
isim = raw_input("Sadece isminizi giriniz: ")
for karakter in isim:
if karakter == " ":
break
print karakter
06.11.2015
>>>
Sadece isminizi giriniz: Erkay Savas
E
r
k
a
y
>>>
Sabancı Üniversitesi Lise Yaz Okulu
46
break Fonksiyonu
Koşul
yanlış
doğru
Break
koşulu
Koşul
for karakter in isim:
if karakter == " ":
break
print karakter
doğru
Döngüden çık
yanlış
döngü kodu
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
Döngüden çık
47
continue Fonksiyonu
Koşul
yanlış
doğru
doğru
continue
koşulu
yanlış
döngü kodu
06.11.2015
isim = raw_input("İsminizi Giriniz: ")
for karakter in isim:
if karakter == ",":
continue
print karakter
>>>
Isminizi Giriniz: Erkay,
E
r
k
a
y
>>>
Sabancı Üniversitesi Lise Yaz Okulu
Döngüden çık
48
Ö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 mi 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)
06.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
49