Bu dersteki bütün IPython Notebook'lar adresinde https://github.com/sinanonur/Python-Lectures mevcuttur ve bu adresteki içerik Türkçe'ye çevirilerek hazırlanmıştır. Bazı kısımlarda değişiklik yapılmıştır.
if koşul:
algoritma
x = 12
if x >10:
print "merhaba"
merhaba
if bir_koşul:
algoritma
else:
algoritma
x = 12
if x > 10:
print "merhaba"
else:
print "dünya"
merhaba
if bir_koşul:
algoritma
elif bir_koşul:
algoritma
else:
algoritma
x = 10
y = 12
if x > y:
print "x>y"
elif x < y:
print "x<y"
else:
print "x=y"
x<y
Bir if ifadesinin içinde başka bir if ifadesi yer alıyorsa buna iç-içe girmiş if (nested if)ifadesi denir.
x = 10
y = 12
if x > y:
print "x>y"
elif x < y:
print "x<y"
if x==10:
print "x=10"
else:
print "gecersiz"
else:
print "x=y"
x<y x=10
for değişken in bir_şeyler:
algoritma
for i in range(5):
print i
0 1 2 3 4
Yukarıdaki örnekte i 0,1,2,3,4 üzerinden tekrarlanır. Her değeri aldığında döngünün içerisindeki algoritmayı çalıştırır. İç içe geçmiş (nested) listelerin üzerinden değer almak da aşşağıdaki gibi mümkündür.
list_of_lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for list1 in list_of_lists:
print list1
[1, 2, 3] [4, 5, 6] [7, 8, 9]
İç içe girmiş for döngüsü için örnek bir kullanım aşşağıdaki gibi olabilir.
list_of_lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for list1 in list_of_lists:
for x in list1:
print x
1 2 3 4 5 6 7 8 9
while koşul:
algoritma
i = 1
while i < 3:
print(i ** 2)
i = i+1
print('Bye')
1 4 Bye
Bir döngüyü çalıştırırken döngüden çıkmaya yarar.
for i in range(100):
print i
if i>=7:
break
0 1 2 3 4 5 6 7
Burada if koşulu sağlandığında break çalışarak döngüyü sonlandırmıştır.
Döngünün geri kalanını çalıştırmaya devam eder. O adımın geri kalan kısmı çalıştırılmaz.
Bazen bir koşul sağlandığında döngünün sonlanma ihtimali vardır. bu continue kullanılarak önlenebilir.
for i in range(10):
print 1.0/(i-5)
-0.2 -0.25 -0.333333333333 -0.5 -1.0
--------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) <ipython-input-17-cf5579d0f432> in <module>() 1 for i in range(10): ----> 2 print 1.0/(i-5) ZeroDivisionError: float division by zero
for i in range(10):
if(i == 5):
continue
print 1.0/(i-5)
-0.2 -0.25 -0.333333333333 -0.5 -1.0 1.0 0.5 0.333333333333 0.25
Pyhon gerekli bir listeyi oluşturmayı list comprehensionlar kullanarak tek satırda çok kolay hale getirmiştir. Örneğin 27nin katlarına ihtiyacımız olduğunda aşşağıdaki kodu yazabiliriz.
res = []
for i in range(1,11):
x = 27*i
res.append(x)
print res
[27, 54, 81, 108, 135, 162, 189, 216, 243, 270]
Yepyeni bir liste oluşturduğumuz için list comprehension daha etkili bir yöntemdir.
[27*x for x in range(1,11)]
[27, 54, 81, 108, 135, 162, 189, 216, 243, 270]
Bu kadar! Sadece köşeli parantezi kapatmayı unutmayın.
Kodu anlamak için, kodun ilk kısmı her zaman çalışan algoritmadır. sonra bir boşluk bırakılarak gerekli döngü yazılır.
Peki iç içe geçmiş listelerle list comprehention kullanabilir miyiz? Tabii ki evet.
[27*x for x in range(1,20) if x%5==0]
[135, 270, 405]
Bir döngü daha ekleyelim:
[27*z for i in range(50) if i==27 for z in range(1,11)]
[27, 54, 81, 108, 135, 162, 189, 216, 243, 270]