python-beginner - 5 - for ve while döngüleri
numbers=[1,2,3,4,5]
for num in numbers: # numbers daki sayilari al ve num icine at
print (num," - Hi") # bu satırın indent olması şart
#
1 - Hi
2 - Hi
3 - Hi
4 - Hi
5 - Hi
names=['kenan','yasu','almushka']
for name in names:
print(f'my name is {name}')
#
my name is kenan
my name is yasu
my name is almushka
String`ler listedir
ad='shwarzeneger' # string, her harf bir liste elemanidir
for filarmoni in ad:
print(filarmoni)
#
s
h
w
a
r
z
e
n
e
g
e
r
Liste ile calisma
tuplex = [(1,2),(1,3),(3,5),(5,7)]
for a,b in tuplex:
print(a)
#
1
1
3
5
Dictionnary ile calisma
beklendigi gibi herseyi yazmaz:
dicoMate = {'k1':1,'k2':2,'k3':3}
for item in dicoMate:
print(item)
#
k1
k2
k3
her seyi yazmasi icin soyle yazilmali
dicoMate = {'k1':1,'k2':2,'k3':3}
for item in dicoMate.items():
print(item)
#
('k1', 1)
('k2', 2)
('k3', 3)
veya
dicoMate = {'k1':1,'k2':2,'k3':3}
for key,value in dicoMate.items():
print(key,"-",value)
#
k1 - 1
k2 - 2
k3 - 3
IF kosul ifadesi ile For #1
# cift sayiyi bul ve karesini al
sayilar=[1,3,5,7,9,12,19,21]
for maca in sayilar:
if (maca%2==0): #cift sayi mi kontrol
karego=maca**2
print(maca,f'karesi: {karego}')
# 12 karesi: 144
IF kosul ifadesi ile For #2
sehirler=['kocaeli','istanbul','ankara','izmir','rize']
for fivechar in sehirler:
if (len(fivechar)<=5):
print(fivechar)
dictionnary ile toplama
urunler = [
{'name':'S6','price':'3000'},
{'name':'S7','price':'4000'},
{'name':'S8','price':'5000'},
{'name':'S9','price':'6000'},
{'name':'S10','price':'7000'}
]
lokiToplam = 0
for urun in urunler:
lokiToplam += int(urun['price'])
print(lokiToplam)
#
25000
dictionnary ile kosul - fiyati 5000 altinda olan urunler
for priceurun in urunler:
if(int(priceurun['price'])<=5000):
print(f'Urun: {priceurun['name']} fiyati: {priceurun['price']}')
#
Urun: S6 fiyati: 3000
Urun: S7 fiyati: 4000
Urun: S8 fiyati: 5000
While
son sayi yazilmasi - hatali - aldigi deger degil, yeni deger ile print yapiyor
x=0
while x<4:
x+=1
print(x," - yo")
print('fso')
#
1 - yo
2 - yo
3 - yo
4 - yo # bu yazilmamasi gerekirdi- print yanlis yerde!
fso
son sayi yazilmamasi: dogru olan sekil
x=0
while x<4:
print(x," - yo")
x+=1
print('fso')
#
0 - yo
1 - yo
2 - yo
3 - yo
fso
string ile while kullanimi:
name=''#deger olmadaigi icin bunun degeri false
while not name.strip(): #while false - strip ile space yazilirsa=> bosluk del edilir
name = input('isminizi giriniz: ')
print(f'merhaba {name}')
#
isminizi giriniz:
isminizi giriniz: Suzi
merhaba Suzi
Continue ve break
name='Sadik Turan'
for letter in name:
if letter =='i':
continue
if letter =='r':
break
print(letter)
#
S
a
d
k
T
u
Sonsuz dongu hatalari:
Normal dongu:
x=0
while x<5:
if x==2:
break # 2 ye geldiginde burada durur
print(x)
x+=1
Sonsuz dongu:
x=0
while x<5:
if x==2:
continue # x=2`de takili kalir ve sonsuz donguye girer / x deger artisi yok
print(x)
x+=1
duzeltmesi:
x=0
while x<5:
x+=1 #yeri degistirilerek sonsuz donguye girmesi engelleniyor
if x==2:
continue
print(x)
Dongu metotlari
for item in range(4):
print(item) # boylece while kullanmadan,liste olmadan, sayma islemi yapilabiliyor
#
0
1
2
3
for item in range(4,8): # 4 ten basla 8 not included say
print(item)
#
4
5
6
7
for item in range(4,11,2): # 2 step atla
print(item)
#
4
6
8
10
liste`ye donusturerek yazma
oldugu gibi liste`ye atma
for item in range(4,8):
print(item)
print (list(range(4,8)))
#
4
5
6
7
[4, 5, 6, 7]
donusturerek liste`ye atma
for item in range(4,8):
print(item)
print (list(range(4,8,2)))
#
4
5
6
7
[4, 6]
for dongusu ile ileri listeleme (her index`i, index numarasi ile yazdirma)
klasik yontem:
index=0
greeting='Hello'
for letter in greeting:
print(f'index: {index} - letter: {letter}')
index+=1
#
index: 0 - letter: H
index: 1 - letter: e
index: 2 - letter: l
index: 3 - letter: l
index: 4 - letter: o
veya - dolayli yonden letter`a atifta bulunmak icin:
print(f'index: {index} - letter: {greeting[index]}')
ileri listeleme yontemi: enumerate - daha kisa yontemle ayni islem gerceklesiyor
greeting='Hello'
for index,letter in enumerate(greeting):
print(f'index: {index} - letter: {letter}') # not:'index=0' ve 'index+=1' kalkti
#
index: 0 - letter: H
index: 1 - letter: e
index: 2 - letter: l
index: 3 - letter: l
index: 4 - letter: o
detay: enumerate su sekilde string`i hafizaya atiyor
greeting='Hello'
for item in enumerate(greeting):
print(item)
#
(0, 'H')
(1, 'e')
(2, 'l')
(3, 'l')
(4, 'o')
Zip: birlesik listeler
list1=[1,2,3,4,5]
list2=['a','b','c','d','e']
list3=[100,200,300,400,500] # listeler tam esit degilse sondan itibaren yok sayar
for item in zip(list1,list2,list3):
print(item)
#
(1, 'a', 100)
(2, 'b', 200)
(3, 'c', 300)
(4, 'd', 400)
(5, 'e', 500)
Zip`in cuvalladigi yer: listelerde esit miktarda data yoksa, datalar ayni duzende gelmez
list1=[1,3,4,5]
list2=['a','b','c','d','e']
list3=[100,200,300,400,500]
for item in zip(list1,list2,list3):
print(item)
#
(1, 'a', 100)
(3, 'b', 200)
(4, 'c', 300)
(5, 'd', 400)
Zip filtreleme:
list1=[1,2,3,4,5]
list2=['a','b','c','d','e']
list3=[100,200,300,400,500]
for a,b,c in zip(list1,list2,list3): # a : list1 - b : list2 - c : list3
print(b) # print list2 ile ayni
#
a
b
c
d
e
List comprehensive
klasik listeye atma
numbers=[]
for x in range(10):
numbers.append(x)
print(numbers)
#
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Comprehensive liste`ye atma - for dongusu ile ayni sey daha farkli yontemle elde ediliyor
numbers = [x for x in range(10)]
print(numbers)
#
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
ekstra - konu disi - Janjanli şekilli:
numbers=[]
for x in range(10):
numbers.append(x)
print(numbers) # sadece indent ederek dongu icine alarak sekil uretebiliriz
#
[0]
[0, 1]
[0, 1, 2]
[0, 1, 2, 3]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5, 6, 7]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
comprehensive list ile islem yaparak listeye atma
numbers = [x**2 for x in range(10)]
print(numbers)
#
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
comprehensive list ile for ve if beraber kullanimi
sadece 3`e bolunebilenler liste`ye
numbers = [x**2 for x in range(10) if x%3==0]
print(numbers)
#
[0, 9, 36, 81]
if once yazilmasi icin else sarti gerekiyor
numbers = [x**2 if x%3==0 else 'ho' for x in range(10)]
print(numbers)
#
[0, 'ho', 'ho', 9, 'ho', 'ho', 36, 'ho', 'ho', 81]
comprehensive list`de dongu icinde dongu
klasik
result=[]
for x in range(3):
for y in range(3):
result.append((x,y))
print(result)
#
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
comprehensive liste ile ayni sey:
numbers = [(x,y) for x in range(3) for y in range(3)]
print(numbers)
#
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
ekstra - eger ki x ve y yi gerektigi gibi yazmaz isek:
numbers = [x for x in range(3) for y in range(3)]
print(numbers)
#
[0, 0, 0, 1, 1, 1, 2, 2, 2]
ekstra- dictionnary seklinde sonucu ister gibi yazmak:
ilginc olan sey: dictionnary cift veriyi icinde saklamiyor tek`e dusuruyor:
mesela {0}, {1}, {2} - bunlarin {0,0} seklinde olmasini beklerdik
Bu da dictionnary nin ozelligi, illa her veri farkli olmasi sarti var.
numbers = [{x,y} for x in range(3) for y in range(3)]
print(numbers)
#
[{0}, {0, 1}, {0, 2}, {0, 1}, {1}, {1, 2}, {0, 2}, {1, 2}, {2}]
Comprehensive list`in string ile kullanimi
myString = 'Hello'
myList = [letter for letter in myString]
print(myList)
#
['H', 'e', 'l', 'l', 'o']
Comprehensive list ile hesaplama
yaş hesaplama
years=[1983,1999,2008,1956,1986]
ages = [2019-year for year in years]
print(ages)
#
[36, 20, 11, 63, 33]
Demo app
- 1 -
urunler=[]
adet = int(input('kac urun eklemek istiyorsunuz'))
i=0
while (i<adet):
name = input('urun ismi: ')
fiyat = input('urun fiyati: ')
urunler.append({
'name':name,
'fiyat':fiyat
})
i+=1
for urun in urunler:
print(f'urun adi: {urun["name"]} - urun fiyati: {urun["fiyat"]}')
#
urun adi: db - urun fiyati: 12
urun adi: stereo - urun fiyati: 87
urun adi: kalos - urun fiyati: 34
- 2 -
numbers = []
i = 0
while i<5:
sayi = int(input('sayi:'))
numbers.append(sayi)
i+=1
numbers.sort()
print(numbers)
#
sayi:5
sayi:8
sayi:10
sayi:4
sayi:1
[1, 4, 5, 8, 10]
- 3 - random sayi
Comments
Post a Comment