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

Popular posts from this blog

python - pro - 20 - SQLite

python - pro - 21 - NoSQL

python-beginner - 1 - strings splits