Çözüldü While döngüsü

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Ark_Us

Kilopat
Katılım
7 Nisan 2017
Mesajlar
853
Makaleler
1
Çözümler
7
Herkese merhaba, bana verilen 5 tane uygulama sorusu var içinde bir soruyu yapabilmem için bu uygulamayı anlamam gerekiyor. Anlatan hoca sağ olsun eksik bilgi vekmekte üstüne yoktur. Şimdi ben bu uygulamaya bakarak bu soruyu yaptım ama anlamayarak yaptığım için sizden anlatmanızı rica edeceğim.

Python:
liste = [1,2,3,4,5]

a = 0.

while (a < len(liste)):
print("Indeks:",a,"Eleman:",liste[a])
a +=1.

# bu koda bakarak yaptıgım uygulama.
sayılar = [1,3,5,7,9,12,19,21]
a = 0.

while (a < len(sayılar)):
print(sayılar[a])
a += 1

Yardımlarınızı bekliyorum.
 
Çözüm
Python:
liste = [1,2,3,4,5]

a = 0

while (a < len(liste)):
    print("Indeks:",a,"Eleman:",liste[a])
    a +=1.

# bu koda bakarak yaptıgım uygulama.
sayılar = [1,3,5,7,9,12,19,21]
a = 0

while (a < len(sayılar)):
    print(sayılar[a])
    a += 1

Şimdi sıfırdan inceleyelim:
İlk önce [1,2,3,4,5] diye bir liste oluşturulmuş.

Sonra "a" değişkeni 0 olarak atanmış.

While döngüsü ise şöyle:

While döngüsü nasıl çalışır:
While döngüsüne koşul olarak "True" yani doğru verilirse döngü devam eder. "False" yani yanlış olursa döngü bozulur.


Şimdi bizim listemiz neydi, [1,2,3,4,5]. Değerler "0"dan başlar, yani ilk değer "0" son değer ise listedeki eleman sayısı - 1 olur. Neden -1? Çünkü elemanlar sayma sayısı gibi değil, 1. elemanı alınca ilk elemanı almazsınız. 0. elemanı alınca ilk elemanı alırsınız.

Python:
while a<len(liste):
Burada kastedilen şey ise:
0 olarak tanımladığımız "a" değişkeni eğer listenin eleman sayısından küçük olduğu sürece alttaki işlemleri yap.

Şimdi, liste uzunluğu kaç? Kaç eleman var listede? 5 eleman var.
İlk elemana liste[0], son elemena da liste[4] ile ulaşırız. Neden? Çünkü elemanlar "0"dan başlar.
O zaman "a" değişkeni şu an 0. Liste uzunluğu yani len(liste) = 5.

Şimdi 5 eleman varsa ve son elemanı "4" ile alıyorsak ne olacak?
Python:
while a<len(liste):
    print(liste[a])
    a+=1
"a" değişkeni listenin eleman sayısı yani 5'ten küçük olduğu sürece yap (Şu an "a=0" olduğu için "True" yani koşul sağlanır.):
Listenin a'ıncı değerini yaz. Şimdi a = 0 ise, liste[a] nedir? "liste[0]". Listenin 0. elemanı nedir? "1". Yani listenin ilk elemanı. O zaman bize listenin ilk elemanını yazdıracak.

Sonrasına "a" değişkeni 1 artacak ve "1" olacak, yani "0" değerine 1 eklenip 1 olacak. 0+1=1.

Şimdi "while" döngüsü tekrar koşulumuza bakacak. "a" değişkeni listenin eleman sayısından küçük mü? Evet, şu an "a = 1" ve "len(liste) = 5". Yani "a<len(liste)" = "1<5", yani doğru. Doğru olunca tekrar bakacak.

Bu sefer koşul yine sağlandı, ne olacak? "a=1" idi. Tekrardan listenin a'ıncı değerini yazdıracak. Yani listenin 1. değeri ne? "[1,2,3,4,5]" 0. değer 1, "1. değer 2". Bu sefer de print(liste[1]) olacak ve "2" çıktısı verecek.

Bu şekilde "a" değişkeni "5" olana kadar yapılacak.

Şimdi "a" 5 iken koşula tekrar bakalım.
Python:
a<len(liste)
a değeri 5, listenin eleman sayısı da 5. 5<5 yani 5 değeri 5'ten küçük müdür? Hayır, eşittir. Koşulumuz False yani yanlış olduğu için listeden çıkılır.

Peki döngüden çıkılmasaydı ne olurdu?
"a" değeri = 5 diyelim ve döngü de sağlansın.
O zaman liste[5] değerini yazdıracak ama listenin son değeri "4" çünkü liste elemanları "0"dan başlıyor. Burada 5. değer olmadığı için hata verecek.

Bu döngüyü "for" döngüsü ile de yapabiliriz.
Python:
liste = [1,2,3,4,5]
for i in liste:
    print(liste[i])
For döngülerini biliyorsanız böyle daha kolay olacaktır.

En detaylı şekilde açıklamaya çalıştım, sorunuz olursa yazın.

"While döngüsü nedir?" adlı konudaki sorunuza da anlatmıştım:
Gerçekden çok teşekkür ederim sayenizde aklımda soru işareti kalmadı sadece şunu merak ettim for i in sayılar print(i) dediğimiz zaman i değeri listeyi tek tek dolaşıp hepsini basıyor while gelirsek oluşturduğumuz değişken for döngüsü gibi mi çalışıyor yoksa farklı çalışma mantığımı var.
 
Gerçekden çok teşekkür ederim sayenizde aklımda soru işareti kalmadı sadece şunu merak ettim for i in sayılar print(i) dediğimiz zaman i değeri listeyi tek tek dolaşıp hepsini basıyor while gelirsek oluşturduğumuz değişken for döngüsü gibi mi çalışıyor yoksa farklı çalışma mantığımı var.
Öncelikle rica ederim.
Sorunuza gelirsek, aynen dediğiniz gibi. Oluşturduğumuz değişken "for" döngüsü gibi sırayla her elemanı geziyor. Döngünün içinde değişkenimizi hep 1 arttıyoruz. Bu şekilde listedeki bir sonraki elemanı alıyor. For döngüsünde ise değişkeni sizin arttırmanıza gerek kalmıyor, otomatik artıyor. Yani "for" döngüsünde kodlar arasında "a+=1" yazmanıza gerek yok, o sırayla alıyor. While döngüsünde ise listedeki elemanların a'ıncı değerini alıyor. "a'ıncı değer" ne demek? Mesela "a=0" ise sıfırıncı yani ilk değer, "a=1" ise ikinci değeri alıyor. Mesela kodlarda a, 0. değerini alıyor diyelim, sonra biz kodlar arasına "a+=1" yazıyoruz, yani "a" değişkeni 1 artıyor. O zaman da 1. değerini alıyor. Böyle böyle 1 artarak "İkinci, üçüncü, dördüncü" diye gidiyor ve her elemanı alıyor. Ama "while" döngüsünde biz "a+=1" yazmasaydık "a" değişkeni hep aynı kalırdı. Yani durmadan mesela 0. değeri alırdı. Sonraki elemana geçmezdi. Bu yüzden "a+=1" yaptık. Dediğim gibi "for" döngüsü "a" değişkenini arttırma olayını kendi içinde yapıyor, yani bizim kodlar arasına yazmamıza gerek kalmıyor. Böyle durumlarda, değişkeni arttırma işlemi ile uğraşmamak için genelde "for" kullanılır ancak "while" da çok kullanışlıdır, genelde de farklı yerlerde kullanılır. İlerde görürsünüz muhtemelen.
Yani kısaca: Evet, "for" döngüsü gibi çalışıyor.
 
Son düzenleme:
Tekrardan merhaba ize bir soru daha sormak istiyorum bu soruyu birkaç kişiye daha sordum ama gene birkaç soru işareti kaldı.

Python:
baslangıc = (int(input("sayı1 giriniz: ")))
bıtıs = (int(input("sayı2 giriniz: ")))

a = baslangıc.

while a < bıtıs:
a += 1.
if a %2 == 1:
print(a)

Bu kod (ya da algoritma) bu kodu da anlamakda sorun yaşıyordum sayenizde şu an rahat bir şekilde anlıyorum sorum ise a += 1 ve print yer degiştirdiğimiz zaman sonuç farklı çıkıyor (if blogunu yok sayın) şöylede örnek verirsem 1 ve 5 sayı giriyorum sonuç ise 2'den başlayıp 5'de sona eriyor ama a += 1 ve printin yerini değiştirirsek o zaman sonuç farklı çıkıyor diğer sonuç ise 1'den başlayıp 4 sona eriyor bunun sebebi nedir acaba?
 
Hocanız eksik anlatmıyor. Sadece her şeyi benden beklemeyin oturup üstüne düşünün kafasında bir insan. Hoca size while anlatır daha sonra len() anlatır. Sonra sizden kod yazmanızı, deneyip yanılmanızı ister. Programlamacılık biraz da böyle işler.
 
Tekrardan merhaba ize bir soru daha sormak istiyorum bu soruyu birkaç kişiye daha sordum ama gene birkaç soru işareti kaldı.

Python:
baslangıc = (int(input("sayı1 giriniz: ")))
bıtıs = (int(input("sayı2 giriniz: ")))

a = baslangıc

while a < bıtıs:
    a += 1
    print(a)

Bu kod (ya da algoritma) bu kodu da anlamakda sorun yaşıyordum sayenizde şu an rahat bir şekilde anlıyorum sorum ise a += 1 ve print yer degiştirdiğimiz zaman sonuç farklı çıkıyor (if blogunu yok sayın) şöylede örnek verirsem 1 ve 5 sayı giriyorum sonuç ise 2'den başlayıp 5'de sona eriyor ama a += 1 ve printin yerini değiştirirsek o zaman sonuç farklı çıkıyor diğer sonuç ise 1'den başlayıp 4 sona eriyor bunun sebebi nedir acaba?
Python:
while a<bitis: #Yani "while 1<5:"
    a+=1 #Burada "a" değeri 1 arttı. Artık "a=2".
    print(a) # "a" yazdırıldı. 2 çıktısı verdi.
    #Burada "a" değeri 2 iken "4" olana kadar devam edecek.
    #4 olunca da "while a<bitis" yani "while 4<5:".
    #Kod çalışacak ve 4 olan "a" yine artacak. Sonra yazdıracak ve 5 çıktısı verecek.
    
"""Peki diğer şekilde nasıl olur?"""

while a<bitis: #Yani "while 1<5:"
    print(a) # "a" yazdırıldı. 1 çıktısı verdi.
    a+=1 #Burada "a" değeri 1 arttı. Artık "a=2".
    #Yani önce yazdırılacak, sonra artacak.
    #Burada da 4 çıktısı verdi diyelim en son.
    #Sonra a yine 1 artacak ve 5 olacak.
    #5 olunca koşul kontrol edilecek
    #"while a<bitis" yani "while 5<5" oldu. 5<5 doğru mudur? Hayır, eşittir. Döngü bitecek. En son 4 değeri yazılmış olacak.
    
"""Peki nasıl yapmalıyız?"""

while a<bitis+1:
    print(a)
    a+=1
    #Burada bitişi 1 arttırarak son değeri de işim içine katarız.
while a(1)<bitis(5):
 
Cevabınız için teşekkürler bu yazıdan şöyle bir sonuç çıkar döngü başlayınca a otodan 1 sayısı oluyor sıralamaya göre a değişkenini bir artırıp ya da bir azaltılacak.
 

Geri
Yukarı