如果第二次遇到强密码,则程序循环

2024-06-02 10:32:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个奇怪的问题,我不知道为什么会这样。我觉得很难解释,但事情是这样的。我的程序运行良好,检查长度甚至强度。我的问题是,如果输入第一次以任何方式失败,然后重新输入,并且长度和强度正确,它将重新要求输入密码。我想这是因为最后一个类似passwordbegin()的程序,但是如果我删除它,程序显然不会运行。谁能给我一个提示或解释一下为什么会发生这种情况?提前谢谢

def passwordbegin():      
        Upper = 0 
        Lower = 0  
        Number = 0 
        pass_check = True 
        while pass_check is True:  
            passw = raw_input("Please enter your password. It must be between 6 and 12 characters long and contain atleast capital letter, lowercase letter and number.")

            if len(passw) < 6: 
                print("Your password is too short, it must be at least 6 characters long")  
            elif len(passw) > 12:
                print("Your password is too long, it must be no more than 12 characters long")  
            else:
                print("Your password is the correct length.")   
                pass_check = False  

            if pass_check is False:  
                for char in passw:  
                    if char.isupper():  
                        Upper =+ 1  
                    if char.islower():
                        Lower =+ 1  
                    if char.isdigit():
                        Number =+ 1   
            Password_Strength = Number + Lower + Upper          
            if Password_Strength == 1:
                print("Your password is weak, trying adding Numbers or Upper and Lowercase Letters") 
                raw_input("Press enter to restart the program")  
                while True:
                    passwordbegin() 
            if Password_Strength == 2:  
                print("Your password is medium strength, try adding Upper or Lowercase Letters and Numbers") 
                raw_input("Press enter to restart the program")
                while True:
                    passwordbegin()
            elif Password_Strength == 3:
                print("Your password is strong and secure, thank you for entering!")
    passwordbegin()

Tags: andtrueyourifischeckpasspassword
1条回答
网友
1楼 · 发布于 2024-06-02 10:32:10

不要使用while pass_check is True:它不会做你认为它会做的事情

您应该在通过检查时使用while pass_check == True或更好的`while\u check:

主要的问题是您正在再次调用您的函数,而不仅仅是让它循环

代替调用passwordbegin()-使用continue(返回循环的开始),您不需要在while True:循环中继续

相关问题 更多 >