Python for döngüsü

merhaba arkadaşlar!
ben bir şifre belirleme yaptım kullanıcıdanm aldığım şifrenin şartlara uygun olup olmadığına bakıyo ama tam çalışmıyo zaten kodlar karışık ve ileri düzey değil
yardımcı olursanız çok sevinirim NOT: kodu çalıştırır

sanız hatanın ne olduğunu anlarsınız

1- Pythonda boşluklar hayati önem taşır. soru2 değerini tanımladığın yerde boşuna tab kullanmışsın. Alt satırlar da öyle.
2- Zorunlu karakterleri her harf için kontrol etmişsin ki bu şifrede zorunlu karakterlerin sadece kullanılabilecek karakterlere dönüşmesine neden olmuş. Zorunlu karakterleri bulduğun koşulda zorunlu kullanılan karakterleri sayman ve en sonda koşula uygulaman isteğini karşılar.
3- Uzunluğu kontrol eden koşul gereksiz yere tekrar tekrar kontrol edilmiş oluyor. Döngü dışında kontrolü yapman daha doğru olur.

1 Beğeni

Siz do değişkenini bir for döngüsünde tanımlıyorsunuz ve sonrasında bu değişkene for döngüsünün dışından erişmeye çalışıyorsunuz ancak bunu yapamazsınız. Hata burada.

Edit:
Yanlış bir açıklama yapmışım, doğrusu: Yanlış girintilediğiniz kodlar var,

hata da tam olarak o kodların girintilenişinden kaynaklı.


Ek olarak değişkenlere verdiğiniz isimler hakkında iki şey söylemek istiyorum; birincisi, değişken isimlerinin Python’da snake case ile yazılması gerekiyor, bu ve bunun gibi kuralları buradan, buradan ya da farklı araştırmalar sonucu elde edilebilecek bir başka kaynaktan inceleyebilmeniz mümkün; ikincisi, soru2 gibi bir değişken ismi pek de anlamlı değil ve bir gün çok kapsamlı bir proje yapacak olursanız bu tip değişkenlerle çalışmak sizi yorabilir, zorunluKarakterler şeklinde tanımladığınız değişken ismi anlamsal olarak güzel mesela.

1 Beğeni

C, C++, Java vs gibi dillerde dediğin doğru ama pythonda bunu yapabilir. Hata ile karşılaşmaz.

1 Beğeni

sorunu çözdüm teşşekkürler lakin benim orada yaptığım neden şifrede kullanılabilecek tüm karakterleri sadece zorunlukarakter kılıyo? orayı biraz daha açabilirmisiniz acaba

For döngüsü girilen değerin karakterleri arasında dönüyor. Yani şifrenin Y_azbel olduğunu varsayalım. İlk döndüğünde i değerine Y karakterini verecek ve içerde i yani Y karakteri zorunlu karakterler içerisinde yoksa şifre doğru değil diyecek. Yani Y karakteri +-_*?! bunlardan biri olmadığı için daha ilk seçenekte şifren doğru değil mesajı gönderecek sana. Sonuç olarak şifren sadece +-_*?! karakterlerini içeriyorsa sana doğru olduğunu söyleyecek. Bu yüzden ya şifrende zorunlu karakterlere dahil olan karakterleri saymalı ve toplam 1 olsa bile doğru kabul etmelisin ya da alternatif başka bir çözüm üretmelisin.
Tabi bunun daha ilerlemiş versiyonunu daha önce yapmıştım onu da paylaşayım belki işine yarar.

def passw():

    password = input("şifreyi girin: ")
    import re

    if len(password) < 8:
        raise Exception("şifre 8 karakterden büyük olmalıdır.")
    elif not re.search("[A-Z]", password):
        raise Exception("şifre en az bir büyük harf içermelidir.")
    elif not re.search("[a-z]",password):
        raise Exception("şifre en az bir büyük harf içermelidir.")
    elif not re.search("[_&$#]",password):
        raise Exception("şifre en az _ & $ # karakterlerinden birini içermelidir.")
    elif re.search("[ ]", password):
        raise Exception("şifrenizde boşluk karakteri olmamalıdır")  


while True :
    try:
        passw()
    except Exception as ex:
        print(ex)
    else:
        print("şifreniz kaydedildi")
        break
1 Beğeni

bana çok yardımcı oldun teşekkür ederim:)

1 Beğeni