Python'da While Döngüsü, Break ve Continue komutları | Ders 5

in #utopian-io7 years ago (edited)

python-logo.png

Ne Öğreneceğiz ?

  • Döngü nedir, mantığı nasıl işler, Python'da nasıl kullanılır ?
  • while fonksiyonu
  • break komutu
  • continue komutu

Gereksinimler

Zorluk Seviyesi

  • Orta

Ders İçeriği

Döngü Nedir ?
Arkadaşlar öncelikle öğreneceğimiz bu fonksiyonun mantığını oturtmamız gerekir. Benim için programlama da en temel ve önemli şey döngülerdir. Eğer döngü mantığını tam oturtursanız kalan şeyler sadece ezber niteliğinde olacaktır. Döngü'yü Bir olayın istediğiniz sonuca varana kadar tekrar etmesi diye tanımlayabilirim.

Basit bir örnek üzerinde while'ı anlamaya çalışalım.
Mesela programımız 1'den 10'a kadar saysın:
i = 1
while i<10
i = i+1
print(i)

Gördüğünüz gibi programımız 1'den başlayarak 1 artırarak ekrana yazdı:

Hatırlarsanız değişkenleri anlatırken size değişken ile ilgili son komut ne olursa değişken o komuta bağlı olur demiştim. Burada da işte o mantık devreye giriyor, while döngüsü içerisinde i'yi i+1'e eşitledik. Son komutumuz i+1 olduğundan artık i'miz 2 ye eşit, bu şekilde döngü devam ediyor(başa sarıyor), peki nereye kadar ? while koşulunun yanında belirttiğimiz yere yani i<10 koşulu devam edene kadar.
Kısacası biz programa dedikki; 1'den başlayarak 10'dan küçük sayıları yaz.
Herhangi bir hatada veya i'nin artırımı yapılmadığı gibi durumlarda, yani koşulun sürekli saglandığı durumlarda program sonsuz döngüye girebilir, bu çalışma ortamınızın veya programınızın kilitlenmesine neden olabilir.

Size while içerisinde kullanılan bir komuttan bahsedeyim: break
break komutu döngüyü sonlandırmaya yarar. Mesela yukarıda ki örneğin aynısını yazalım fakat i değeri 7 sayısına ulaşınca program dursun diyelim;
i = 1
while i<10
i = i+1
if i==7:
break
print(i)

Gördüğünüz gibi 1'den başladı, 7'ye ulaşınca break komutu devreye girdi ve program durdu.

Bir de continue komutumuz var, bu da verdiğimiz koşulun olması durumunda döngüyü direk başa sarıyor. Şöyle ki, diyelim bizim 5 tane koşulumuz var while döngüsünün altında. 3. koşulumuzun sağlanması durumunda başa sarmasını istiyoruz döngünün, burada işte continue komutu devreye giriyor. Bu komutu da kullanabileceğimiz toplu bir örnek yapalım şimdi:
while(True):
sayi1 = int(input("Bir sayı girin:"))
if sayi1 <5:
print("5den küçük")
break
elif sayi1>5:
print("5den büyük")
break
else:
print("lütfen pozitif sayı girin")
continue

Çalıştıracak olduğumuzda;

Gördüğünüz gibi 15 sayısını girdim ve program 5'den büyük koşuluna uyarak istediğimiz yazıyı yazdı ve daha sonra döngü break komutu ile sonlandı. Peki bir de continue komutu ile başa saracak mı bakalım, bunun için negatif değer giriyoruz;

Bakın yine 5'den küçük sonucunu verdi, halbu ki biz continue ile tekrar etmesini bekliyorduk programın. Peki neden böyle oldu derseniz, hatırlarsanız değişkenler için son komut neyse o hali alır demiştik, hatta yukarda da bahsettim. Döngülerde ise bu durum tam tersidir, yani koşulu ilk sağlayan durum döngümüzün sonucudur, isterseniz birinci ve sonuncu satırın yerini değiştirerek bunu test edelim, o halde programımızın continue ile tekrar etmesi gerekir:

Gördüğünüz gibi, program kendini tekrar etti. Döngü mantığını ve while'ı, break ve continue'yi anlamış olduk. Şimdi daha güzel bir örnek yapalım tüm bu öğrendiklerimiz ile.

Çok klasik olacak ama artık kullanıcı giriş programı yazmanın zamanı geldi :) Bir admin panel girişi yazalım mesela arkadaşlar tüm öğrendiklerimizi kullanarak.

  • Arkadaşlar şimdi düşündüğümüzde, bir kullanıcı girişine (kullanıcı adı, şifre) kaç farklı giriş(ihtimal) olabilir ?
    • Kullanıcı adı doğru şifre yanlış, şifre doğru kullanıcı adı yanlış, ikisi de yanlış
    • Kullanıcı adı veya şifre veya ikisi de boş
    • Kullanıcı adı ve şifre doğru
      Bu ihtimalleri göz önünde bulunarak ben şöyle yazmak istiyorum;
  • Kullanıcı adı ve şifrenin doğru olduğu ihtimali if ile yazdırmak
  • Kullanıcı adı veya şifreden herhangi birinin yanlış olması durumu (boşta olabilir)
    Yani iki duruma düşürdüm tüm bu olayları, koda döktüğümde if kullanıcı adı ve şifre doğru veya else diğer tüm ihtimaller (doğru olmayan tüm ihtimaller benim için yanlıştır) veya elif kullanıcı adı veya şifrenin yanlış olması (yine bu koşulda da geriye başka ihtimal kalmıyor)
    Bakalım:
    ausername = "cryptoadamc"
    asifre = "utopian"
    while(True):
    username = input("Kullanıcı adı: ")
    sifre = input("Şifre: ")
    if username==ausername and sifre==asifre:
    print("Giriş başarılı")
    break
    elif username!=ausername or sifre!=asifre:
    print("Kullanıcı adı veya şifre hatalı, tekrar deneyin")
    continue

Çalıştırdığımızda:

Gördüğünüz gibi ilk deneme de yanlış girdim, ikinci de boş girdim, üçüncü de doğru girdim.

Yukarıda kurduğumuz ikinci mantığı deneyelim (else ile):
ausername = "cryptoadamc"
asifre = "utopian"
while(True):
username = input("Kullanıcı adı: ")
sifre = input("Şifre: ")
if username==ausername and sifre==asifre:
print("Giriş başarılı")
break
else:
print("Kullanıcı adı veya şifre hatalı, tekrar deneyin")
continue

Çalıştıralım:

Gördüğünüz gibi, yine aynı şekilde çalıştı. Yani programımız şunu yaptı;
Kullanıcı adı ve şifreler zaten bizim tarafımızdan belirlenmiş (cryptoadamc,utopian), while döngüsü altında bizden kullanıcı adı ve şifre girmemizi istedi, girdik, ilk if koşuluna baktı eğer belirlenen kullanıcı adı ve şifre ile eşleşmediyse diğer koşula geçti, o koşulumuz else veya elif baktı zaten ilk koşul ile eşleşmeyen bu koşul ile eşleşmek zorunda çünkü başka bir ihtimal yok, print ile istediğimiz metni yazdırdı ve continue komutu ile döngüyü başa aldı, tekrar kullanıcı adı ve şifre istedi bizden. Böylece yanlış eşleşme durumunda giriş yapmayıp, doğru eşleşme durumunda başarı ile giriş yapmış olduk.

Bu örneğimiz ile dersimizin de sonuna geldik, tekrar etmeyi ve alıştırmalar yapmayı unutmayın.
Selametle..

Önce ki Dersler



Posted on Utopian.io - Rewarding Open Source Contributors

Sort:  

Your contribution cannot be approved because it does not follow the Utopian Rules.

Coin Marketplace

STEEM 0.16
TRX 0.16
JST 0.031
BTC 58927.54
ETH 2514.69
USDT 1.00
SBD 2.48