Döngüler ile başım dertte :D

Döngüler ile başım biraz dertte bana tavsiyede bulunabilirmisiniz ? Başlayalı 2 gün oldu :D. While kısmını biraz çözdüm ama döngüden çıkma işinde berbatım.
(Birde bana yazmak için örnekler verebilirmisiniz)

break konusunda araştırma yapmalısın. Buradan okuyabilirsin.

https://python-istihza.yazbel.com/donguler.html

Foruma hoşgeldin. Aslında yazmak isteyip de yazamadığın kodları burada paylaşırsan daha çok yardım alırsın. Ama önce okuman lazım. Kolay gelsin.

oradan geliyorum zaten :smiley:

print(’ !Kitapçıma Hoşgeldiniz!’)
print(“SİSTEME KAYITLI DEĞİLSENİZ LÜTFEN KAYIT YAPTIRIN”)

giriş_ = input("Kayıtlıysan ‘evet’ kayıtlı değilseniz ‘hayır’ yazınız: ")

giriş_A = 3

while giriş_A == 3:

if giriş_ == “evet”:

anahtar_ = 0

while anahtar_ == 0:
    parola_ = input("Parolanızı giriniz: ")

    if  parola_ == 8 < len(parola_) or 3 > len(parola_):
        print("Parolanız 8 karakterden büyük veya 3 karakterden küçük olmamalı")

    elif parola_ == "123456":
        print("Giriş Başarılı")
        break
        

    else:
        print("Tekrar Deneyiniz")

if giriş_ == “hayır”:

anahtar_1 = 1

while anahtar_1 == 1:
    parola_y = input("Yeni parolayı giriniz: ")

    if  len(parola_y) > 8 or len(parola_y) < 3:
        print("Parola 8 karakaterden büyük 3 karakterden küçük olamaz")

    else:
        print("Kayıt başarılı")
        break

Çok kötüdür muhtemelen :smiley:

Problem ne?

while döngülerinin sonundaki break kısmı çalışmıyor

if-else içindeler, her zaman çalışmamaları normal.

Burada ne yapmaya çalıştınız:

nasıl yani while içinde if-else kulannmamammı gerek o zaman.
eğer kullanamıyacaksam onun yerine ne kullanmalıyım ?

parolanın 8 karakterden fazla veya 3 karaktereden kısa olması durumunda döngüyü tekrarlamsını istemiştim

Kodunuz düzgün çıkmamış, düzeltebilir misiniz?


Onu burada yapmışsınız:

Ama bu başka bir şey yapıyor:

parola_ == 8 < len(parola_) her zaman yanlış oluyor. Ve şu anlama geliyor:

parola_ == 8 and 8 < len(parola_)

Değişken isimlendirmeleriniz kötü, niçin hepsinin sonunda _ var?


Sonsuz döngü için while döngüsünün içine True yazıyoruz. Her döngü için böyle değiken oluşturmayın.


“loop” kelimesinin anlamı “döngü”, loop döngüsü diye bir şey yok.

Hatalarımı söylediğniz içi çok teşekkürler :D. Gerçekten bu kadar kısa sürede yanıtlar alacağımı hiç düşünmemiştim.Dediklerinizi yaptığım zaman gerçekten işe yaradı :smiley:

while True:

if giriş == "evet":
    parola = input("Parolayı giriniz: ")
    
    if parola == 8 < len(parola) or 3 > len(parola):
        print("Parolanız 3 karakterden küçük 8 karakterden büyük olamaz")

    else:
         print("Giriş Başarılı")
         break

if giriş == "hayır":
     parola_y = input("Parolayı giriniz: ")

     if parola_y == 8 < len(parola_y) or 3 > len(parola_y):
        print("Parolanız 3 karakterden küçük 8 karakterden büyük olamaz")

     else:
         print("Yeni parolanız", parola_y, "olarak kaydedilmniştir.", "Lobiye aktarılıyorsunuz")
         break

Şuan çalışıyor gibi gözüküyor. Birde bildiğinz yazılmış kaynaklar varmı örnek için.

Türkçe yazılı kaynak olarak @monay48’ın attığı kaynağı öneririm.

Burayı düzetmemişsiniz ama.

Bu kodu inceleyin istiyorsanız, anlamadığınız bir yer olursa sorabilirsiniz:

while True:
    giriş = input("Hesabınız var mı? (evet/hayır)\n > ")

    if giriş == "evet":
        while True:
            parola = input("Parolayı giriniz: ")
            
            if not 3 <= len(parola) <= 8: # parolanın uzunluğu 3 ile 8 arasında değil ise (3 ve 8 dahil)
                print("Parolanız 3 karakterden küçük 8 karakterden büyük olamaz")

            else:
                 print("Giriş Başarılı")
                 break
        break

    elif giriş == "hayır":
        while True:
            parola = input("Parolayı giriniz: ")

            if not 3 <= len(parola) <= 8: # parolanın uzunluğu 3 ile 8 arasında değil ise( 3 ve 8 dahil)
                print("Parolanız 3 karakterden küçük 8 karakterden büyük olamaz")

            else:
                print("Yeni parolanız", parola, "olarak kaydedilmniştir.")
                print("Lobiye aktarılıyorsunuz")
                break
        break
            
    else:
        print("Giriş yanlış, evet veya hayır yazmanız lazım. Lütfen tekrar deneyin.")
        

1 Beğeni

Hmm demek istediğiniz şimdi anladım. Düzeltmeye çalışıcam düzeltemessem burdayım!

print(“lobiye aktarılıyorsunuz”) ve print(“giriş başarılı”) kısımlarının altında 2 adet break var neden ?

Çünkü iç içe iki tane döngü var, birisi girişin “evet” veya “hayır” olmasını kontrol ediyor birisi de parolanın uzunluğunu.

Anladım. Teşekkür ederim :smiley: