Verdiğim kodda şifre kombinasyonu uygun değil hatası

import re
import json
def şifrekuralları(şifre):
    hatalar =[]
    if len(şifre) < 8 :
        hatalar.append("Şifre 8' Karakterden büyük olmalı.")
    if not re.search ("[a-z]",şifre):
        hatalar.append("Şifrede en az 1 küçük harf bulunmalıdır.")
    if not re.search ("[A-Z]",şifre):
        hatalar.append("Şifrede en az 1 büyük harf bulunmalıdır.")
    if not re.search("[0-9]",şifre):
        hatalar.append("Şifrede en az 1 rakam bulunmalıdır.")
    if hatalar :
        print("-"*30)
        print("Şifre kombinasyonu hatalı!")
        print("-"*30)
        print("\n".join(hatalar))
        return False
    return True


def kayıt():

    print("Kayıt için bilgileri doldurun.")

    with open("KayıtBilgileri.txt","a",encoding="utf-8") as dkayıt:   
        
        isim = input("İsim: ")
        soyisim = input("Soyisim: ")
        while True:
            email = input("Email: ")
       
            if  not "@tmail.com" in email :
                print("Email uzantı '@tmail.com' şeklinde olmalıdır !")
           
            while True:
                şifre = input("Şifre: ")
                
                hatalar = şifrekuralları(şifre)
                
                if hatalar:
                    print("Şifre aşağıdaki kurallara uygun olmalı !")
                
                else:
                    kullanıcı ={"İsim":isim,"Soyisim":soyisim,"Email":email,"Şifre":şifre}
                    dkayıt.write(json.dumps(kullanıcı,ensure_ascii=False) + "\n")       
                    print("Kayıt başarılı...")
                    return 

def yanlışeş():
    giriş()

def giriş():
    with open("KayıtBilgileri.txt","r",encoding="utf-8") as bilgi:

        kullanıcılar = [json.loads(line.strip()) for line in bilgi]

        gemail = input("Email: ")
        gşifre = input("Şifre: ")
         
    for kullanıcı in kullanıcılar:
        if kullanıcı["Email"] == gemail and kullanıcı["Şifre"] == gşifre:
        
            print("-"*30)
            print("Giriş başarılı.Lütfen seçeneklerden birini seçin.")
            print("-"*30)
            print("-"*15,"\n","-"*15,sep="")
            print("Kullanıcı bilgilerini görüntüle[1]")
            print("Çıkış yap [2]")                
        
            seçim = int(input("Seçiminiz: "))
            
            if seçim == 1 :
                print(kullanıcı)
            elif seçim == 2 :
                print("Çıkış yapılıyor...")
                break
        elif kullanıcı["Email"] != gemail or kullanıcı["Şifre"] != gşifre:
            yanlışeş()
    

                 
while True:
    print("-"*30)
    print("Coder-Tolga-Gezer")
    print("-"*30)
    print("Giriş İçin [1]\nKayıt İçin [2]\nÇıkış için [3]")
    seçim = int(input("Seçiminiz: "))

    if seçim == 1:
        giriş()
    elif seçim == 2:
        kayıt()
    elif seçim == 3:
        break
    else:
        print("Lütfen geçerli bir değer girin!")
    

Merhabalar kodda Kayıt ekranında şifre girdiğimde sürekli şifre inputu tekrar geliyor ve Şifre kombinasyonu hatası veriyor.

Merhaba,
if hatalar ifadesiyle hata varsa durumunu sorguluyorsunuz, hata varsa return False döndürüyorsunuz. Hata yoksa return True dönüyor.

            while True:
                şifre = input("Şifre: ")
                
                hatalar = şifrekuralları(şifre)
                
                if hatalar:
                    print("Şifre aşağıdaki kurallara uygun olmalı !")

Burada da hatalar isminde bir değişken oluşturuyorsunuz, girilen şifrenin şifre kurallarına göre hata içerip içermediğini kontrol ediyorsunuz.

Yazdığınız koda göre şifrekuralları fonksiyonu, kullanıcı şifreyi doğru girdiği zaman True değerini verir. Kullanıcı şifreyi doğru girdiği zaman hatalar True olur. Bu durum gerçekleştiği zamanda da print("Şifre aşağıdaki kurallara uygun olmalı !")şeklinde bir yazı yazdırılıyor. Yani aslında tam tersi olması lazım.

Ya şifrekuralları fonksiyonunda hata olduğu durumda True değerini döndüreceksiniz ki sonradan hatalar'ın True olduğu durumda print("Şifre aşağıdaki kurallara uygun olmalı !") ifadesi çalışsın. Ya da else bloku altına yazdıklarınız ile if hatalar bloku altında yazılı olan print ifadesinin yerlerini değiştireceksiniz.

1 Beğeni